本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
控制对 Apache ZooKeeper 的访问
出于安全原因,您可以限制对属于 ZooKeeper 一部分的 Apache Amazon MSK 集群 节点的访问。要限制对节点的访问,您可以为节点分配单独的安全组。然后,您可以决定有权访问该安全组的人员。
将 Apache ZooKeeper 节点放在单独的安全组中
-
获取集群的 Apache ZooKeeper 连接字符串。要了解如何操作,请参阅获取 ZooKeeper 的 Apache Amazon MSK 集群 连接字符串。连接字符串包含 Apache ZooKeeper 节点的 DNS 名称。
-
使用
host
或ping
等工具将您在上一步中获得的 DNS 名称转换为 IP 地址。稍后您需要在此过程中使用这些 IP 地址,因此请保存这些地址。 -
保存 Apache ZooKeeper 节点的 IP 地址,因为您需要在本过程的后面部分中使用它们。
-
登录 AWS 管理控制台并通过以下网址打开 Amazon EC2 控制台:https://console.amazonaws.cn/ec2/
。 -
在左侧窗格的 Network & Security (网络与安全性) 下,选择 Network Interfaces (网络接口)。
-
在网络接口表上方的搜索字段中,键入集群名称,然后键入 return。这会将表中显示的网络接口数限制为与您的集群关联的接口。
-
选中与列表中的第一个网络接口对应的行开头处的复选框。
-
在页面底部的详细信息窗格中,查找 Primary private IPv4 IP (主要私有 IP)。如果此 IP 地址与您在此过程的第一步中获得的某个 IP 地址匹配,则意味着此网络接口将分配给属于集群一部分的 Apache ZooKeeper 节点。否则,取消选中此网络接口旁边的复选框,然后选择列表中的下一个网络接口。选择网络接口的顺序无关紧要。在后续步骤中,您将对分配给 Apache ZooKeeper 节点的所有网络接口执行相同的操作。
-
当您选择与 Apache ZooKeeper 节点对应的网络接口时,请选择页面顶部的 Actions (操作) 菜单,然后选择 Change Security Groups (更改安全组)。将新安全组分配给此网络接口。有关创建安全组的信息,请参阅 Amazon VPC 文档中的创建安全组
。 -
重复上一步,将相同的新安全组分配给与集群的 Apache ZooKeeper 节点关联的所有网络接口。
-
现在,您可以选择有权访问此新安全组的人员。有关设置安全组规则的信息,请参阅 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 环境变量中的 ApacheKAFKA_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 支持的身份验证