Ubuntu Kafka安全如何设置
导读:Ubuntu Kafka安全设置指南 Kafka的安全配置需围绕认证、加密、授权三大核心展开,以下是Ubuntu环境下Kafka安全设置的详细步骤: 一、前置准备 安装Java环境:Kafka依赖Java,需提前安装JDK(推荐JDK 1...
Ubuntu Kafka安全设置指南
Kafka的安全配置需围绕认证、加密、授权三大核心展开,以下是Ubuntu环境下Kafka安全设置的详细步骤:
一、前置准备
- 安装Java环境:Kafka依赖Java,需提前安装JDK(推荐JDK 11及以上)。
sudo apt update & & sudo apt install -y openjdk-11-jdk - 安装Kafka:从Apache官网下载最新稳定版Kafka,解压至指定目录(如
/opt/kafka)。wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz tar -xzf kafka_2.13-3.6.1.tgz -C /opt/ cd /opt/kafka_2.13-3.6.1
二、配置SASL认证(身份验证)
SASL是Kafka的主流认证框架,推荐使用SCRAM-SHA-256/512(比PLAIN更安全)。
- 创建JAAS配置文件:在
/opt/kafka/config/下创建kafka_server_jaas.conf,定义用户凭证(如admin用户)。KafkaServer { org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret"; } ; - 修改Kafka服务端配置:编辑
server.properties,启用SASL并关联JAAS文件。# 启用SASL_PLAINTEXT监听器(生产环境建议用SASL_SSL) listeners=SASL_PLAINTEXT://:9092 security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256 sasl.enabled.mechanisms=SCRAM-SHA-256 # 指定JAAS配置文件路径 sasl.jaas.config=file:/opt/kafka/config/kafka_server_jaas.conf - 添加用户到Kafka:使用
kafka-configs.sh脚本创建用户(若未提前在JAAS中定义)。bin/kafka-configs.sh --bootstrap-server localhost:9092 \ --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=admin-secret]' \ --entity-type users --entity-name admin - 重启Kafka服务:使配置生效。
bin/kafka-server-stop.sh & & bin/kafka-server-start.sh config/server.properties
三、配置SSL/TLS加密(数据传输安全)
SSL/TLS用于加密Kafka客户端与Broker之间的通信,防止数据泄露。
- 生成证书:使用OpenSSL生成CA证书、服务器证书和客户端证书(简化版)。
# 生成CA私钥和证书 openssl req -x509 -newkey rsa:4096 -keyout ca-key.pem -out ca-cert.pem -days 365 -nodes -subj "/CN=Kafka-CA" # 生成服务器私钥和证书签名请求(CSR) openssl req -newkey rsa:4096 -keyout server-key.pem -out server-req.pem -days 365 -nodes -subj "/CN=localhost" # 用CA签署服务器证书 openssl x509 -req -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 365 # 生成客户端证书(可选,用于客户端认证) openssl req -newkey rsa:4096 -keyout client-key.pem -out client-req.pem -days 365 -nodes -subj "/CN=client" openssl x509 -req -in client-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 365 - 导入证书到Java Keystore(JKS):Kafka需要JKS格式的证书库。
# 创建服务器Keystore并导入证书 keytool -import -alias ca -file ca-cert.pem -keystore server-keystore.jks -storepass kafka-pass -noprompt keytool -import -alias server -file server-cert.pem -keystore server-keystore.jks -storepass kafka-pass -noprompt # 创建客户端Keystore(可选) keytool -import -alias ca -file ca-cert.pem -keystore client-keystore.jks -storepass kafka-pass -noprompt keytool -import -alias client -file client-cert.pem -keystore client-keystore.jks -storepass kafka-pass -noprompt - 修改Kafka服务端配置:编辑
server.properties,启用SSL。# 启用SSL监听器(生产环境建议用SASL_SSL) listeners=SSL://:9093 security.inter.broker.protocol=SSL ssl.keystore.location=/opt/kafka/config/server-keystore.jks ssl.keystore.password=kafka-pass ssl.key.password=kafka-pass ssl.truststore.location=/opt/kafka/config/server-keystore.jks ssl.truststore.password=kafka-pass ssl.enabled.protocols=TLSv1.2,TLSv1.3 ssl.client.auth=required # 要求客户端提供证书(可选,严格模式) - 修改客户端配置:创建
client.properties,指定SSL参数。security.protocol=SSL ssl.truststore.location=/opt/kafka/config/client-keystore.jks ssl.truststore.password=kafka-pass ssl.keystore.location=/opt/kafka/config/client-keystore.jks ssl.keystore.password=kafka-pass ssl.key.password=kafka-pass - 重启Kafka服务:应用SSL配置。
bin/kafka-server-stop.sh & & bin/kafka-server-start.sh config/server.properties
四、配置授权(ACL,访问控制)
授权用于限制用户对Kafka资源(Topic、Group等)的操作权限。
- 启用ACL:编辑
server.properties,配置ACL授权器。authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer allow.everyone.if.no.acl.found=false # 无ACL时拒绝访问 super.users=User:admin # 定义超级用户(可跳过授权) - 重启Kafka服务:使授权配置生效。
bin/kafka-server-stop.sh & & bin/kafka-server-start.sh config/server.properties - 创建ACL规则:使用
kafka-acls.sh脚本为用户分配权限(示例:允许admin用户读写test-topic)。bin/kafka-acls.sh --bootstrap-server localhost:9093 \ --add --allow-principal User:admin \ --operation Read --operation Write \ --topic test-topic
五、其他安全增强措施
- 限制网络访问:通过
listeners和advertised.listeners配置,仅允许特定IP访问Kafka。listeners=SASL_SSL://192.168.1.100:9093 # 绑定内网IP advertised.listeners=SASL_SSL://kafka.example.com:9093 # 对外暴露域名 - 配置防火墙:使用
ufw仅开放Kafka端口(如9092/9093)。sudo ufw allow from 192.168.1.0/24 to any port 9092 sudo ufw allow from 192.168.1.0/24 to any port 9093 sudo ufw enable - 定期更新Kafka:关注Apache Kafka官方安全公告,及时升级到最新版本,修复已知漏洞。
六、验证配置
- 验证SASL认证:使用
kafka-console-producer.sh测试生产权限。bin/kafka-console-producer.sh --broker-list localhost:9092 \ --topic test-topic \ --producer.config config/client.properties \ --command-config config/kafka_client_jaas.conf # 指定客户端JAAS文件(含用户名密码) - 验证SSL加密:使用
openssl s_client检查SSL握手是否成功。openssl s_client -connect localhost:9093 -showcerts - 验证ACL权限:尝试非法操作(如无权限用户写入
test-topic),应被拒绝。
通过以上步骤,可构建Ubuntu环境下Kafka的基本安全体系。生产环境中还需根据业务需求调整配置(如启用SASL_SSL、细化ACL规则等)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Kafka安全如何设置
本文地址: https://pptw.com/jishu/738844.html
