View a markdown version of this page

主题复制权限 - Amazon Managed Streaming for Apache Kafka

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

主题复制权限

使用 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

kafka-cluster(字面意思)

创建、描述、 IdempotentWrite、 DescribeConfigs

话题(心跳)

__amazon_msk_replicator_(前缀)

创建、读取、写入、描述 DescribeConfigs、更改、 AlterConfigs

主题(数据)

每个主题都有前缀或字面意思

阅读、描述、 DescribeConfigs

Non-MSK 作为目标

当目标是自我管理的集群时,复制器会将所有内部主题放在 MSK 源上。非 MSK 目标只需要心跳主题和写入数据主题的 ACL。数据主题模式取决于您的topicNameConfiguration设置。

资源类型 模式 操作

Cluster

kafka-cluster(字面意思)

创建、描述、 IdempotentWrite、 DescribeConfigs

话题(心跳)

__amazon_msk_replicator_(前缀)

创建、读取、写入、描述 DescribeConfigs、更改、 AlterConfigs

主题(复制的心跳)

${first28CharsOfSourceClusterName}(前缀)

创建、读取、写入、描述 DescribeConfigs、更改、 AlterConfigs

主题(数据)

${first28CharsOfSourceClusterName}(前缀)

创建、编写、描述、 DescribeConfigs、更改、 AlterConfigs

如果您使用IDENTICAL主题命名,请将数据主题行替换为以下内容。

资源类型 模式 操作

主题(数据)

每个主题都有前缀或字面意思(与 source 同名)

创建、编写、描述、 DescribeConfigs、更改、 AlterConfigs