

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 主題複寫許可
<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 ACLs，請使用 MSK 叢集名稱的前 28 個字元做為 PREFIXED 模式。
+ **IDENTICAL** — 目標上的複寫主題會保留與來源相同的名稱。目標資料主題資源使用與來源相同的模式。

## 服務執行角色 IAM 政策 (MSK 叢集）
<a name="msk-replicator-perms-topic-replication-iam"></a>

將下列政策連接至服務執行角色。將預留位置值取代為您的叢集名稱、UUIDs和主題模式。選擇符合您`topicNameConfiguration`設定的`TargetDataTopicPermissions`陳述式。

**PREFIXED\_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 ACLs（非 MSK 叢集）
<a name="msk-replicator-perms-topic-replication-acls"></a>

當您的來源或目標是自我管理的 Apache Kafka 叢集時，請使用 CLI `kafka-acls` 設定下列 ACLs。所有 ACLs 都會使用複寫器驗證的`ALLOW`許可類型和委託人。除非另有說明，否則 ACLs會使用 `PREFIXED` 模式類型。

當涉及非 MSK 叢集時，複寫器會在 MSK 叢集上放置大部分的內部主題 (offset-syncs、檢查點、工作者群組狀態）。非 MSK 叢集僅託管活動訊號主題和資料主題。

**非 MSK 做為來源**  
當來源是自我管理叢集時，複寫器會將所有內部主題放置在 MSK 目標上。非 MSK 來源只需要活動訊號主題和讀取資料主題ACLs。


| Resource Type (資源類型) | 模式 | 作業 | 
| --- | --- | --- | 
| 叢集 | `kafka-cluster` （常值） | Create、Describe、IdempotentWrite、DescribeConfigs | 
| 主題 (heartbeat) | `__amazon_msk_replicator_` (PREFIXED) | 建立、讀取、寫入、描述、DescribeConfigs、Alter、AlterConfigs | 
| 主題 （資料） | 每個主題的 PREFIXED 或 LITERAL | 讀取、描述、DescribeConfigs | 

**非 MSK 做為目標**  
當目標為自我管理叢集時，複寫器會將所有內部主題放置在 MSK 來源上。非 MSK 目標只需要活動訊號主題和寫入資料主題ACLs。資料主題模式取決於您的`topicNameConfiguration`設定。


| Resource Type (資源類型) | 模式 | 作業 | 
| --- | --- | --- | 
| 叢集 | `kafka-cluster` （常值） | Create、Describe、IdempotentWrite、DescribeConfigs | 
| 主題 (heartbeat) | `__amazon_msk_replicator_` (PREFIXED) | 建立、讀取、寫入、描述、DescribeConfigs、Alter、AlterConfigs | 
| 主題 （複寫的活動訊號） | `${first28CharsOfSourceClusterName}` (PREFIXED) | 建立、讀取、寫入、描述、DescribeConfigs、Alter、AlterConfigs | 
| 主題 （資料） | `${first28CharsOfSourceClusterName}` (PREFIXED) | 建立、寫入、描述、DescribeConfigs、Alter、AlterConfigs | 

如果您使用`IDENTICAL`主題命名，請將資料主題資料列取代為以下內容。


| Resource Type (資源類型) | 模式 | 作業 | 
| --- | --- | --- | 
| 主題 （資料） | 每個主題的 PREFIXED 或 LITERAL （與來源相同的名稱） | 建立、寫入、描述、DescribeConfigs、Alter、AlterConfigs | 