

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 주제 복제 권한
<a name="msk-replicator-perms-topic-replication"></a>

Amazon MSK Replicator를 사용하여 클러스터 간에 주제를 복제합니다. 서비스 실행 역할에 두 클러스터에 연결하고, 내부 복제기 주제를 관리하고, 소스 주제에서 데이터를 읽고, 복제된 데이터를 대상 클러스터에 쓸 수 있는 권한을 부여합니다.

대상 클러스터의 데이터 주제에 대한 권한은 `topicNameConfiguration` 설정에 따라 다릅니다.
+ **PREFIXED\_WITH\_SOURCE\_CLUSTER\_ALIAS**(기본값) - 대상의 복제된 주제는 소스 클러스터 별칭을 접두사(예: )로 사용하여 이름이 지정됩니다`source-alias.my-topic`. 생성 시 전체 소스 별칭을 알 수 없으므로를 IAM 대상 데이터 주제 리소스`*.${topicPattern}`로 사용합니다. 비 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_*"
            ]
        }
    ]
}
```

**IDENTICAL**  
대상의 복제된 주제는 소스와 동일한 이름을 유지합니다. `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 클러스터인 경우 `kafka-acls` CLI를 사용하여 다음 ACLs을 구성합니다. 모든 ACLs `ALLOW` 권한 유형과 복제기가 인증하는 보안 주체를 사용합니다. 달리 명시되지 않는 한 ACLs `PREFIXED` 패턴 유형을 사용합니다.

비 MSK 클러스터가 관련된 경우 복제기는 대부분의 내부 주제(오프셋 동기화, 체크포인트, 작업자 그룹 상태)를 MSK 클러스터에 배치합니다. 비 MSK 클러스터는 하트비트 주제 및 데이터 주제만 호스팅합니다.

**소스로 비 MSK**  
소스가 자체 관리형 클러스터인 경우 복제기는 모든 내부 주제를 MSK 대상에 배치합니다. 비 MSK 소스는 하트비트 주제 및 데이터 주제 읽기에만 ACLs 필요합니다.


| 리소스 유형 | 패턴 | 운영 | 
| --- | --- | --- | 
| Cluster | `kafka-cluster` (리터럴) | 생성, 설명, IdempotentWrite, DescribeConfigs | 
| 주제(하트비트) | `__amazon_msk_replicator_` (수정됨) | 생성, 읽기, 쓰기, 설명, DescribeConfigs, 변경, AlterConfigs | 
| 주제(데이터) | 주제당 PREFIXED 또는 LITERAL | 읽기, 설명, DescribeConfigs | 

**대상으로서 비MSK**  
대상이 자체 관리형 클러스터인 경우 복제기는 모든 내부 주제를 MSK 소스에 배치합니다. 비 MSK 대상에는 하트비트 주제 및 데이터 주제 작성에 대한 ACLs만 필요합니다. 데이터 주제 패턴은 `topicNameConfiguration` 설정에 따라 다릅니다.


| 리소스 유형 | 패턴 | 운영 | 
| --- | --- | --- | 
| Cluster | `kafka-cluster` (리터럴) | 생성, 설명, IdempotentWrite, DescribeConfigs | 
| 주제(하트비트) | `__amazon_msk_replicator_` (수정됨) | 생성, 읽기, 쓰기, 설명, DescribeConfigs, 변경, AlterConfigs | 
| 주제(복제된 하트비트) | `${first28CharsOfSourceClusterName}` (수정됨) | 생성, 읽기, 쓰기, 설명, DescribeConfigs, 변경, AlterConfigs | 
| 주제(데이터) | `${first28CharsOfSourceClusterName}` (수정됨) | 생성, 쓰기, 설명, DescribeConfigs, 변경, AlterConfigs | 

`IDENTICAL` 주제 이름을 사용하는 경우 데이터 주제 행을 다음으로 바꿉니다.


| 리소스 유형 | 패턴 | 운영 | 
| --- | --- | --- | 
| 주제(데이터) | 주제당 PREFIXED 또는 LITERAL(소스와 동일한 이름) | 생성, 쓰기, 설명, DescribeConfigs, 변경, AlterConfigs | 