温馨提示×

centos kafka安全配置有哪些

小樊
41
2025-11-29 21:04:38
栏目: 智能运维

CentOS 上 Kafka 的安全配置清单

一 传输加密 SSL TLS

  • 生成密钥与证书(JKS 示例):
    • 服务器密钥库:keytool -genkey -alias kafka-server -keystore kafka.server.keystore.jks -storepass password -validity 365 -keysize 2048
    • 导出并导入信任库:
      • keytool -export -alias kafka-server -file kafka.server.crt -keystore kafka.server.keystore.jks -storepass password
      • keytool -import -alias kafka-server -file kafka.server.crt -keystore kafka.server.truststore.jks -storepass password
  • 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-256PLAINGSSAPI(Kerberos);跨公网或不可信网络优先使用 SCRAMSASL+SSL
  • 创建 SCRAM 用户(示例):
    • kafka-configs.sh --zookeeper localhost:2181 --entity-type users --entity-name kafka-user --alter --add-config SCRAM-SHA-256=[password]=true
  • JAAS 配置(kafka_server_jaas.conf):
    • KafkaServer {
      • org.apache.kafka.common.security.scram.ScramLoginModule required
      • 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.ScramLoginModule required username=“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.ScramLoginModule required username=“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_SSLSSL
    • 正确设置 listeners 与(如需)advertised.listeners,避免将内网地址泄露给外部客户端

五 系统与服务加固要点

  • 最小权限运行:以 非 root 用户启动 Kafka,限制 log.dirs 等目录权限
  • 依赖组件安全:如仍使用 Zookeeper,建议开启 Zookeeper ACL 并隔离网络访问
  • 启动顺序与高可用:先启动 Zookeeper,再启动 Kafka Broker;变更安全配置后按顺序重启
  • 变更与验证:每次修改 server.properties 后执行滚动重启并做连通性与权限验证(生产建议灰度)
  • 版本与兼容性:不同 Kafka 版本在配置项与行为上存在差异,升级前在测试环境充分验证

0