Ubuntu Kafka配置安全设置
导读:Ubuntu上Kafka安全配置实操指南 一 安全目标与总体架构 启用传输加密:优先使用 SSL/TLS;在公网或跨机房环境建议使用 SASL_SSL。 启用身份认证:优先 SASL/SCRAM-SHA-512(可回退到 SASL/PLA...
Ubuntu上Kafka安全配置实操指南
一 安全目标与总体架构
- 启用传输加密:优先使用 SSL/TLS;在公网或跨机房环境建议使用 SASL_SSL。
- 启用身份认证:优先 SASL/SCRAM-SHA-512(可回退到 SASL/PLAIN,但必须叠加 TLS)。
- 启用授权控制:基于 ACL 限制 Topic/Group/Cluster 操作权限。
- 网络与系统加固:仅开放必要端口,限制来源网段,最小权限运行服务。
- 审计与监控:开启安全事件日志,定期巡检与轮换凭据。
二 生成证书与密钥库
- 准备目录并生成 Broker 密钥库(JKS):
- keytool -genkey -alias kafka -keyalg RSA -keystore /opt/kafka/config/certs/kafka.server.keystore.jks -validity 3650
- 导出并分发证书,构建客户端信任库(每个客户端导入 Broker 证书):
- keytool -export -alias kafka -file /opt/kafka/config/certs/kafka.server.crt -keystore /opt/kafka/config/certs/kafka.server.keystore.jks
- keytool -import -alias kafka -file /opt/kafka/config/certs/kafka.server.crt -keystore /opt/kafka/config/certs/client.truststore.jks
- 建议:为每台 Broker 使用独立密钥对或在证书中体现主机名以便校验证书;生产环境可使用企业 CA 签发并启用证书轮换。
三 服务端配置 server.properties
- 监听器与协议(仅开放安全端口,禁用明文):
- listeners=SASL_SSL://0.0.0.0:9093
- advertised.listeners=SASL_SSL://< broker_public_dns_or_ip> :9093
- security.inter.broker.protocol=SASL_SSL
- sasl.mechanism.inter.broker.protocol=SCRAM-SHA-512
- sasl.enabled.mechanisms=SCRAM-SHA-512
- SSL 参数:
- ssl.keystore.location=/opt/kafka/config/certs/kafka.server.keystore.jks
- ssl.keystore.password=< keystore_pwd>
- ssl.key.password=< key_pwd>
- ssl.truststore.location=/opt/kafka/config/certs/kafka.server.truststore.jks
- ssl.truststore.password=< truststore_pwd>
- ssl.client.auth=required
- ssl.enabled.protocols=TLSv1.2,TLSv1.3
- JAAS 配置(二选一)
- 方式一(推荐,listener 级):在 server.properties 增加
- listener.name.sasl_ssl.scram-sha-512.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username=“admin” password=“admin-secret”;
- 方式二(全局):新增文件 /opt/kafka/config/kafka_server_jaas.conf
- KafkaServer { org.apache.kafka.common.security.scram.ScramLoginModule required username=“admin” password=“admin-secret”; } ;
- 并在启动脚本中导出:export KAFKA_OPTS=“-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf”
- 方式一(推荐,listener 级):在 server.properties 增加
- 可选:若需同时保留内网明文用于迁移,可临时添加 PLAINTEXT 监听器,但生产环境应移除并仅保留 SASL_SSL。
四 客户端与运维命令
- 创建 SCRAM 用户(服务端执行一次即可):
- kafka-configs.sh --bootstrap-server <
broker_ip>
:9093
–alter --add-config ‘SCRAM-SHA-256=[password=],SCRAM-SHA-512=[password=]’
–entity-type users --entity-name
- kafka-configs.sh --bootstrap-server <
broker_ip>
:9093
- 客户端 JAAS(kafka_client_jaas.conf):
- KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username=“” password=“”; } ;
- 客户端配置文件(kafka.properties):
- security.protocol=SASL_SSL
- sasl.mechanism=SCRAM-SHA-512
- ssl.truststore.location=/opt/kafka/config/certs/client.truststore.jks
- ssl.truststore.password=< truststore_pwd>
-
如服务端证书主机名校验导致连接失败,可临时关闭(不推荐生产):ssl.endpoint.identification.algorithm=
- 常用命令(均通过 --command-config 指定 kafka.properties):
- 查看 Topic:kafka-topics.sh --bootstrap-server < broker_ip> :9093 --list --command-config /opt/kafka/config/kafka.properties
- 生产消息:kafka-console-producer.sh --bootstrap-server < broker_ip> :9093 --topic --producer.config /opt/kafka/config/kafka.properties
- 消费消息:kafka-console-consumer.sh --bootstrap-server < broker_ip> :9093 --topic --group --from-beginning --consumer.config /opt/kafka/config/kafka.properties
- 运行前导出客户端 JAAS:export KAFKA_OPTS=“-Djava.security.auth.login.config=/opt/kafka/config/kafka_client_jaas.conf”。
五 防火墙网络与ACL授权
- 防火墙(UFW)仅放通 9093(SASL_SSL):
- sudo ufw allow 9093/tcp
- sudo ufw enable & & sudo ufw status
- 云环境安全组:仅允许应用所在 VPC/子网 访问 9093/TCP。
- ACL 授权(示例:授予用户 alice 对 test 的读写):
- 创建 Topic(如不存在):kafka-topics.sh --bootstrap-server < broker_ip> :9093 --create --topic test --partitions 3 --replication-factor 3 --command-config /opt/kafka/config/kafka.properties
- 授权:
- kafka-acls.sh --bootstrap-server < broker_ip> :9093 --add --allow-principal User:alice --operation Read --topic test --command-config /opt/kafka/config/kafka.properties
- kafka-acls.sh --bootstrap-server < broker_ip> :9093 --add --allow-principal User:alice --operation Write --topic test --command-config /opt/kafka/config/kafka.properties
- kafka-acls.sh --bootstrap-server < broker_ip> :9093 --add --allow-principal User:alice --operation Describe --topic test --command-config /opt/kafka/config/kafka.properties
- 建议:为生产 Topic 设置更细粒度 ACL(按 Topic/Group/Cluster),并定期审计与回收无用账号。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Kafka配置安全设置
本文地址: https://pptw.com/jishu/765165.html
