kafka安全设置centos如何做
导读:CentOS 上 Kafka 安全设置实操指南 一 规划与安全目标 建议同时启用传输加密与身份认证:使用 SSL/TLS 加密通道,配合 SASL 做用户认证;内部 Broker 之间也走加密与认证链路。 常用端口:9092(明文,仅内网...
CentOS 上 Kafka 安全设置实操指南
一 规划与安全目标
- 建议同时启用传输加密与身份认证:使用 SSL/TLS 加密通道,配合 SASL 做用户认证;内部 Broker 之间也走加密与认证链路。
- 常用端口:9092(明文,仅内网可信环境)、9093(SSL)、或 SASL_SSL 端口;按最小化原则开放到公网的端口。
- 证书策略:测试可用自签名证书;生产建议使用 PKI/企业 CA 签发证书,并做好证书轮换与权限控制。
二 启用 SSL TLS 加密
- 生成密钥与证书(JKS)
- 服务器密钥库
- keytool -genkey -alias kafka-server -keystore /etc/kafka/kafka.server.keystore.jks -storepass password -validity 365 -keysize 2048
- 导出服务器证书
- keytool -export -alias kafka-server -file kafka.server.crt -keystore /etc/kafka/kafka.server.keystore.jks -storepass password
- 构建信任库(Broker 与客户端共用或分别配置)
- keytool -import -alias kafka-server -file kafka.server.crt -keystore /etc/kafka/kafka.server.truststore.jks -storepass password
- 服务器密钥库
- 服务端配置 server.properties
- listeners=SSL://:9093
- ssl.keystore.location=/etc/kafka/kafka.server.keystore.jks
- ssl.keystore.password=password
- ssl.key.password=password
- ssl.truststore.location=/etc/kafka/kafka.server.truststore.jks
- ssl.truststore.password=password
- ssl.enabled.protocols=TLSv1.2
- ssl.cipher.suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
- 客户端配置(producer.properties/consumer.properties 或命令行)
- security.protocol=SSL
- ssl.truststore.location=/etc/kafka/kafka.server.truststore.jks
- ssl.truststore.password=password
- 如需客户端证书(双向 TLS,可选):
- ssl.keystore.location=/etc/kafka/kafka.client.keystore.jks
- ssl.keystore.password=password
- ssl.key.password=password
- 某些云上或内网域名校验不完备时,可临时设置:ssl.endpoint.identification.algorithm=(置空) 以关闭主机名校验(生产慎用)。
三 配置 SASL 认证(推荐 SCRAM)
- 创建 SCRAM 用户(示例创建 admin、producer、consumer)
- kafka-configs.sh --zookeeper localhost:2181 --alter --add-config ‘SCRAM-SHA-256=[password=admin-secret]’ --entity-type users --entity-name admin
- kafka-configs.sh --zookeeper localhost:2181 --alter --add-config ‘SCRAM-SHA-256=[password=producer-secret]’ --entity-type users --entity-name producer
- kafka-configs.sh --zookeeper localhost:2181 --alter --add-config ‘SCRAM-SHA-256=[password=consumer-secret]’ --entity-type users --entity-name consumer
- 服务端 JAAS 配置(/etc/kafka/kafka_server_jaas.conf)
- KafkaServer {
- org.apache.kafka.common.security.scram.ScramLoginModule required
- username=“admin”
- password=“admin-secret”;
- user_admin=“admin-secret”;
- user_producer=“producer-secret”;
- user_consumer=“consumer-secret”;
- } ;
- KafkaServer {
- 服务端 server.properties(启用 SASL_SSL)
- listeners=SASL_SSL://:9093
- security.inter.broker.protocol=SASL_SSL
- sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
- sasl.enabled.mechanisms=SCRAM-SHA-256
- listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=file:/etc/kafka/kafka_server_jaas.conf
- 如仍使用 ZooKeeper,需将 JAAS 通过环境变量传入:export KAFKA_OPTS=“-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf”
- 客户端配置(示例)
- security.protocol=SASL_SSL
- sasl.mechanism=SCRAM-SHA-256
- sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username=“producer” password=“producer-secret”;
- 命令行方式(临时生效):
- kafka-console-producer.sh … --producer-property security.protocol=SASL_SSL --producer-property sasl.mechanism=SCRAM-SHA-256 --producer-property sasl.jaas.config=‘org.apache.kafka.common.security.scram.ScramLoginModule required username=“producer” password=“producer-secret”; ’
四 防火墙与最小暴露面
- 仅开放必要端口(示例开放 9093)
- firewall-cmd --permanent --zone=public --add-port=9093/tcp
- firewall-cmd --reload
- 监听地址绑定到内网或指定网卡,避免使用 0.0.0.0 暴露到公网;必要时通过安全组/ACL 限制来源 IP。
五 启动与验证及常见注意事项
- 启动顺序与重启
- 先启动 ZooKeeper,再启动 Kafka;修改安全配置后需重启 Broker 生效(生产变更请灰度与窗口期执行)。
- 连通性与加密验证
- 列出 Topic:kafka-topics.sh --bootstrap-server your-host:9093 --list --command-config /path/kafka.properties
- 生产消息:kafka-console-producer.sh --bootstrap-server your-host:9093 --topic test-topic --producer.config /path/kafka.properties
- 消费消息:kafka-console-consumer.sh --bootstrap-server your-host:9093 --topic test-topic --group test --from-beginning --consumer.config /path/kafka.properties
- 常见注意事项
- 证书与密码妥善管控,生产建议使用 企业 CA;定期轮换证书与密钥。
- 协议与套件:启用 TLSv1.2+,禁用弱套件;按需开启 双向 TLS(客户端证书校验)。
- 主机名校验:公网或域名不规范时,客户端可临时设置 ssl.endpoint.identification.algorithm=(置空),但长期应修复证书域名与 advertised.listeners 一致性。
- 授权控制:在认证基础上启用 ACL(kafka-acls.sh) 做 Topic/Group/Cluster 细粒度授权,遵循最小权限原则。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: kafka安全设置centos如何做
本文地址: https://pptw.com/jishu/756758.html
