7.6 ZooKeeper 认证

优质
小牛编辑
135浏览
2023-12-01

7.6.1 新集群

在对broker进行Zookeeper认证前,有两个必要步骤:
  1. 创建一个JAAS登录文件并在文件中设置适当的系统属性,如上文所述。
  2. 在每个broker上设置配置项 zookeeper.set.acl为true。
The metadata stored in ZooKeeper for the Kafka cluster is world-readable,but can only be modified by the brokers.The rationale behind this decision is that the data stored in ZooKeeper is not sensitive,but inappropriate manipulation of that data can cause cluster disruption.We also recommend limiting the access to ZooKeeper via network segmentation (only brokers and some admin tools need access to ZooKeeper if the new Java consumer and producer clients are used). Kafka 存储在Zookeeper的元数据是全局可读的,但是只有 brokers 能够进行修改。这一决定背后的理由是,存储在 zookeeper 上的数据虽然不重要,但是如果数据被肆意串改,会导致broker程序出错,程序中断。我们还是建议通过ip 网段来限制访问 zookeeper 的权限(仅允许broker和一些管理工具访问zookeeper)。

7.6.2 集群迁移

如果你使用kafka的版本不支持安全的或简单的禁用安全,你还是想设置集群安全,则需要执行以下步骤启用ZooKeeper认证(最小的中断操作):
  1. 滚动重新启动设置的JAAS登录文件,这样可以使broker进行身份认证。在滚动重启结束后,broker就能够用ACL操作这些znode(节点)了(但不能创建)。
  2. 进行第二次滚动重启,这次设置配置参数zookeeper.set.acl为true,这样就能使用安全的ACL创建znode。
  3. 执行ZkSecurityMigrator工具。执行脚本:./bin/zookeeper-security-migration.sh,将zookeeper.acl 设置secure,这个工具通过相应的sub-trees修改的znodes ACL。

除了以上操作,还需要在安全集群中关闭认证,具体操作如下:

  1. 滚动重新启动设置的JAAS登录文件,进行broker认证,这里需要将zookeeper.set.acl设置为false。 重启结束之后,broker停止用ACL创建znodes,但是仍然能认证和操作znodes。
  2. 执行ZkSecurityMigrator工具. 运行脚本:./bin/zookeeper-security-migration.sh,将zookeeper.acl设置为unsecure,这个工具通过相应的sub-trees修改的znodes ACL。
  3. 执行第二次滚动重启broker,这次忽略了JAAS登录文件设置系统属性。
这里提供了一个如何运行迁移工具的例子,:
./bin/zookeeper-security-migration.sh --zookeeper.acl=secure --zookeeper.connect=localhost:2181

运行以下命令查看完整列表:

./bin/zookeeper-security-migration.sh --help

7.6.3 ZooKeeper 整体迁移

在进行迁移时候有必要对全部zookeeper启用身份验证。要做到这一点,我们需要设置一些属性参数。请参阅更详细的zookeeper文档︰:
  1. Apache ZooKeeper documentation
  2. Apache ZooKeeper wiki