首页主机资讯kafka安全设置centos如何做

kafka安全设置centos如何做

时间2025-11-26 15:28:03发布访客分类主机资讯浏览207
导读: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”;
      • } ;
  • 服务端 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
centos kafka如何优化磁盘I/O kafka日志清理centos如何操作

游客 回复需填写必要信息