클라이언트에서 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 가이드 페이지입니다.