首页主机资讯kafka在centos上的权限管理方法

kafka在centos上的权限管理方法

时间2025-12-12 01:09:04发布访客分类主机资讯浏览1389
导读:Kafka 在 CentOS 上的权限管理方法 一 核心概念与总体思路 权限管理通常包含三层: 认证 Authentication:确认客户端/ Broker / Zookeeper 的身份,常用机制有 SASL/PLAIN、SASL/...

Kafka 在 CentOS 上的权限管理方法

一 核心概念与总体思路

  • 权限管理通常包含三层:
    1. 认证 Authentication:确认客户端/ Broker / Zookeeper 的身份,常用机制有 SASL/PLAIN、SASL/SCRAM-SHA-256/512、SASL/GSSAPI(Kerberos)
    2. 授权 Authorization:基于 ACL 控制主体(Principal,如 User:alice)对资源(如 Topic、Group、Cluster)的操作(如 Read、Write、Create、Delete、Describe);
    3. 信道加密 Encryption:通过 SSL/TLS 对传输链路加密(可与 SASL 组合使用)。
  • CentOS 上的落地顺序建议:先启用认证(SASL),再开启授权(ACL),必要时叠加 SSL/TLS。

二 方案一 SASL/SCRAM 动态认证 + ACL(推荐)

  • 适用场景:需要动态增删用户、不重启 Broker;内网或外网均可。
  • 核心步骤:
    1. 创建 SCRAM 用户(Kafka 2.0+ 推荐用 –bootstrap-server;老版本可用 –zookeeper
      • 创建管理员:
        bin/kafka-configs.sh --bootstrap-server localhost:9092 --alter --add-config ‘SCRAM-SHA-256=[iterations=4096,password=Admin@123]’ --entity-type users --entity-name admin
      • 创建业务用户:
        bin/kafka-configs.sh --bootstrap-server localhost:9092 --alter --add-config ‘SCRAM-SHA-256=[iterations=4096,password=Producer@123]’ --entity-type users --entity-name producer
        bin/kafka-configs.sh --bootstrap-server localhost:9092 --alter --add-config ‘SCRAM-SHA-256=[iterations=4096,password=Consumer@123]’ --entity-type users --entity-name consumer
      • 查看/删除:
        bin/kafka-configs.sh --bootstrap-server localhost:9092 --describe --entity-type users
        bin/kafka-configs.sh --bootstrap-server localhost:9092 --alter --delete-config ‘SCRAM-SHA-256’ --entity-type users --entity-name producer
    2. 配置 Broker 启用 SASL/SCRAM
      • server.properties 关键项:
        listeners=SASL_PLAINTEXT://:9092
        security.inter.broker.protocol=SASL_PLAINTEXT
        sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
        sasl.enabled.mechanisms=SCRAM-SHA-256
        allow.everyone.if.no.acl.found=false
        super.users=User:admin
      • JAAS 配置(如 /usr/local/kafka/config/kafka_server_jaas.conf):
        KafkaServer {
        org.apache.kafka.common.security.scram.ScramLoginModule required;
        } ;
      • 启动参数引入 JAAS:
        export KAFKA_OPTS=“-Djava.security.auth.login.config=/usr/local/kafka/config/kafka_server_jaas.conf”
    3. 配置客户端(生产者/消费者)
      • 生产者 client.properties:
        security.protocol=SASL_PLAINTEXT
        sasl.mechanism=SCRAM-SHA-256
        sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username=“producer” password=“Producer@123”;
      • 消费者 client.properties:
        security.protocol=SASL_PLAINTEXT
        sasl.mechanism=SCRAM-SHA-256
        sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username=“consumer” password=“Consumer@123”;
    4. 使用 ACL 授权
      • 主题写入权限:
        bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --allow-principal User:producer --operation Write --topic test-topic
      • 主题读取权限(含消费者组):
        bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --allow-principal User:consumer --operation Read --topic test-topic --group test-group
      • 查看/删除:
        bin/kafka-acls.sh --bootstrap-server localhost:9092 --list --topic test-topic
        bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --allow-principal User:producer --operation Write --topic test-topic
    5. 验证
      • 未授权用户应出现 Not authorized to access topicsTopicAuthorizationException;授权用户可正常生产/消费。

三 方案二 SASL/PLAIN 静态认证 + ACL(简单但不易动态扩用户)

  • 适用场景:用户规模小、变更不频繁;配置简单。
  • 核心步骤:
    1. Broker 启用 SASL/PLAIN
      • server.properties:
        listeners=SASL_PLAINTEXT://:9092
        security.inter.broker.protocol=SASL_PLAINTEXT
        sasl.mechanism.inter.broker.protocol=PLAIN
        sasl.enabled.mechanisms=PLAIN
        allow.everyone.if.no.acl.found=false
        super.users=User:admin
      • JAAS(/usr/local/kafka/config/kafka_server_jaas.conf):
        KafkaServer {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username=“admin” password=“Admin@123
        user_admin=“Admin@123
        user_producer=“Producer@123
        user_consumer=“Consumer@123”;
        } ;
      • 启动参数:export KAFKA_OPTS=“-Djava.security.auth.login.config=/usr/local/kafka/config/kafka_server_jaas.conf”
    2. 客户端(client.properties):
      security.protocol=SASL_PLAINTEXT
      sasl.mechanism=PLAIN
      sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username=“producer” password=“Producer@123”;
    3. ACL 授权(与 SCRAM 相同):
      bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --allow-principal User:producer --operation Write --topic test-topic
      bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --allow-principal User:consumer --operation Read --topic test-topic --group test-group
    4. 说明
      • SASL/PLAIN 的用户与口令需要在 JAAS 中预置,新增用户需重启 Broker;SASL/SCRAM 支持运行时增删用户,更灵活。

四 常见注意事项与排错要点

  • 权限主体格式为 User:用户名(如 User:alice);ACL 资源需明确到 Topic/Group/Cluster,消费者组权限要与实际 group.id 一致。
  • 未授权访问常见报错:Not authorized to access topicsTopicAuthorizationException;请核对 ACL、principal、以及客户端配置是否一致。
  • 若启用 Zookeeper SASL,需为 ZK 配置 SASL 认证与 JAAS,并将 Kafka 相关依赖 JAR 放入 ZK 的 classpath,否则 Broker 与 ZK 通信会失败。
  • 生产建议:优先选择 SASL/SCRAM + ACL;如需链路加密,叠加 SSL/TLS;为运维账号配置 super.users,并严格控制最小权限。

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


若转载请注明出处: kafka在centos上的权限管理方法
本文地址: https://pptw.com/jishu/770026.html
centos kafka如何配置消息队列长度 怎样让CentOS自动挂载设备

游客 回复需填写必要信息