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
zookeeper.set.acl=true
如果启用了 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”。
先决条件
流程
编辑 Kafka 配置文件,在所有集群节点上将
zookeeper.set.acl字段设置为true。zookeeper.set.acl=true
zookeeper.set.acl=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 启动 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 目录中找到。
先决条件
- Kafka 集群 已配置并运行。
启用 ZooKeeper ACL
编辑 Kafka 配置文件,在所有集群节点上将
zookeeper.set.acl字段设置为true。zookeeper.set.acl=true
zookeeper.set.acl=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 逐一重启所有 Kafka 代理。
有关在多节点集群中重启代理的详情,请参考 第 4.3 节 “执行 Kafka 代理的安全滚动重启”。
使用
zookeeper-security-migration.sh工具在所有现有 ZooKeeperznodes中设置 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
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> exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
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
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 exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow