

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

# IAM 역할에 대한 권한 부여 정책 생성
<a name="create-iam-access-control-policies"></a>

권한 부여 정책을 클라이언트에 해당하는 IAM 역할에 연결합니다. 권한 부여 정책에서 역할에 대해 허용하거나 거부할 작업을 지정합니다. 클라이언트가 Amazon EC2 인스턴스를 사용하는 경우 권한 부여 정책을 해당 Amazon EC2 인스턴스의 IAM 역할에 연결합니다. 또는 명명된 프로필을 사용하도록 클라이언트를 구성한 다음 권한 부여 정책을 해당 명명된 프로필의 역할과 연결할 수 있습니다. [IAM 액세스 제어를 위한 클라이언트 구성](configure-clients-for-iam-access-control.md)에서는 명명된 프로필을 사용하도록 클라이언트를 구성하는 방법에 대해 설명합니다.

IAM 정책을 만드는 방법에 대한 자세한 내용은 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.

다음은 MyTestCluster라는 클러스터에 대한 권한 부여 정책의 예제입니다. `Action` 및 `Resource` 요소의 의미를 이해하려면 [IAM 권한 부여 정책 작업 및 리소스의 의미](kafka-actions.md)를 참조하세요.

**중요**  
IAM 정책에 대한 변경 사항은 IAM API 및 AWS CLI 에 즉시 반영됩니다. 그러나 정책 변경이 적용되려면 상당한 시간이 소요될 수 있습니다. 대부분 정책 변경은 1분 이내에 적용됩니다. 네트워크 상태에 따라 지연 시간이 늘어날 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:111122223333:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:group/MyTestCluster/*"
            ]
        }
    ]
}
```

------

데이터 생산 및 소비와 같은 일반적인 Apache Kafka 사용 사례에 해당하는 조치 요소가 포함된 정책을 생성하는 방법을 알아보려면 [클라이언트 권한 부여 정책의 일반적인 사용 사례](iam-access-control-use-cases.md)를 참조하세요.

Kafka 버전 2.8.0 이상에서는 **WriteDataIdempotently** 권한이 더 이상 사용되지 않습니다([KIP-679](https://cwiki.apache.org/confluence/display/KAFKA/KIP-679%3A+Producer+will+enable+the+strongest+delivery+guarantee+by+default)). 기본적으로 `enable.idempotence = true`가 설정되어 있습니다. 따라서 Kafka 버전 2.8.0 이상의 경우 IAM은 Kafka ACL과 동일한 기능을 제공하지 않습니다. 해당 주제에 대한 `WriteData` 액세스 권한만 제공해서는 주제에 `WriteDataIdempotently`를 수행할 수 없습니다. 이는 **모든** 주제에 `WriteData`가 제공되는 경우에는 영향을 미치지 않습니다. 이 경우 `WriteDataIdempotently`가 허용됩니다. 이는 IAM 로직의 구현 방식과 Kafka ACL의 구현 방식에 차이가 있기 때문입니다. 또한 주제에 멱등적으로 쓰려면 `transactional-ids`에 대한 액세스 권한도 필요합니다.

이 문제를 해결하려면 다음 정책과 유사한 정책을 사용하는 것을 권장합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster",
                "kafka-cluster:WriteDataIdempotently"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/TestTopic",
                "arn:aws:kafka:us-east-1:123456789012:transactional-id/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*"
            ]
        }
    ]
}
```

------

이 경우 `WriteData`는 `TestTopic`에 대한 쓰기를 허용하고 `WriteDataIdempotently`은 클러스터에 대한 멱등성 쓰기를 허용합니다. 또한 이 정책은 필요한 `transactional-id` 리소스에 대한 액세스 권한을 추가합니다.

`WriteDataIdempotently`는 클러스터 수준 권한이므로 주제 수준에서 사용할 수 없습니다. `WriteDataIdempotently`가 주제 수준으로 제한되어 있으면 해당 정책이 작동하지 않습니다.