温馨提示×

ubuntu如何保障kafka配置安全

小樊
41
2025-11-29 13:26:58
栏目: 智能运维

Ubuntu上保障Kafka配置安全的实操清单

一 基础加固

  • 运行身份与文件权限:为 Kafka 创建专用系统用户与组(如 kafka:kafka),将安装目录与日志目录归属该用户,仅授予必要权限;服务以最小权限运行,避免使用 root
  • 最小暴露面:仅开放必要端口(如 9092/9093),并将 Kafka 与 Zookeeper 部署在内网或受控网段,避免公网直连。
  • 防火墙策略:使用 UFW 仅放行管理网段与业务网段对 Kafka 端口的访问,例如:sudo ufw allow from 10.0.0.0/8 to any port 9093 proto tcp;按需限制 Zookeeper 2181 的访问源。
  • 系统与依赖:保持 UbuntuJava/Kafka 的安全补丁为最新,及时修复已知漏洞。

二 传输加密与认证

  • 方案选型:优先采用 SASL_SSL(认证 + 加密);如暂无法启用 TLS,可先用 SASL_PLAINTEXT,但应尽快迁移到加密通道。
  • 生成密钥与信任库(JKS,示例):
    • 服务器密钥库: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.server.truststore.jks
  • Broker 端关键配置(server.properties):
    • listeners=SASL_SSL://0.0.0.0:9093
    • advertised.listeners=SASL_SSL://<broker_fqdn_or_ip>:9093
    • security.inter.broker.protocol=SASL_SSL
    • sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
    • sasl.enabled.mechanisms=SCRAM-SHA-256
    • ssl.truststore.location=/path/kafka.server.truststore.jks;ssl.truststore.password=***
    • ssl.keystore.location=/path/kafka.server.keystore.jks;ssl.keystore.password=;ssl.key.password=
    • 建议限定协议与套件:ssl.enabled.protocols=TLSv1.2,TLSv1.3;ssl.cipher.suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
  • 客户端示例(producer.properties/consumer.properties):
    • security.protocol=SASL_SSL;sasl.mechanism=SCRAM-SHA-256
    • sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username=“app-user” password="******";

三 身份认证与授权

  • 动态创建用户(SCRAM,无需重启):
    • 创建用户:kafka-configs.sh --bootstrap-server broker:9093 --alter --add-config ‘SCRAM-SHA-256=[iterations=8192,password=******]’ --entity-type users --entity-name app-user
    • 如仍使用 Zookeeper 存储 ACL(旧版本),可用:kafka-configs.sh --zookeeper zk:2181 --alter --add-config ‘SCRAM-SHA-256=[iterations=8192,password=******]’ --entity-type users --entity-name app-user
  • 启用 ACL(示例):
    • 创建主题:kafka-topics.sh --bootstrap-server broker:9093 --create --topic orders --partitions 3 --replication-factor 3
    • 授予权限:
      • 生产权限:kafka-acls.sh --bootstrap-server broker:9093 --add --allow-principal User:app-user --operation Write --topic orders
      • 消费权限:kafka-acls.sh --bootstrap-server broker:9093 --add --allow-principal User:app-user --operation Read --topic orders --group app-group
  • 默认拒绝:为关键资源设置默认拒绝策略(Deny-All),仅对明确主体授予最小权限,遵循 最小权限原则

四 元数据与内部通信安全

  • Zookeeper 安全:为 Zookeeper 启用 SASL 认证(如 GSSAPI/KerberosDIGEST-MD5),并限制客户端来源;ACL 保护 znode,避免未授权访问元数据。
  • Broker 间通信:将 inter.broker.protocol 设置为 SASL_SSL,与客户端一致使用 SCRAM-SHA-256Kerberos,确保集群内部链路也经过认证与加密。
  • 监听与广告地址:区分 listeners(供外部接入)与 advertised.listeners(客户端实际连接地址),避免误暴露内网地址;禁用未使用的 PLAINTEXT 监听。

五 运维监控与审计

  • 日志与审计:启用 Kafka 访问日志controller/authorizer 日志,集中到 SIEM 或日志平台进行实时监控与告警;定期审计 ACL 变更 与异常连接。
  • 证书与凭据管理:为 keystore/truststore 设置强口令并妥善管控,证书到期前滚动更新;凭据使用 Vault/KMS 等安全存储与轮换机制。
  • 备份与恢复:定期备份 Topic 数据ACL 配置,并进行恢复演练;在变更窗口内执行滚动升级与回滚预案。
  • 基线核查:建立安全基线(协议/套件、监听端口、ACL 规则、用户清单、备份策略),并纳入变更管理流程。

0