本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
公有访问权限
Amazon MSK 允许您选择开启对运行 Apache Kafka 2.6.0 或更高版本的 MSK 集群代理的公共访问权限。出于安全考虑,您在创建 MSK 集群时无法开启公共访问权限。但是,您可以更新现有集群以使其可供公开访问。您还可以创建一个新集群,然后对其进行更新,使其可供公开访问。
您可以开启对 MSK 集群的公共访问权限,无需支付额外费用,但是进出集群的数据需要支付标准 Amazon 的数据传输费用。有关定价的信息,请参阅 Amazon EC2 按需定价
要开启对集群的公共访问权限,请先确保集群满足以下所有条件:
与集群关联的子网必须是公有子网。这意味着子网必须具有关联的路由表并连接了互联网网关。有关如何创建和附加互联网网关的信息,请参阅《Amazon VPC 用户指南》中的互联网网关。
未经身份验证的访问控制必须关闭,并且必须至少开启以下访问控制方法之一:SASL/IAM、SASL/SCRAM、mTLS。有关如何更新集群的访问控制方法的信息,请参阅 更新集群的安全设置。
-
必须开启集群内的加密。开启设置是创建集群时的默认设置。对于在集群中的加密处于关闭状态时创建的集群,无法为其开启加密。因此,对于在集群中的加密处于关闭状态时创建的集群,无法为其开启公共访问权限。
-
代理和客户端之间的明文流量必须关闭。有关在其开启时如何关闭的信息,请参阅 更新集群的安全设置。
-
如果您使用的是 SASL/SCRAM 或 mTLS 访问控制方法,则必须为集群设置 Apache Kafka ACL。为集群设置 Apache Kafka ACL 后,更新集群的配置,以将该集群的属性
allow.everyone.if.no.acl.found
设置为 false。有关如何更新集群配置的信息,请参阅 Amazon MSK 配置操作。如果您使用的是 IAM 访问控制并想要应用授权策略或更新授权策略,请参阅 IAM 访问控制。有关 Apache Kafka ACL 的信息,请参阅 Apache Kafka ACL。
在您确保 MSK 集群满足上面列出的条件后,您可以使用 Amazon Web Services Management Console Amazon CLI、或 Amazon MSK API 开启公共访问权限。开启集群的公共访问权限后,您可以为其获取一个公共引导代理字符串。有关获取集群引导代理的信息,请参阅 获取 Amazon MSK 集群的引导代理。
重要
除了开启公共访问权限外,还要确保集群的安全组具有允许从您的 IP 地址进行公共访问的入站 TCP 规则。因此,建议您尽可能严格设置这些规则。有关安全组和入站规则的信息,请参阅《Amazon VPC 用户指南》中的 您的 VPC 的安全组。有关端口号,请参阅 端口信息。有关如何更改集群安全组的说明,请参阅 更改 Amazon MSK 集群的安全组。
注意
如果您按照以下说明开启公共访问权限,但仍无法访问集群,请参阅 无法访问已开启公共访问权限的集群。
使用控制台开启公共访问权限
登录并打开亚马逊 MSK 控制台,网址为 https://console.aws.amazon.com/msk/home?region=us-east-1#/home/
。 Amazon Web Services Management Console 在集群列表中,选择要为其开启公共访问权限的集群。
-
选择属性选项卡,然后找到网络设置部分。
-
选择编辑公共访问权限。
使用开启公共访问权限 Amazon CLI
运行以下 Amazon CLI 命令,将 “
当前集群版本” 替换
的当前版本。要查找集群的当前版本,请使用DescribeCluster操作或 desc ribe-ClusterArn
为 ARN 和集群Amazon CLI cluster 命令。示例版本是 KTVPDKIKX0DER
。aws kafka update-connectivity --cluster-arn
ClusterArn
--current-versionCurrent-Cluster-Version
--connectivity-info '{"PublicAccess": {"Type": "SERVICE_PROVIDED_EIPS"}}'该
update-connectivity
命令的输出如以下 JSON 示例所示。{ "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef" }
注意
要关闭公共访问权限,请使用类似的 Amazon CLI 命令,但改为使用以下连接信息:
'{"PublicAccess": {"Type": "DISABLED"}}'
-
要获得
update-connectivity
操作结果,请运行以下命令,ClusterOperationArn
替换为在命令输出中获得的 ARN。update-connectivity
aws kafka describe-cluster-operation --cluster-operation-arn
ClusterOperationArn
该
describe-cluster-operation
命令的输出如以下 JSON 示例所示。{ "ClusterOperationInfo": { "ClientRequestId": "982168a3-939f-11e9-8a62-538df00285db", "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2", "CreationTime": "2019-06-20T21:08:57.735Z", "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef", "OperationState": "UPDATE_COMPLETE", "OperationType": "UPDATE_CONNECTIVITY", "SourceClusterInfo": { "ConnectivityInfo": { "PublicAccess": { "Type": "DISABLED" } } }, "TargetClusterInfo": { "ConnectivityInfo": { "PublicAccess": { "Type": "SERVICE_PROVIDED_EIPS" } } } } }
如果
OperationState
的值为UPDATE_IN_PROGRESS
,请等待一段时间,然后再次运行describe-cluster-operation
命令。
使用 Amazon MSK API 开启公共访问权限
要使用 API 开启或关闭集群的公共访问权限,请参阅UpdateConnectivity。
注意
出于安全考虑,Amazon MSK 不允许公众访问 Apache 节点 ZooKeeper 。有关如何从内部控制对 MSK 集群的 Apache ZooKeeper 节点的访问的信息 Amazon,请参阅。控制对 Apache 的访问权限 ZooKeeper