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

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

公有访问权限

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 集群的安全组

注意

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

使用控制台开启公共访问权限
  1. 登录并打开亚马逊 MSK 控制台,网址为 https://console.aws.amazon.com/msk/home?region=us-east-1#/home/。 Amazon Web Services Management Console

  2. 在集群列表中,选择要为其开启公共访问权限的集群。

  3. 选择属性选项卡,然后找到网络设置部分。

  4. 选择编辑公共访问权限

使用开启公共访问权限 Amazon CLI
  1. 运行以下 Amazon CLI 命令,将 “当前集群版本” 替换ClusterArn为 ARN 和集群的当前版本。要查找集群的当前版本,请使用DescribeCluster操作或 desc ribe- Amazon CLI cluster 命令。示例版本是 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替换为在命令输出中获得的 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 开启公共访问权限
注意

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