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

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

控制对 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 节点对应的网络接口时,选择页面顶部的 “操作” 菜单,然后选择 “更改安全组”。将新安全组分配给此网络接口。有关创建安全组的信息,请参阅 Amazon VPC 文档中的创建安全组

  9. 重复前面的步骤,为与集群的 Apache ZooKeeper 节点关联的所有网络接口分配相同的新安全组。

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

在 Apache 中使用 TLS 安全性 ZooKeeper

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

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

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

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

  • 创建 Apache ZooKeeper 配置文件以与kafka-configs.shkafka-acls.sh工具或 sh ZooKeeper ell 一起使用。对于每个工具,您都使用--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 命令。以下示例使用KAFKA_OPTS环境变量中的 Apache ZooKeeper 配置创建 Apache Kafka 主题:

    <path-to-your-kafka-installation>/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 的新身份验证