温馨提示×

Linux Kafka配置中的权限管理怎么做

小樊
31
2025-12-23 00:06:49
栏目: 智能运维

Linux Kafka 权限管理实操指南

一 核心思路与准备

  • 权限管理包含四个层面:
    1. 操作系统层:为 Kafka 创建专用系统用户与组,仅授予其数据/日志/配置目录的读写权限;
    2. 传输层:启用 SASL 认证(常用 SCRAM-SHA-256/512),必要时叠加 SSL/TLS 加密;
    3. 授权层:启用 ACL(推荐使用 SimpleAclAuthorizer),为 User:principal 授予最小权限;
    4. 运维层:以最小权限运行进程,限制监听端口来源,开启审计日志并定期轮换凭据。上述做法能覆盖身份鉴别、传输加密与细粒度访问控制三大安全目标。

二 操作系统与目录权限

  • 创建专用用户与组(示例用户/组均为 kafka):
    sudo groupadd kafka
    sudo useradd -m -r -g kafka kafka
  • 修正关键目录属主与权限(示例路径可按需替换):
    sudo chown -R kafka:kafka /opt/kafka/data /opt/kafka/logs /opt/kafka/config
    sudo chmod -R u=rwx,g=rx,o= /opt/kafka/data /opt/kafka/logs /opt/kafka/config
  • 以专用用户启动服务:
    sudo su - kafka -c “/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties”
    说明:目录权限与最小权限运行可显著降低被提权与数据泄露风险。

三 启用 SASL 认证与授权

  • 选择机制:生产环境优先 SASL/SCRAM;如需加密通道,叠加 SASL_SSL。以下给出 SCRAM 的最小可用配置。
  • 创建 Broker 间通信与管理员凭据(在任一存活的 Zookeeper 节点执行,broker 启动前先创建管理员):

    管理员(后续作为超级用户)

    bin/kafka-configs.sh --zookeeper localhost:2181
    –alter --add-config ‘SCRAM-SHA-256=[password=Admin@123],SCRAM-SHA-512=[password=Admin@123]’
    –entity-type users --entity-name admin

    客户端示例用户

    bin/kafka-configs.sh --zookeeper localhost:2181
    –alter --add-config ‘SCRAM-SHA-256=[iterations=8192,password=Prod@123]’
    –entity-type users --entity-name producer
    bin/kafka-configs.sh --zookeeper localhost:2181
    –alter --add-config ‘SCRAM-SHA-256=[iterations=8192,password=Cons@123]’
    –entity-type users --entity-name consumer
  • 配置 Broker 的 server.properties(示例为纯 SASL_PLAINTEXT;如需加密,改为 SASL_SSL 并配置 keystore/truststore):
    listeners=SASL_PLAINTEXT://0.0.0.0:9092
    advertised.listeners=SASL_PLAINTEXT://:9092
    security.inter.broker.protocol=SASL_PLAINTEXT
    sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
    sasl.enabled.mechanisms=SCRAM-SHA-256
    authorizer.class.name=org.apache.kafka.common.security.auth.SimpleAclAuthorizer
    allow.everyone.if.no.acl.found=false
    super.users=User:admin
  • 配置 JAAS(kafka_server_jaas.conf):
    KafkaServer {
    org.apache.kafka.common.security.scram.ScramLoginModule required
    username=“admin”
    password=“Admin@123”;
    };
  • 启动参数注入 JAAS(任选其一):
    • 方式A:export KAFKA_OPTS=“-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf”
    • 方式B:在 kafka-server-start.sh 的 exec 前追加
      -Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf
      说明:SCRAM 凭证存储在 Zookeeper,支持动态增删改;broker 间通信用户需提前创建,避免启动失败。

四 配置 ACL 与客户端最小权限示例

  • 常用 ACL 命令模板(–authorizer-properties 指向 Zookeeper;对主题/消费组/集群等资源授权):

    生产者在主题级别写权限

    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181
    –add --allow-principal User:producer --operation Write --operation Describe
    –topic test-topic --producer

    消费者组读取权限(含消费组 Describe 与读)

    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181
    –add --allow-principal User:consumer --operation Read --operation Describe
    –topic test-topic --group test-group

    集群级管理权限(谨慎授予)

    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181
    –add --allow-principal User:admin --operation ClusterAction --cluster

    查看 ACL

    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181
    –list --topic test-topic
    说明:ACL 支持按 User:principal 授予 Read/Write/Describe/Create/Delete/ClusterAction 等操作,遵循最小权限原则,避免授予 allow.everyone 的隐式权限。

五 客户端配置与网络加固

  • 客户端属性示例(producer.properties / consumer.properties):
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=SCRAM-SHA-256
    sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required
    username=“producer” password=“Prod@123”;
    如需双向 TLS,改为 SASL_SSL 并配置 ssl.truststore.location / ssl.keystore.location 等参数。
  • 网络与防火墙:仅开放 9092(或实际监听端口)至可信网段;如使用云环境,配合安全组白名单策略。
  • 安全加固清单:
    • 非 root 专用用户运行;
    • 启用 SASL/SSL,定期轮换 SCRAM 密码;
    • 仅授予必要 ACL,禁用默认放行;
    • 开启并保护 审计日志,持续监控异常访问;
    • 及时升级 Kafka 与依赖组件,定期安全评估与配置扫描。
      说明:客户端凭据可通过 JAAS 文件或 sasl.jaas.config 内联提供;网络最小暴露面与持续监控是生产环境的必要措施。

0