本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
主题复制权限
使用 Amazon MSK Replicator 在集群之间复制主题。向服务执行角色授予连接两个集群、管理内部复制器主题、从源主题读取数据以及将复制的数据写入目标集群的权限。
目标集群上数据主题的权限因topicNameConfiguration设置而异:
PREFIXED_WITH_SOURCE_CLUSTER_ALIAS(默认)— 目标上复制的主题以源集群别名作为前缀命名(例如)。
source-alias.my-topic由于在创建时不知道完整的源别名,因此请*.${topicPattern}将其用作 IAM 目标数据主题资源。对于非 MSK 集群上的 Kafka ACL,请使用 MSK 集群名称的前 28 个字符作为前缀模式。相同 — 目标上复制的主题与源上复制的主题保持相同的名称。目标数据主题资源使用的模式与源数据主题资源相同。
服务执行角色 IAM 策略(MSK 集群)
将以下策略附加到服务执行角色。将占位符值替换为您的集群名称、UUID 和主题模式。选择与您的topicNameConfiguration设置相匹配的TargetDataTopicPermissions语句。
前缀_WITH_SOURCE_CLUSTER_ALIAS(默认)
目标系统上复制的主题以源群集别名为前缀(例如source-alias.my-topic)。由于复制器创建后才知道完整的别名,因此在目标数据主题资源中使用带有主题模式(例如*.${topicPattern})的通配符前缀。IAM 支持在资源 ARN 中使用多个通配符。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ClusterPermissions", "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:DescribeCluster", "kafka-cluster:WriteDataIdempotently" ], "Resource": [ "arn:aws:kafka:${region}:${account}:cluster/${SourceClusterName}/${SourceClusterUUID}", "arn:aws:kafka:${region}:${account}:cluster/${TargetClusterName}/${TargetClusterUUID}" ] }, { "Sid": "SourceInternalTopicPermissions", "Effect": "Allow", "Action": [ "kafka-cluster:CreateTopic", "kafka-cluster:ReadData", "kafka-cluster:WriteData", "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:AlterTopic", "kafka-cluster:AlterTopicDynamicConfiguration" ], "Resource": [ "arn:aws:kafka:${region}:${account}:topic/${SourceClusterName}/${SourceClusterUUID}/*__amazon_msk_replicator_*", "arn:aws:kafka:${region}:${account}:topic/${SourceClusterName}/${SourceClusterUUID}/mskr-offset-syncs.*", "arn:aws:kafka:${region}:${account}:topic/${SourceClusterName}/${SourceClusterUUID}/*.checkpoints.internal" ] }, { "Sid": "SourceDataTopicPermissions", "Effect": "Allow", "Action": [ "kafka-cluster:ReadData", "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration" ], "Resource": [ "arn:aws:kafka:${region}:${account}:topic/${SourceClusterName}/${SourceClusterUUID}/${topicPattern}" ] }, { "Sid": "TargetInternalTopicPermissions", "Effect": "Allow", "Action": [ "kafka-cluster:CreateTopic", "kafka-cluster:ReadData", "kafka-cluster:WriteData", "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:AlterTopic", "kafka-cluster:AlterTopicDynamicConfiguration" ], "Resource": [ "arn:aws:kafka:${region}:${account}:topic/${TargetClusterName}/${TargetClusterUUID}/*__amazon_msk_replicator_*", "arn:aws:kafka:${region}:${account}:topic/${TargetClusterName}/${TargetClusterUUID}/mskr-offset-syncs.*", "arn:aws:kafka:${region}:${account}:topic/${TargetClusterName}/${TargetClusterUUID}/*.checkpoints.internal" ] }, { "Sid": "TargetDataTopicPermissions", "Effect": "Allow", "Action": [ "kafka-cluster:CreateTopic", "kafka-cluster:WriteData", "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration" ], "Resource": [ "arn:aws:kafka:${region}:${account}:topic/${TargetClusterName}/${TargetClusterUUID}/*.${topicPattern}" ] }, { "Sid": "TargetGroupPermissions", "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:${region}:${account}:group/${TargetClusterName}/${TargetClusterUUID}/*__amazon_msk_replicator_*" ] } ] }
相同
目标上复制的主题与源上复制的主题的名称相同。将该TargetDataTopicPermissions语句替换为以下内容:
{ "Sid": "TargetDataTopicPermissions", "Effect": "Allow", "Action": [ "kafka-cluster:CreateTopic", "kafka-cluster:WriteData", "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration" ], "Resource": [ "arn:aws:kafka:${region}:${account}:topic/${TargetClusterName}/${TargetClusterUUID}/${topicPattern}" ] }
${topicPattern}替换为为复制配置的主题名称或模式(例如,my-app-*或特定的主题名称)。
注意
两个 MSK 集群都需要所有内部主题(*__amazon_msk_replicator_*mskr-offset-syncs.*、和*.checkpoints.internal)的权限。使用此策略可以覆盖两个集群,无论哪个集群是非 MSK。
Kafka ACL(非 MSK 集群)
当您的源或目标为自行管理的 Apache Kafka 集群时,请使用 CLI 配置以下 ACL。kafka-acls所有 ACL 都使用您的复制器进行身份验证的ALLOW权限类型和主体。除非另有说明,否则 ACL 使用PREFIXED模式类型。
当涉及非 MSK 集群时,复制器会将大多数内部主题(偏移同步、检查点、工作组状态)放在 MSK 集群上。非 MSK 集群仅托管心跳主题和数据主题。
Non-MSK 作为来源
当源是自行管理的集群时,复制器会将所有内部主题放在 MSK 目标上。非 MSK 源只需要心跳主题和读取数据主题的 ACL。
| 资源类型 | 模式 | 操作 |
|---|---|---|
Cluster |
|
创建、描述、 IdempotentWrite、 DescribeConfigs |
话题(心跳) |
|
创建、读取、写入、描述 DescribeConfigs、更改、 AlterConfigs |
主题(数据) |
每个主题都有前缀或字面意思 |
阅读、描述、 DescribeConfigs |
Non-MSK 作为目标
当目标是自我管理的集群时,复制器会将所有内部主题放在 MSK 源上。非 MSK 目标只需要心跳主题和写入数据主题的 ACL。数据主题模式取决于您的topicNameConfiguration设置。
| 资源类型 | 模式 | 操作 |
|---|---|---|
Cluster |
|
创建、描述、 IdempotentWrite、 DescribeConfigs |
话题(心跳) |
|
创建、读取、写入、描述 DescribeConfigs、更改、 AlterConfigs |
主题(复制的心跳) |
|
创建、读取、写入、描述 DescribeConfigs、更改、 AlterConfigs |
主题(数据) |
|
创建、编写、描述、 DescribeConfigs、更改、 AlterConfigs |
如果您使用IDENTICAL主题命名,请将数据主题行替换为以下内容。
| 资源类型 | 模式 | 操作 |
|---|---|---|
主题(数据) |
每个主题都有前缀或字面意思(与 source 同名) |
创建、编写、描述、 DescribeConfigs、更改、 AlterConfigs |