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

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

控制对 Apache ZooKeeper 的访问

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

将 Apache ZooKeeper 节点置于单独的安全组中

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

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

  3. 登录 Amazon Web Services Management Console,打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

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

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

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

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

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

  10. 现在,您可以选择有权访问此新安全组的人员。有关设置安全组规则的信息,请参阅。添加、删除和更新规则在 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 或更高版本创建的集群会自动对 Apache ZooKeeper 终端节点使用 TLS 安全性。有关设置 TLS 安全性的信息,请参阅。如何开始使用加密?.

  • ZooKeeper 用DescribeClusteroperation.

  • 创建 Apache ZooKeeper 配置文件,以便与以下 CLI 命令一起使用:Config、ACL 和 ZooKeeper 壳牌。你可以使用 Apache Zookeeper 配置文件与这些命令一起使用--zk-tls-config-file参数。

    以下示例显示了典型的 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 从KAFKA_OPTS环境变量:

    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 支持的身份验证.