

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

# 主题复制权限
<a name="msk-replicator-perms-topic-replication"></a>

使用 Amazon MSK Replicator 在集群之间复制主题。向服务执行角色授予连接两个集群、管理内部复制器主题、从源主题读取数据以及将复制的数据写入目标集群的权限。

目标集群上数据主题的权限因`topicNameConfiguration`设置而异：
+ **PREFIXED\_WITH\_SOURCE\_CLUSTER\_ALIAS（默认）— 目标上复制的主题以源集群别**名作为前缀命名（例如）。`source-alias.my-topic`由于在创建时不知道完整的源别名，因此请`*.${topicPattern}`将其用作 IAM 目标数据主题资源。对于非 MSK 集群上的 Kafka ACL，请使用 MSK 集群名称的前 28 个字符作为前缀模式。
+ **相同** — 目标上复制的主题与源上复制的主题保持相同的名称。目标数据主题资源使用的模式与源数据主题资源相同。

## 服务执行角色 IAM 策略（MSK 集群）
<a name="msk-replicator-perms-topic-replication-iam"></a>

将以下策略附加到服务执行角色。将占位符值替换为您的集群名称、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 集群）
<a name="msk-replicator-perms-topic-replication-acls"></a>

当您的源或目标为自行管理的 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 | 