View a markdown version of this page

使用自管理 Apache Kafka 集群为 MSK Replicator 设置先决条件 - Amazon Managed Streaming for Apache Kafka

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

使用自管理 Apache Kafka 集群为 MSK Replicator 设置先决条件

创建 IAM 执行角色

使用的信任策略创建 IAM 角色kafka.amazonaws.com。附上AWSMSKReplicatorExecutionRole托管策略。托管策略授予 Replicator 所需的集群、主题和消费者组级 Kafka 权限,但不包括身份验证和凭据所需的 AWS Secrets Manager 或 AWS KMS 权限。 SASL/SCRAM CMK-encrypted 要添加的内联策略片段,请参阅。mTL 和客户管理密钥的其他 SER 权限 SASL/SCRAM SASL/OAUTHBEARER

信任策略示例:

{ "Statement": [{ "Effect": "Allow", "Principal": {"Service": "kafka.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

配置 SASL/SCRAM 用户和 ACL 权限

在自建的 Kafka 集群上创建专用 SCRAM 用户。需要以下 ACL 权限:

  1. 阅读、描述所有主题

  2. 阅读、描述所有消费群体

  3. 对群集资源进行描述

kafka-acls.sh 命令示例:

# Grant Read and Describe on all topics kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Read --operation Describe \ --topic '*' # Grant Read and Describe on all consumer groups kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Read --operation Describe \ --group '*' # Grant Describe on cluster kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Describe --cluster

在自建集群上配置 mTLS

使用在自我管理的 Kafka 代理上配置 SSL 侦听器。ssl.client.auth=required代理的信任库必须包含签署您将用于 MSK Replicator 的客户端证书的 CA 证书。

向源自客户端证书的可分辨名称 (DN) 的 Kafka 主体授予 ACL 权限。所需的权限是:对所有主题进行读取和描述,对所有使用者组进行读取和描述,以及对集群资源进行描述。

在自建集群上配置 SASL/OAUTHBEARER (OAuth)

使用 SASL/OAUTHBEARER,MSK Replicator 从您的身份提供商 (IDP) 获取访问令牌,并在握手期间将其提供给您的自我管理的 Kafka 集群(RFC 7628)。 SASL/OAUTHBEARER 使用已在中OAUTHBEARER启用的SASL_SSL监听器配置您的经纪商sasl.enabled.mechanisms,并配置您的 IDP 发行的代币的经纪人端验证。

向 Kafka 主体授予您的 IDP 将访问令牌映射到 MSK Replicator 在源集群上所需的 ACL 权限。

MSK 复制器支持以下获取访问令牌的机制。创建复制器时可以选择一个(参见CreateReplicator 自建的 Kafka 集群的 API 示例)。

  • 客户凭证 — 标准client_credentials补助金(RFC 6749 第 4.4 节)。您提供了 a client_id 和 client_secret in AWS Secrets Manager。将此机制用于 Okta、微软 Entra ID、Keycloak 和谷歌等 IdP。 PingFederate

  • IAM JWT 持有者 — JWT 持有者断言补助金 (RFC 7523)。MSK Replicator 使用服务执行角色的 AWS 身份来获取已签名的 JWT,该JWT作为断言发送到令牌端点。无需共享密钥,但如果您的 IDP 要求客户端也进行身份验证,则可以选择提供客户端凭证。

  • 客户端凭证断言 — 使用 JWT 客户端断言的client_credentials授权(RF 7521/7523 C 第 2.2 节)。服务执行角色的签名 JWT 用作对客户端client_assertion进行身份验证,无需共享密钥。

以下要求适用于令牌端点:

  • tokenEndpointUrl必须使用 HTTPS 方案并指定主机名(不允许使用 IP 地址文字,因此可以执行 TLS 主机名验证)。

  • 必须可从您为复制器提供的 VPC 子网访问令牌终端节点。请参阅配置网络连接。

  • 如果您的 IDP 出示了私有 CA 颁发的证书,请将 CA 证书存储在中 AWS Secrets Manager 并在创建复制器tokenEndpointTlsCertificateArn时参考该证书。

在自建集群上配置 SSL

在您的经纪人上配置 SSL 侦听器。对于公共信任的证书,无需进行其他配置。对于私有或自签名证书,请将完整的 CA 证书链包含在存储在 Secre AWS ts Manager 中的密钥中。

将凭据存储在 AWS Secrets Manager

使用适合您的身份验证类型的键值对在 S AWS ecrets Manager 中创建 “其他(不是 RDS/Redshift)” 类型的密钥。

对于 SASL/SCRAM:

  1. username— 自管理集群的 SCRAM 用户名

  2. password— 自管理集群的 SCRAM 密码

  3. certificate— CA 证书链(PEM 格式; private/self签名证书为必填项)

对于 mTL:

  1. certificate— PEM-encoded 客户证书链

  2. privateKey— PEM-encoded 私钥

  3. privateKeyPassword—(可选)私钥的密码,仅加密的 PKCS8 密钥需要密码

对于 SASL/OAUTHBEARER:

密钥是客户端证书机制所必需的,对于 IAM JWT 持有者和客户端凭证断言机制,密钥是可选的(仅当您的 IDP 要求客户端也进行身份验证时才提供密钥)。秘密是一个由键值对组成的平面 JSON 对象。MSK Replicator 可识别以下密钥:

  • client_id— OAuth 客户端标识符。客户端凭证机制所必需的。

  • client_secret— OAuth 客户端密钥。客户端凭证机制所必需的。

  • custom_param.<name>—(可选)附加到令牌请求的附加表单参数,适用于需要超出标准 OAuth 设置的参数的 IdP。为每个参数添加一个密钥(例如,custom_param.resource)。

  • custom_header.<name>—(可选)与令牌请求一起发送的额外 HTTP 标头。为每个标题添加一个密钥(例如,custom_header.X-Custom)。

  • extension.<name>—(可选) SASL/OAUTHBEARER 握手期间发送给Kafka代理的SASL扩展,适用于在身份验证期间需要额外键值对的Kafka提供商。为每个分机添加一个密钥。

除client_id和client_secret之外不使用这些前缀之一的密钥将被忽略。以下是客户端凭证机制的示例密钥值:

{ "client_id": "my-oauth-client", "client_secret": "example-client-secret", "custom_param.resource": "urn:example:kafka" }
注意

MSK Replicator 拒绝参数名称与标准 OAuth 参数(例如、、、、、grant_typeclient_idclient_secretclient_assertion、client_assertion_type和)冲突的custom_param.条目。assertion scope它还拒绝Host、Authorization和Content-Type等限制性custom_header.参赛作品。

配置网络连接

MSK Replicator 需要与您的自我管理的 Kafka 集群建立网络连接。支持的选项:

  • AWS Site-to-Site VPN — 通过互联网将本地网络连接到您的 VPC。

  • AWS 直接连接 — 建立从您的场所到... 的专用网络连接 AWS。

如果您使用 SASL/OAUTHBEARER,则还必须可以从您为复制器提供的 VPC 子网访问令牌终端节点。对于互联网托管的 IDP,这通常需要互联网网关、NAT 网关和路由表条目;对于本地或私有 IDP,使用 AWS Site-to-Site VPN 或直接连接。 AWS 令牌端点不得解析为环回地址、本地链接地址或 AWS 元数据地址。

配置安全组

确保安全组允许身份验证侦听器使用的端口上的 MSK Replicator 和自管理群集之间的流量。更新 VPC 安全组的入站规则和自建集群防火墙上的出站规则。