首页主机资讯Ubuntu Kafka配置安全设置

Ubuntu Kafka配置安全设置

时间2025-12-05 21:44:03发布访客分类主机资讯浏览1272
导读:Ubuntu上Kafka安全配置实操指南 一 安全目标与总体架构 启用传输加密:优先使用 SSL/TLS;在公网或跨机房环境建议使用 SASL_SSL。 启用身份认证:优先 SASL/SCRAM-SHA-512(可回退到 SASL/PLA...

Ubuntu上Kafka安全配置实操指南

一 安全目标与总体架构

  • 启用传输加密:优先使用 SSL/TLS;在公网或跨机房环境建议使用 SASL_SSL
  • 启用身份认证:优先 SASL/SCRAM-SHA-512(可回退到 SASL/PLAIN,但必须叠加 TLS)。
  • 启用授权控制:基于 ACL 限制 Topic/Group/Cluster 操作权限。
  • 网络与系统加固:仅开放必要端口,限制来源网段,最小权限运行服务。
  • 审计与监控:开启安全事件日志,定期巡检与轮换凭据。

二 生成证书与密钥库

  • 准备目录并生成 Broker 密钥库(JKS):
    • keytool -genkey -alias kafka -keyalg RSA -keystore /opt/kafka/config/certs/kafka.server.keystore.jks -validity 3650
  • 导出并分发证书,构建客户端信任库(每个客户端导入 Broker 证书):
    • keytool -export -alias kafka -file /opt/kafka/config/certs/kafka.server.crt -keystore /opt/kafka/config/certs/kafka.server.keystore.jks
    • keytool -import -alias kafka -file /opt/kafka/config/certs/kafka.server.crt -keystore /opt/kafka/config/certs/client.truststore.jks
  • 建议:为每台 Broker 使用独立密钥对或在证书中体现主机名以便校验证书;生产环境可使用企业 CA 签发并启用证书轮换。

三 服务端配置 server.properties

  • 监听器与协议(仅开放安全端口,禁用明文):
    • listeners=SASL_SSL://0.0.0.0:9093
    • advertised.listeners=SASL_SSL://< broker_public_dns_or_ip> :9093
    • security.inter.broker.protocol=SASL_SSL
    • sasl.mechanism.inter.broker.protocol=SCRAM-SHA-512
    • sasl.enabled.mechanisms=SCRAM-SHA-512
  • SSL 参数:
    • ssl.keystore.location=/opt/kafka/config/certs/kafka.server.keystore.jks
    • ssl.keystore.password=< keystore_pwd>
    • ssl.key.password=< key_pwd>
    • ssl.truststore.location=/opt/kafka/config/certs/kafka.server.truststore.jks
    • ssl.truststore.password=< truststore_pwd>
    • ssl.client.auth=required
    • ssl.enabled.protocols=TLSv1.2,TLSv1.3
  • JAAS 配置(二选一)
    • 方式一(推荐,listener 级):在 server.properties 增加
      • listener.name.sasl_ssl.scram-sha-512.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username=“admin” password=“admin-secret”;
    • 方式二(全局):新增文件 /opt/kafka/config/kafka_server_jaas.conf
      • KafkaServer { org.apache.kafka.common.security.scram.ScramLoginModule required username=“admin” password=“admin-secret”; } ;
      • 并在启动脚本中导出:export KAFKA_OPTS=“-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf”
  • 可选:若需同时保留内网明文用于迁移,可临时添加 PLAINTEXT 监听器,但生产环境应移除并仅保留 SASL_SSL。

四 客户端与运维命令

  • 创建 SCRAM 用户(服务端执行一次即可):
    • kafka-configs.sh --bootstrap-server < broker_ip> :9093
      –alter --add-config ‘SCRAM-SHA-256=[password=],SCRAM-SHA-512=[password=]’
      –entity-type users --entity-name
  • 客户端 JAAS(kafka_client_jaas.conf):
    • KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username=“” password=“”; } ;
  • 客户端配置文件(kafka.properties):
    • security.protocol=SASL_SSL
    • sasl.mechanism=SCRAM-SHA-512
    • ssl.truststore.location=/opt/kafka/config/certs/client.truststore.jks
    • ssl.truststore.password=< truststore_pwd>
    • 如服务端证书主机名校验导致连接失败,可临时关闭(不推荐生产):ssl.endpoint.identification.algorithm=

  • 常用命令(均通过 --command-config 指定 kafka.properties):
    • 查看 Topic:kafka-topics.sh --bootstrap-server < broker_ip> :9093 --list --command-config /opt/kafka/config/kafka.properties
    • 生产消息:kafka-console-producer.sh --bootstrap-server < broker_ip> :9093 --topic --producer.config /opt/kafka/config/kafka.properties
    • 消费消息:kafka-console-consumer.sh --bootstrap-server < broker_ip> :9093 --topic --group --from-beginning --consumer.config /opt/kafka/config/kafka.properties
  • 运行前导出客户端 JAAS:export KAFKA_OPTS=“-Djava.security.auth.login.config=/opt/kafka/config/kafka_client_jaas.conf”。

五 防火墙网络与ACL授权

  • 防火墙(UFW)仅放通 9093(SASL_SSL):
    • sudo ufw allow 9093/tcp
    • sudo ufw enable & & sudo ufw status
  • 云环境安全组:仅允许应用所在 VPC/子网 访问 9093/TCP
  • ACL 授权(示例:授予用户 alice 对 test 的读写):
    • 创建 Topic(如不存在):kafka-topics.sh --bootstrap-server < broker_ip> :9093 --create --topic test --partitions 3 --replication-factor 3 --command-config /opt/kafka/config/kafka.properties
    • 授权:
      • kafka-acls.sh --bootstrap-server < broker_ip> :9093 --add --allow-principal User:alice --operation Read --topic test --command-config /opt/kafka/config/kafka.properties
      • kafka-acls.sh --bootstrap-server < broker_ip> :9093 --add --allow-principal User:alice --operation Write --topic test --command-config /opt/kafka/config/kafka.properties
      • kafka-acls.sh --bootstrap-server < broker_ip> :9093 --add --allow-principal User:alice --operation Describe --topic test --command-config /opt/kafka/config/kafka.properties
  • 建议:为生产 Topic 设置更细粒度 ACL(按 Topic/Group/Cluster),并定期审计与回收无用账号。

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


若转载请注明出处: Ubuntu Kafka配置安全设置
本文地址: https://pptw.com/jishu/765165.html
如何在Ubuntu上备份Kafka Kafka配置Ubuntu环境要求

游客 回复需填写必要信息