centos kafka安全配置有哪些
CentOS上Kafka的安全配置清单
一传输加密SSLTLS
生成密钥与证书(JKS示例):
服务器密钥库:keytool-genkey-aliaskafka-server-keystorekafka.server.keystore.jks-storepasspassword-validity365-keysize2048
导出并导入信任库:
keytool-export-aliaskafka-server-filekafka.server.crt-keystorekafka.server.keystore.jks-storepasspassword
keytool-import-aliaskafka-server-filekafka.server.crt-keystorekafka.server.truststore.jks-storepasspassword
Broker端配置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/consumer.properties):
security.protocol=SSL
ssl.truststore.location=/etc/kafka/kafka.server.truststore.jks
ssl.truststore.password=password
如需双向TLS:配置ssl.keystore.location/ssl.keystore.password/ssl.key.password
二身份认证SASL
选择机制:常用有SCRAM-SHA-256、PLAIN、GSSAPI(Kerberos);跨公网或不可信网络优先使用SCRAM或SASL+SSL。
创建SCRAM用户(示例):
kafka-configs.sh--zookeeperlocalhost:2181--entity-typeusers--entity-namekafka-user--alter--add-configSCRAM-SHA-256=[password]=true
JAAS配置(kafka_server_jaas.conf):
KafkaServer{
org.apache.kafka.common.security.scram.ScramLoginModulerequired
username=“kafka-user”
password=“password”;
};
Broker端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
方式一(推荐):sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModulerequiredusername=“kafka-user”password=“password”;
方式二:在启动脚本中通过JVM参数指定-Djava.security.auth.login.config=/path/kafka_server_jaas.conf
客户端配置:
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModulerequiredusername=“kafka-user”password=“password”;
三授权与ACL
启用ACL(server.properties):
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:admin
管理ACL(示例):
为用户创建凭据(SCRAM等)后,按需授予Topic/Group操作权限(read/write/describe/admin等),使用kafka-acls.sh完成授权规则配置
注意:若前期未启用ACL,建议先完成用户与认证体系,再开启ACL并逐步下发最小权限策略
四网络安全与端口
防火墙放通(firewalld):
仅放通必要端口,例如:firewall-cmd--permanent--zone=public--add-port=9093/tcp;firewall-cmd--reload
如仍使用明文或内部通信,亦需确认9092/tcp的访问控制策略
监听与暴露面:
避免使用PLAINTEXT暴露公网,生产建议使用SASL_SSL或SSL
正确设置listeners与(如需)advertised.listeners,避免将内网地址泄露给外部客户端
五系统与服务加固要点
最小权限运行:以非root用户启动Kafka,限制log.dirs等目录权限
依赖组件安全:如仍使用Zookeeper,建议开启ZookeeperACL并隔离网络访问
启动顺序与高可用:先启动Zookeeper,再启动KafkaBroker;变更安全配置后按顺序重启
变更与验证:每次修改server.properties后执行滚动重启并做连通性与权限验证(生产建议灰度)
版本与兼容性:不同Kafka版本在配置项与行为上存在差异,升级前在测试环境充分验证

