6.6. ZooKeeper 授权


当在 Kafka 和 ZooKeeper 之间启用身份验证时,您可以使用 ZooKeeper 访问控制列表(ACL)规则自动控制对存储在 ZooKeeper 中的 Kafka 元数据的访问。

6.6.1. ACL 配置

ZooKeeper ACL 规则的强制由 config/server.properties Kafka 配置文件中的 zookeeper.set.acl 属性控制。

属性默认被禁用,并通过设置为 true 来启用:

zookeeper.set.acl=true
Copy to Clipboard Toggle word wrap

如果启用了 ACL 规则,当在 ZooKeeper 中创建 znode 时,只有创建它的 Kafka 用户才可以修改或删除它。所有其他用户都具有只读访问权限。

Kafka 仅为新创建的 ZooKeeper znodes 设置 ACL 规则。如果只在集群首次启动后启用 ACL,zookeeper-security-migration.sh 工具可以在所有现有 znodes 上设置 ACL。

ZooKeeper 中数据的机密性

ZooKeeper 中存储的数据包括:

  • 主题名称及其配置
  • 当使用 SASL SCRAM 身份验证时,salted 和 hash 用户凭证。

但是 ZooKeeper 不存储使用 Kafka 发送和接收的任何记录。ZooKeeper 中存储的数据被认为是非机密。

如果要将数据视为机密(例如,主题名称包含客户 ID),则唯一可用于保护的选项会隔离网络级别的 ZooKeeper,并只允许访问 Kafka 代理。

6.6.2. 为新的 Kafka 集群启用 ZooKeeper ACL

此流程描述了如何在新 Kafka 集群的 Kafka 配置中启用 ZooKeeper ACL。仅在 Kafka 集群首次启动前使用此流程。有关在已在运行的集群中启用 ZooKeeper ACL,请参阅 第 6.6.3 节 “在现有 Kafka 集群中启用 ZooKeeper ACL”

先决条件

流程

  1. 编辑 Kafka 配置文件,在所有集群节点上将 zookeeper.set.acl 字段设置为 true

    zookeeper.set.acl=true
    Copy to Clipboard Toggle word wrap
  2. 启动 Kafka 代理。

6.6.3. 在现有 Kafka 集群中启用 ZooKeeper ACL

此流程描述了如何在 Kafka 配置中为正在运行的 Kafka 集群启用 ZooKeeper ACL。使用 zookeeper-security-migration.sh 工具,在所有存在的 znodes 中设置 ZooKeeper ACL。zookeeper-security-migration.sh 作为 Apache Kafka 的 Streams 的一部分,并可在 bin 目录中找到。

先决条件

启用 ZooKeeper ACL

  1. 编辑 Kafka 配置文件,在所有集群节点上将 zookeeper.set.acl 字段设置为 true

    zookeeper.set.acl=true
    Copy to Clipboard Toggle word wrap
  2. 逐一重启所有 Kafka 代理。

    有关在多节点集群中重启代理的详情,请参考 第 4.3 节 “执行 Kafka 代理的安全滚动重启”

  3. 使用 zookeeper-security-migration.sh 工具在所有现有 ZooKeeper znodes 中设置 ACL。

    su - kafka
    cd /opt/kafka
    KAFKA_OPTS="-Djava.security.auth.login.config=./config/jaas.conf"; ./bin/zookeeper-security-migration.sh --zookeeper.acl=secure --zookeeper.connect=<ZooKeeperURL>
    exit
    Copy to Clipboard Toggle word wrap

    例如:

    su - kafka
    cd /opt/kafka
    KAFKA_OPTS="-Djava.security.auth.login.config=./config/jaas.conf"; ./bin/zookeeper-security-migration.sh --zookeeper.acl=secure --zookeeper.connect=zoo1.my-domain.com:2181
    exit
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat