本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用自管理 Apache Kafka 集群为 MSK Replicator 设置先决条件
创建 IAM 执行角色
使用的信任策略创建 IAM 角色kafka.amazonaws.com。附上AWSMSKReplicatorExecutionRole托管策略。托管策略授予 Replicator 所需的集群、主题和消费者组级 Kafka 权限,但不包括身份验证和凭据所需的 Amazon Secrets Manager 或 Amazon 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 权限:
阅读、描述所有主题
阅读、描述所有消费群体
对群集资源进行描述
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 节)。您提供了 aclient_id和client_secretin Amazon Secrets Manager。将此机制用于 Okta、微软 Entra ID、Keycloak 和谷歌等 IdP。 PingFederateIAM JWT 持有者 — JWT 持有者断言补助金 (RFC 7523)。MSK Replicator 使用服务执行角色的 Amazon 身份来获取已签名的 JWT,该JWT作为断言发送到令牌端点。无需共享密钥,但如果您的 IDP 要求客户端也进行身份验证,则可以选择提供客户端凭证。
客户端凭证断言 — 使用 JWT 客户端断言的
client_credentials授权(RF 7521/7523 C 第 2.2 节)。服务执行角色的签名 JWT 用作对客户端client_assertion进行身份验证,无需共享密钥。
以下要求适用于令牌端点:
tokenEndpointUrl必须使用 HTTPS 方案并指定主机名(不允许使用 IP 地址文字,因此可以执行 TLS 主机名验证)。必须可从您为复制器提供的 VPC 子网访问令牌终端节点。请参阅配置网络连接。
如果您的 IDP 出示了私有 CA 颁发的证书,请将 CA 证书存储在中 Amazon Secrets Manager 并在创建复制器
tokenEndpointTlsCertificateArn时参考该证书。
在自建集群上配置 SSL
在您的经纪人上配置 SSL 侦听器。对于公共信任的证书,无需进行其他配置。对于私有或自签名证书,请将完整的 CA 证书链包含在存储在 Secre Amazon ts Manager 中的密钥中。
将凭据存储在 Amazon Secrets Manager
使用适合您的身份验证类型的键值对在 S Amazon ecrets Manager 中创建 “其他(不是 RDS/Redshift)” 类型的密钥。
对于 SASL/SCRAM:
username— 自管理集群的 SCRAM 用户名password— 自管理集群的 SCRAM 密码certificate— CA 证书链(PEM 格式; private/self签名证书为必填项)
对于 mTL:
certificate— PEM-encoded 客户证书链privateKey— PEM-encoded 私钥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 集群建立网络连接。支持的选项:
Amazon Site-to-Site VPN — 通过互联网将本地网络连接到您的 VPC。
Amazon 直接连接 — 建立从您的场所到... 的专用网络连接 Amazon。
如果您使用 SASL/OAUTHBEARER,则还必须可以从您为复制器提供的 VPC 子网访问令牌终端节点。对于互联网托管的 IDP,这通常需要互联网网关、NAT 网关和路由表条目;对于本地或私有 IDP,使用 Amazon Site-to-Site VPN 或直接连接。 Amazon 令牌端点不得解析为环回地址、本地链接地址或 Amazon 元数据地址。
配置安全组
确保安全组允许身份验证侦听器使用的端口上的 MSK Replicator 和自管理群集之间的流量。更新 VPC 安全组的入站规则和自建集群防火墙上的出站规则。