首页主机资讯centos kafka安全设置方法

centos kafka安全设置方法

时间2025-11-18 15:05:03发布访客分类主机资讯浏览508
导读:CentOS 上 Kafka 安全设置方法 一 安全基线 启用传输加密:优先使用 SSL/TLS;如为内网且暂无法启用 TLS,可先用 SASL 做身份鉴别,再尽快迁移到 SASL_SSL。 启用身份认证:推荐 SASL/SCRAM-SH...

CentOS 上 Kafka 安全设置方法

一 安全基线

  • 启用传输加密:优先使用 SSL/TLS;如为内网且暂无法启用 TLS,可先用 SASL 做身份鉴别,再尽快迁移到 SASL_SSL
  • 启用身份认证:推荐 SASL/SCRAM-SHA-256(可动态增删用户、无需落地明文口令);避免使用 SASL/PLAIN 明文口令于生产。
  • 启用授权控制:开启 ACL,仅授予最小权限;为运维与集群通信配置 超级用户
  • 网络与系统加固:仅开放必要端口(如 9092/9093),限制来源 IP;为 ZooKeeper 启用 SASL 与 ACL;配置 JMX 访问控制与日志轮转;避免不安全的参数(如 unclean.leader.election.enable=true);设置 min.insync.replicas 提升数据可靠性。

二 启用 SSL TLS 加密

  • 生成密钥与证书(JKS)
    • 服务器密钥库:
      keytool -genkey -alias kafka-server -keystore /etc/kafka/kafka.server.keystore.jks -storepass YourPass -validity 365 -keysize 2048
    • 导出并导入信任库:
      keytool -export -alias kafka-server -file kafka.server.crt -keystore /etc/kafka/kafka.server.keystore.jks -storepass YourPass
      keytool -import -alias kafka-server -file kafka.server.crt -keystore /etc/kafka/kafka.server.truststore.jks -storepass YourPass
  • 服务端配置 server.properties
    • 监听与协议:
      listeners=SSL://:9093
      advertised.listeners=SSL://your-hostname:9093
    • SSL 参数:
      ssl.keystore.location=/etc/kafka/kafka.server.keystore.jks
      ssl.keystore.password=YourPass
      ssl.key.password=YourPass
      ssl.truststore.location=/etc/kafka/kafka.server.truststore.jks
      ssl.truststore.password=YourPass
      ssl.enabled.protocols=TLSv1.2,TLSv1.3
      ssl.client.auth=required(双向校验客户端证书)
  • 客户端连接示例
    • 命令行:
      kafka-topics.sh --list --bootstrap-server your-hostname:9093 --security.protocol SSL
    • 生产/消费最小配置:
      security.protocol=SSL
      ssl.truststore.location=/path/to/client.truststore.jks
      ssl.truststore.password=YourPass

      如服务端开启 ssl.client.auth=required,还需配置客户端证书:

      ssl.keystore.location=/path/to/client.keystore.jks
      ssl.keystore.password=YourPass
      ssl.key.password=YourPass

三 启用 SASL 认证

  • 选择机制:推荐 SASL/SCRAM-SHA-256(支持动态凭据管理),避免使用 SASL/PLAIN 明文口令。
  • 创建 SCRAM 用户(示例用户:admin、producer、consumer)
    • bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config ‘SCRAM-SHA-256=[password=admin-secret]’ --entity-type users --entity-name admin
    • bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config ‘SCRAM-SHA-256=[password=producer-secret]’ --entity-type users --entity-name producer
    • bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config ‘SCRAM-SHA-256=[password=consumer-secret]’ --entity-type users --entity-name consumer
  • Broker 端配置 server.properties
    • 监听与协议:
      listeners=SASL_SSL://:9093
      advertised.listeners=SASL_SSL://your-hostname:9093
      security.inter.broker.protocol=SASL_SSL
    • 机制与 JAAS:
      sasl.enabled.mechanisms=SCRAM-SHA-256
      sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256

      方式A(推荐,直接内联 JAAS):

      sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username=“admin” password=“admin-secret”;

      方式B(外部 JAAS 文件):在启动脚本中注入

      export KAFKA_OPTS=“-Djava.security.auth.login.config=/path/kafka_server_jaas.conf”

  • 客户端连接示例
    • 命令行生产:
      kafka-console-producer.sh --broker-list your-hostname:9093 --topic test-topic \ –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”; ’
    • 命令行消费:
      kafka-console-consumer.sh --bootstrap-server your-hostname:9093 --topic test-topic \ –consumer-property security.protocol=SASL_SSL \ –consumer-property sasl.mechanism=SCRAM-SHA-256 \ –consumer-property sasl.jaas.config=‘org.apache.kafka.common.security.scram.ScramLoginModule required username=“consumer” password=“consumer-secret”; ’ \ –from-beginning

四 授权与 ACL

  • 启用 ACL 与超级用户(server.properties)
    • authorizer.class.name=kafka.security.authorizer.AclAuthorizer
    • allow.everyone.if.no.acl.found=false
    • super.users=User:admin
  • 常用 ACL 操作(示例)
    • 授予生产者写权限:
      bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \ –add --allow-principal User:producer --operation Write --topic test-topic
    • 授予消费者组读权限(含消费组):
      bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \ –add --allow-principal User:consumer --operation Read --topic test-topic --group test-consumer-group
    • 查看 ACL:
      bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \ –list --topic test-topic
  • 提示:为运维与集群内部通信的账号(如 admin)配置为 super.users,避免被 ACL 拦截导致集群异常。

五 网络与系统加固

  • 防火墙与网络隔离
    • 仅开放 9092/9093 等必要端口,并限制来源网段:
      sudo firewall-cmd --permanent --add-port=9093/tcp
      sudo firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.0/24” accept’
      sudo firewall-cmd --reload
  • ZooKeeper 安全
    • ZooKeeper 启用 SASLACL,避免未授权访问元数据;相关 JAAS 与启动脚本配置可参考生产实践。
  • 可靠性与监控
    • 设置 min.insync.replicas=2(或更高)提升数据持久性;
    • 关闭 unclean.leader.election.enable(或设为 false)避免数据丢失;
    • 启用 JMX 监控端口、配置日志轮转与磁盘/内存告警。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos kafka安全设置方法
本文地址: https://pptw.com/jishu/750162.html
centos kafka消费速度慢原因 centos kafka磁盘空间要求

游客 回复需填写必要信息