温馨提示×

kafka在centos上的安全认证机制是什么

小樊
31
2025-12-13 15:51:10
栏目: 智能运维

Kafka 在 CentOS 上的安全认证机制

一、核心机制总览

  • SASL 认证框架:Kafka 通过 SASL 提供多种身份验证方式,覆盖 Client↔BrokerBroker↔Broker 以及 Broker↔Zookeeper 的认证链路。常见机制包括:
    • SASL/GSSAPI(Kerberos):企业级统一认证,适合多系统联动与强安全场景。
    • SASL/SCRAM-SHA-256 / SCRAM-SHA-512:基于挑战-响应的口令认证,支持动态增删用户,运维友好。
    • SASL/PLAIN:账号密码明文传输(需配合 TLS 加密),实现简单,常用于内网或测试。
  • 信道加密(SSL/TLS):为客户端与 Broker、Broker 与 Broker 之间的链路提供传输层加密,通常与 SASL 组合为 SASL_SSL,也可单独使用 SSL(不建议生产环境明文传输)。
  • 授权与访问控制(ACL):在认证通过后,使用 ACL 控制用户对 Topic/Group/Cluster 等资源的 读/写/创建/删除 权限,支持按用户或主体进行细粒度授权。

二、常见机制与适用场景

机制 协议组合 主要特点 典型场景
SASL/GSSAPI(Kerberos) SASL_PLAINTEXT / SASL_SSL 企业统一认证、票据机制、强安全 多系统集成、合规要求高
SASL/SCRAM-SHA-256/512 SASL_PLAINTEXT / SASL_SSL 口令存储安全、支持动态用户管理 内网/跨机房、运维可控
SASL/PLAIN SASL_PLAINTEXT / SASL_SSL 配置简单、明文口令(必须配 TLS) 快速上线、测试环境
SSL/TLS SSL / SASL_SSL 传输加密、证书校验 公网/跨域访问、合规加密
ACL 与 SASL/SSL 组合 细粒度授权、主体/资源/操作 生产权限治理
以上机制在 CentOS 上的配置方式与其他 Linux 发行版一致,差异主要在系统服务管理与防火墙命令层面。

三、快速配置示例 SCRAM-SHA-512 + SASL_SSL(生产常用)

  • 生成 SCRAM 用户(示例创建 admin
    • 命令:bin/kafka-configs.sh --bootstrap-server broker:9092 --alter --add-config ‘SCRAM-SHA-512=[password=]’ --entity-type users --entity-name admin
  • 服务端配置 server.properties(关键项)
    • listeners=SASL_SSL://:9093
    • advertised.listeners=SASL_SSL://:9093
    • security.inter.broker.protocol=SASL_SSL
    • sasl.enabled.mechanisms=SCRAM-SHA-512
    • sasl.mechanism.inter.broker.protocol=SCRAM-SHA-512
    • inter.broker.listener.name=SASL_SSL
    • ssl.keystore.location=/path/to/kafka.server.keystore.jks
    • ssl.keystore.password=
    • ssl.key.password=
    • ssl.truststore.location=/path/to/kafka.server.truststore.jks
    • ssl.truststore.password=
    • ssl.client.auth=required
    • ssl.enabled.protocols=TLSv1.2,TLSv1.3
  • 服务端 JAAS(示例)
    • KafkaServer { org.apache.kafka.common.security.scram.ScramLoginModule required username=“admin” password=“”; };
  • 客户端连接示例(producer/consumer 或脚本)
    • security.protocol=SASL_SSL
    • sasl.mechanism=SCRAM-SHA-512
    • sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username=“” password=“”;
  • 说明
    • 若使用 PLAIN,将机制改为 SASL/PLAIN 并在 JAAS 中使用 PlainLoginModule;务必配合 TLS 使用。
    • 若使用 GSSAPI(Kerberos),需部署 KDC,并在 server.properties 中设置 sasl.mechanism.inter.broker.protocol=GSSAPI、security.inter.broker.protocol=SASL_PLAINTEXT 或 SASL_SSL,同时准备 JAAS 与 krb5.conf。

四、授权与网络加固要点

  • 启用 ACL(在 server.properties)
    • authorizer.class.name=kafka.security.authorizer.AclAuthorizer
    • allow.everyone.if.no.acl.found=false
    • super.users=User:(如 Kerberos 则为 User:kafka/your-host@REALM)
  • 常用 ACL 管理示例
    • 给用户授予主题写权限:bin/kafka-acls.sh --bootstrap-server broker:9092 --add --allow-principal User: --operation Write --topic
    • 查看 ACL:bin/kafka-acls.sh --bootstrap-server broker:9092 --list --topic
  • 网络与端口
    • 开放端口(firewalld):firewall-cmd --permanent --add-port=9093/tcp && firewall-cmd --reload
    • 建议仅暴露 SASL_SSL 端口(如 9093),并限制来源网段。

0