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

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

公有访问权限

亚马逊 MSK 允许您选择对运行 Apache Kafka 2.6.0 或更高版本的 MSK 集群的经纪商开启公开访问权限。出于安全原因,您无法在创建 MSK 集群时启用公有访问。但是,您可以更新现有集群以使其公开访问。您还可以创建新集群,然后对其进行更新以使其公开访问。

您可以在没有额外费用的情况下启用 MSK 群集的公共访问权限,但是标准Amazon数据传输成本适用于进出集群的数据传输。有关定价的信息,请参阅Amazon EC2 按需定价.

要启用对集群的公共访问,请首先确保群集满足以下所有条件:

  • 与集群关联的子网必须是公有的。这意味着子网必须具有连接 Internet 网关的关联路由表。有关如何创建和连接 Internet 网关的信息,请参阅Internet 网关在 Amazon VPC 用户指南中。

  • 必须关闭未经身份验证的访问控制,并且必须至少启用以下访问控制方法之一:SASL/IAM、SASL/SCRAM、MTL。有关如何更新集群的访问控制方法的信息,请参阅更新集群的安全设置.

  • 必须启用群集内的加密。在创建集群时,默认设置为开设置。无法在集群中为关闭状态下创建的集群启用加密。因此,无法为在集群中关闭加密的情况下创建的集群启用公共访问权限。

  • 经纪商和客户之间的明文流量必须关闭。有关如何在打开的情况下将其关闭的信息,请参阅更新集群的安全设置.

  • 如果您使用的是 SASL/SCRAM 或 MTL 访问控制方法,则必须为集群设置 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,或者使用亚马逊 MSK API 来启用公共访问权限。启用对集群的公共访问权限后,您可以为其获取公共引导经纪人字符串。有关获取集群的引导代理的信息,请参阅为亚马逊 MSK 集群获取引导经纪商.

重要

除了开启公共访问之外,还要确保群集的安全组具有允许从您的 IP 地址进行公共访问的入站 TCP 规则。我们建议您尽可能使这些规则具有限制性。有关安全组和入站规则的信息,请参阅您的 VPC 的安全组(在 Amazon VPC 用户指南 中)。有关端口号,请参阅端口信息. 有关如何更改集群安全组的说明,请参阅更改 Amazon MSK 集群的安全组.

注意

如果您使用以下说明启用公共访问权限但仍然无法访问集群,请参阅无法访问已开启公共访问权限的集群.

使用控制台启用公有访问

  1. 登录到Amazon Web Services Management Console,然后在以下位置打开亚马逊 MSK 控制台https://console.aws.amazon.com/msk/home?region=us-east-1#/home/.

  2. 在集群列表中,选择要启用公有访问的集群。

  3. 详细信息集群的页面中,找到Network settings (网络设置)部分。

  4. 选择编辑公有访问.

使用启用公有访问Amazon CLI

  1. 运行以下命令Amazon CLI命令,替换ClusterArn当前群集版本使用 ARN 和集群的当前版本。要查找集群的当前版本,请使用DescribeCluster操作或描述集群 Amazon CLI命令。示例版本是 KTVPDKIKX0DER

    aws kafka update-connectivity --cluster-arn ClusterArn --current-version Current-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"}}'
  2. 要获取 update-connectivity 操作的结果,请运行以下命令,将 ClusterOperationArn 替换为您在 update-connectivity 命令的输出中获得的 ARN。

    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 命令。

使用亚马逊 MSK API 开启公共访问

  • 要使用 API 启用或关闭集群的公共访问权限,请参阅更新连接.

注意

出于安全考虑,亚马逊 MSK 不允许公开访问 Apache ZooKeeper 节点。有关如何从内部控制对 MSK 集群的 Apache ZooKeeper 节点的访问的信息Amazon,请参阅控制对 Apache ZooKeeper 的访问.