debian

Kafka安全配置在Debian如何操作

小樊
44
2025-06-21 01:33:54
栏目: 智能运维

在Debian系统上配置Kafka的安全设置主要包括添加认证配置、SSL配置以及使用SASL机制进行安全认证。以下是详细的步骤:

1. 安装Java和Kafka

首先,确保已经在Debian系统上安装了Java运行环境(JRE或JDK)和Kafka本身。

# 安装OpenJDK 8
sudo apt update
sudo apt install openjdk-8-jdk

# 验证Java安装
java -version

# 下载并解压Kafka
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
tar -xzf kafka_2.12-3.5.2.tgz
cd kafka_2.12-3.5.2

2. 配置Kafka

编辑Kafka的server.properties文件

# 编辑Kafka的 server.properties 文件
nano config/server.properties

添加或修改以下配置项:

# 启用SSL
listeners=SSL://:9093
security.inter.broker.protocol=SSL
ssl.keystore.location=/path/to/kafka/ssl/keystore.jks
ssl.keystore.password=password
ssl.key.password=password
ssl.truststore.location=/path/to/kafka/ssl/truststore.jks
ssl.truststore.password=password

# 启用SASL认证
listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
sasl.client.config=/path/to/kafka_server_jaas.conf

创建JAAS配置文件

/etc/kafka/conf/目录下创建一个名为kafka_server_jaas.conf的文件,内容如下:

KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="admin-secret";
};

3. 配置SSL/TLS加密

生成SSL证书和密钥库:

keytool -keystore kafka.server.keystore.jks -alias localhost -validity 365 -genkey -keyalg RSA -keysize 2048

修改server.properties文件以启用SSL:

# SSL配置
listeners=SSL://:9093
security.inter.broker.protocol=SSL
ssl.keystore.location=/path/to/kafka/ssl/keystore.jks
ssl.keystore.password=password
ssl.key.password=password
ssl.truststore.location=/path/to/kafka/ssl/truststore.jks
ssl.truststore.password=password

4. 配置防火墙

使用ufwiptables配置防火墙,只允许必要的端口通信:

# 允许Kafka端口
sudo ufw allow 9093/tcp
sudo ufw enable

5. 重启Kafka服务

完成上述配置后,重启Kafka服务以使更改生效:

sudo systemctl restart kafka

6. 客户端配置

在客户端配置中,也需要启用SSL和SASL认证,并指定相应的证书和密钥库路径。

生产者配置示例:

bootstrap.servers=localhost:9093
security.protocol=SSL
ssl.truststore.password=password
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";

消费者配置示例:

bootstrap.servers=localhost:9093
security.protocol=SSL
ssl.truststore.password=password
sasl.mechanism=PLAIN

0
看了该问题的人还看了