首页主机资讯kafka安全设置ubuntu上怎么操作

kafka安全设置ubuntu上怎么操作

时间2025-12-17 08:23:04发布访客分类主机资讯浏览1125
导读:Ubuntu上Kafka安全设置实操指南 一 准备与基线 安装 Java JDK 8(Kafka常用版本):sudo apt install openjdk-8-jdk;配置环境变量:export JAVA_HOME=/usr/lib/j...

Ubuntu上Kafka安全设置实操指南

一 准备与基线

  • 安装 Java JDK 8(Kafka常用版本):sudo apt install openjdk-8-jdk;配置环境变量:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 与 export PATH=$JAVA_HOME/bin:$PATH
  • 下载并解压 Kafka(示例:kafka_2.13-3.6.0.tgz),创建数据与日志目录:/opt/software/kafka/{ log,zookeeper,log} 。
  • 基线配置 server.properties(单机示例):
    • broker.id=0
    • listeners=PLAINTEXT://:9092
    • advertised.listeners=PLAINTEXT://< 本机IP或域名> :9092
    • log.dirs=/opt/software/kafka/log
    • zookeeper.connect=localhost:2181
  • 基线配置 zookeeper.properties:
    • dataDir=/opt/software/kafka/zookeeper
    • dataLogDir=/opt/software/kafka/zookeeper/log
    • clientPort=2181
      以上为后续开启认证、加密与ACL的基线环境。

二 启用SASL认证

  • 选择机制:简单场景用 PLAIN,可动态加用户推荐 SCRAM-SHA-256/512
  • 配置 server.properties(Broker 端):
    • listeners=SASL_PLAINTEXT://:9092
    • advertised.listeners=SASL_PLAINTEXT://< 本机IP或域名> :9092
    • security.inter.broker.protocol=SASL_PLAINTEXT
    • sasl.enabled.mechanisms=PLAIN(或 SCRAM-SHA-512
    • sasl.mechanism.inter.broker.protocol=PLAIN(或 SCRAM-SHA-512
    • authorizer.class.name=kafka.security.authorizer.AclAuthorizer
    • allow.everyone.if.no.acl.found=false(生产建议为 false)
    • super.users=User:admin
  • 创建 JAAS 文件(如:/opt/kafka/config/kafka_server_jaas.conf):
    • PLAIN 示例:
      • KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username=“admin” password=“admin-secret” user_admin=“admin-secret” user_producer=“prod-pass” user_consumer=“cons-pass”; } ;
      • Client { org.apache.kafka.common.security.plain.PlainLoginModule required username=“kafka” password=“zk-pass”; } ;
    • 如需 SCRAM,KafkaServer 使用:org.apache.kafka.common.security.scram.ScramLoginModule required; (无需在 JAAS 中明文放密码)。
  • 启动参数注入 JAAS:在 kafka-server-start.sh 的 exec 前加入(或导出 KAFKA_OPTS):
    • export KAFKA_OPTS=“-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf”
  • 若 Zookeeper 也启用 SASL(推荐):
    • zookeeper.properties 追加:authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider;requireClientAuthScheme=sasl;jaasLoginRenew=3600000
    • 为 ZK 准备 JAAS(如 zk_server_jaas.conf),并在 zkEnv.sh 中注入:-Djava.security.auth.login.config=/path/zk_server_jaas.conf。
  • 动态创建 SCRAM 用户(无需重启):
    • ./bin/kafka-configs.sh --bootstrap-server localhost:9092 --alter --add-config ‘SCRAM-SHA-512=[iterations=8192,password=UserPass]’ --entity-type users --entity-name alice
  • 客户端最小配置(producer.properties/consumer.properties 或 --command-config):
    • security.protocol=SASL_PLAINTEXT
    • sasl.mechanism=PLAIN(或 SCRAM-SHA-512
    • sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username=“alice” password=“UserPass”;
      以上覆盖了 Broker 间与客户端基于 SASL 的认证与动态用户管理。

三 配置SSL TLS加密

  • 生成密钥库与信任库(JKS,示例有效期 3650 天):
    • 服务器密钥库:keytool -genkey -alias kafka -keyalg RSA -keystore kafka.server.keystore.jks -validity 3650
    • 导出服务器证书:keytool -export -alias kafka -file kafka.server.crt -keystore kafka.server.keystore.jks
    • 客户端信任库并导入服务器证书:
      • keytool -import -alias kafka -file kafka.server.crt -keystore kafka.client.truststore.jks
  • 配置 server.properties(Broker 端):
    • listeners=SASL_SSL://:9093(或仅 SSL:SSL://:9093)
    • security.inter.broker.protocol=SASL_SSL(或 SSL
    • ssl.keystore.location=/path/kafka.server.keystore.jks
    • ssl.keystore.password=store-pass
    • ssl.key.password=key-pass
    • ssl.truststore.location=/path/kafka.server.truststore.jks
    • ssl.truststore.password=trust-pass
    • ssl.enabled.protocols=TLSv1.2,TLSv1.3
    • ssl.client.auth=required(双向校验;如仅服务端校验可为 none)
  • 客户端最小配置:
    • security.protocol=SASL_SSL(或 SSL
    • sasl.mechanism=PLAIN/SCRAM-SHA-512
    • ssl.truststore.location=/path/kafka.client.truststore.jks
    • ssl.truststore.password=trust-pass
      以上实现了传输链路加密与(可选)双向 TLS 校验。

四 授权与访问控制 ACL

  • 启用 ACL(Broker 端):authorizer.class.name=kafka.security.authorizer.AclAuthorizer;allow.everyone.if.no.acl.found=false;super.users=User:admin
  • 常用 ACL 示例(使用 --command-config 指定客户端 SASL/SSL 配置):
    • 给生产者写权限:
      • ./bin/kafka-acls.sh --bootstrap-server localhost:9092 --command-config ./client-sasl-ssl.properties --add --allow-principal User:producer --operation Write --topic test
    • 给消费者组读权限:
      • ./bin/kafka-acls.sh --bootstrap-server localhost:9092 --command-config ./client-sasl-ssl.properties --add --allow-principal User:consumer --operation Read --topic test --group test-group
  • 如需 Zookeeper ACL:在 zookeeper.properties 中设置 zookeeper.set.acl=true,并为 Kafka 使用的 ZK 用户配置相应 ACL(生产建议开启)。
    以上通过 ACL 精细化控制 Topic/Group 的读写与集群管理权限。

五 网络安全与运维加固

  • 防火墙仅放通必要端口(示例:UFW):sudo ufw allow 9092,9093,2181/tcp;云上安全组同理仅放白名单 CIDR。
  • 监听与广告地址:advertised.listeners 使用 可路由的 IP 或域名,避免内外网错配导致客户端连错或被拒绝。
  • 进程与文件权限:Kafka 以专用系统用户运行;证书与 JAAS 文件权限设为 600,属主为运行用户。
  • 加密套件与协议:ssl.enabled.protocols=TLSv1.2,TLSv1.3;禁用 SSLv3/TLSv1.0/TLSv1.1;按需配置 ssl.cipher.suites。
  • 监控与审计:集中采集 server.logcontroller.log,对异常登录、Topic 频繁 ACL 变更、连接风暴等进行告警;定期升级 Kafka 与依赖组件。
  • 高可用与密钥管理:多 Broker 跨可用区部署;证书与密钥集中托管与轮换;定期演练故障切换与恢复。
    以上措施覆盖网络边界、传输加密、系统与运维层面的纵深防护。

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


若转载请注明出处: kafka安全设置ubuntu上怎么操作
本文地址: https://pptw.com/jishu/773574.html
如何测试debian邮件服务器连通性 Debian下phpstorm如何进行代码分析

游客 回复需填写必要信息