控制对 Apache ZooKeeper 的访问 - Amazon Managed Streaming for Apache Kafka
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

控制对 Apache ZooKeeper 的访问

出于安全原因,您可以限制对属于 ZooKeeper 一部分的 Apache Amazon MSK 集群 节点的访问。要限制对节点的访问,您可以为节点分配单独的安全组。然后,您可以决定有权访问该安全组的人员。

将 Apache ZooKeeper 节点放在单独的安全组中

  1. 获取集群的 Apache ZooKeeper 连接字符串。要了解如何操作,请参阅获取 ZooKeeper 的 Apache Amazon MSK 集群 连接字符串。连接字符串包含 Apache ZooKeeper 节点的 DNS 名称。

  2. 使用 hostping 等工具将您在上一步中获得的 DNS 名称转换为 IP 地址。稍后您需要在此过程中使用这些 IP 地址,因此请保存这些地址。

  3. 保存 Apache ZooKeeper 节点的 IP 地址,因为您需要在本过程的后面部分中使用它们。

  4. 登录 AWS 管理控制台并通过以下网址打开 Amazon EC2 控制台:https://console.amazonaws.cn/ec2/

  5. 在左侧窗格的 Network & Security (网络与安全性) 下,选择 Network Interfaces (网络接口)

  6. 在网络接口表上方的搜索字段中,键入集群名称,然后键入 return。这会将表中显示的网络接口数限制为与您的集群关联的接口。

  7. 选中与列表中的第一个网络接口对应的行开头处的复选框。

  8. 在页面底部的详细信息窗格中,查找 Primary private IPv4 IP (主要私有 IP)。如果此 IP 地址与您在此过程的第一步中获得的某个 IP 地址匹配,则意味着此网络接口将分配给属于集群一部分的 Apache ZooKeeper 节点。否则,取消选中此网络接口旁边的复选框,然后选择列表中的下一个网络接口。选择网络接口的顺序无关紧要。在后续步骤中,您将对分配给 Apache ZooKeeper 节点的所有网络接口执行相同的操作。

  9. 当您选择与 Apache ZooKeeper 节点对应的网络接口时,请选择页面顶部的 Actions (操作) 菜单,然后选择 Change Security Groups (更改安全组)。将新安全组分配给此网络接口。有关创建安全组的信息,请参阅 Amazon VPC 文档中的创建安全组

  10. 重复上一步,将相同的新安全组分配给与集群的 Apache ZooKeeper 节点关联的所有网络接口。

  11. 现在,您可以选择有权访问此新安全组的人员。有关设置安全组规则的信息,请参阅 Amazon VPC 文档中的添加、删除和更新规则

将 TLS 安全性与 Apache ZooKeeper 结合使用

您可以使用 TLS 安全性在客户端和 Apache ZooKeeper 节点之间传输中加密。要对您的 Apache ZooKeeper 节点实施 TLS 安全性,请执行以下操作:

  • 集群必须使用 Apache Kafka 版本 2.5.1 或更高版本才能对 Apache ZooKeeper 使用 TLS 安全。

  • 在创建或配置集群时启用 TLS 安全性。使用启用了 TLS 的 Apache Kafka 版本 2.5.1 或更高版本创建的集群自动将 TLS 安全性用于 Apache ZooKeeper 终端节点。有关设置 TLS 安全性的信息,请参阅如何开始使用加密?

  • 使用 ZooKeeper DescribeCluster 操作检索 TLS Apache 终端节点。

  • 创建 Apache ZooKeeper 配置文件以用于以下 CLI 命令: Config、ACL 和 ZooKeeper Shell。您可以使用 --zk-tls-config-file 参数,通过这些命令使用 Apache Zookeeper 配置文件。

    以下示例显示了一个典型的 Apache ZooKeeper 配置文件:

    zookeeper.ssl.client.enable=true zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty zookeeper.ssl.keystore.location=kafka.jks zookeeper.ssl.keystore.password=test1234 zookeeper.ssl.truststore.location=truststore.jks zookeeper.ssl.truststore.password=test1234
  • 对于其他命令(例如 kafka-topics),您必须使用 KAFKA_OPTS 环境变量来配置 Apache ZooKeeper 参数。以下示例说明如何配置 KAFKA_OPTS 环境变量以将 Apache ZooKeeper 参数传递到其他命令:

    export KAFKA_OPTS=" -Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty -Dzookeeper.client.secure=true -Dzookeeper.ssl.trustStore.location=/home/ec2-user/kafka.client.truststore.jks -Dzookeeper.ssl.trustStore.password=changeit"

    在配置 KAFKA_OPTS 环境变量后,您可以正常使用 CLI 命令。以下示例使用 ZooKeeper 环境变量中的 Apache KAFKA_OPTS 配置创建 Apache Kafka 主题:

    bin/kafka-topics.sh --create --zookeeper ZooKeeperTLSConnectString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopic
注意

您在 Apache ZooKeeper 配置文件中使用的参数与您在 KAFKA_OPTS 环境变量中使用的参数的名称不一致。请注意您在配置文件和 KAFKA_OPTS 环境变量中使用哪些参数时所使用的名称。

有关使用 TLS 访问您的 Apache ZooKeeper 节点的更多信息,请参阅 KIP-515:。 启用 ZK 客户端以使用新的 TLS 支持的身份验证