클라이언트에서 AWS MSK에 IAM 권한으로 접속을 할때 아래 오류가 발생할 수 있습니다.
해당 오류는 대부분 IAM 권한 설정 문제입니다.
org.springframework.kafka.KafkaException: Send failed org.apache.kafka.common.errors.SaslAuthenticationException: [8a192cc-369-43e-bfe8-bc880e50c2s9]: Access denied Error while executing topic command : Authorization failed. org.apache.kafka.common.errors.TopicAuthorizationException: Authorization failed.
MSK Cluster를 제대로 사용하기 위해서는 cluster, topic, group
에 대한 권한이 필요합니다.
먼저 오류를 해결하기 위해 IAM 역할에 지정된 정책을 확인합니다.
아래는 AWS 권한 JSON 샘플로 몇 가지 값을 변경하면 권한 부여가 완료됩니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:AlterCluster", "kafka-cluster:DescribeCluster" ], "Resource": [ "arn:aws:kafka:region:Account-ID:cluster/MSKTutorialCluster/*" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:*Topic*", "kafka-cluster:WriteData", "kafka-cluster:ReadData" ], "Resource": [ "arn:aws:kafka:region:Account-ID:topic/MSKTutorialCluster/*" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:region:Account-ID:group/MSKTutorialCluster/*" ] } ] }
IAM 권한 설정을 마치고 다시 접속해 보면, 인증이 통과된 걸 확인할 수 있습니다.
아래는 AWS 가이드 페이지입니다.