本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
控制对 Apache ZooKeeper 的访问
出于安全性原因,您可以限制对属于 Amazon MSK 集群的 Apache ZooKeeper 节点的访问。要限制对节点的访问,您可以为节点分配单独的安全组。然后,您可以决定有权访问该安全组的人员。
将 Apache ZooKeeper 节点置于单独的安全组中
-
获取集群的 Apache ZooKeeper 连接字符串。要了解如何操作,请参阅获取 Amazon MSK 集群的 Apache ZooKeeper 连接字符串。连接字符串包含 Apache ZooKeeper 节点的 DNS 名称。
-
使用
host
或ping
等工具将您在上一步中获得的 DNS 名称转换为 IP 地址。稍后您需要在此过程中使用这些 IP 地址,因此请保存这些地址。 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 在左侧窗格的 Network & Security (网络与安全性) 下,选择 Network Interfaces (网络接口)。
-
在网络接口表上方的搜索字段中,键入集群名称,然后键入 return。这会将表中显示的网络接口数限制为与您的集群关联的接口。
-
选中与列表中的第一个网络接口对应的行开头处的复选框。
-
在页面底部的详细信息窗格中,查找 Primary private IPv4 IP (主要私有 IPv4 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 或更高版本创建的集群会自动对 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 支持的身份验证