๐ง ๋ค์ด๊ฐ๊ธฐ์
[AWS] EKS IRSA vs Pod Identity ๋์ ์๋ฆฌ
๐ธ 1. Pod์๊ฒ AWS ๊ถํ์ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒEKS ํด๋ฌ์คํฐ์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด S3, SQS, MSK์ ๊ฐ์ AWS ์๋น์ค์ ์ ๊ทผํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด๋ Pod์๊ฒ AWS ๊ถํ์ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง
jhzlo.tistory.com
ํด๋น ํฌ์คํธ์์ ๋ค๋ฃจ์๋ EKS Pod Identity๋ฅผ ์ ์ฉํ์ฌ AWS Infra๋ฅผ ๊ด๋ฆฌํ๊ณ ์ ํ์๊ณ , ํ์ฌ ์ฐ๋ฆฌ ํ์์๋ MSK๋ฅผ ๋น๋กฏํ ๋ค์ํ ๊ด๋ฆฌํ ์๋น์ค๋ค์ ์ฌ์ฉํ๊ณ ์์๋ค. ๊ธฐ์กด์ MSK๋ IRSA๋ฐฉ์์ผ๋ก ์ธ์ฆ/์ธ๊ฐ๋ฅผ ์งํํ๊ณ ์์๋๋ฐ, ์ด๋ฒ์ Pod Identity๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๊ณ ํ์๋ค.
๊ฐ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ Pod Identity๋ฅผ ์ ์ฉํ Role์ ๊ฐ์ง๋๋กํ์๊ณ , ๊ธฐ์กด์ aws-msk-iam-auth ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก kafka ๋ชจ๋์ ์ ์ํด๋์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ์์ด ์ฐ๊ฒฐ์ ์ฑ๊ณตํ ์ ์์๋ค.

ํ์ง๋ง, ๋ฌธ์ ๋ 1์๊ฐ ํ์ ์ผ์ด๋ฌ๋ค. 1์๊ฐ ํ์ ์นดํ์นด๋ฅผ ํตํด ์ด๋ฒคํธ๋ฅผ ๋ฐํํ๋ ์๋น์ค๋ค์์ ์์ ๊ฐ์ ๋ฌด์ํ ๋ง์ ์๋ฌ ๋ก๊ทธ๊ฐ ์ฐํ๊ฒ ๋์๊ณ ์ฐ๊ฒฐ์ ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง์ง ์์๋ค.
๋ฌด์จ์ผ์ด ์ผ์ด๋๊ฑธ๊น?
๐ธ 1. ๋ฌธ์ ์ ํต์ฌ: MSK IAM ์ธ์ฆ๊ณผ ์ธ์ ์ด๋ฆ
1.1 MSK IAM ์ธ์ฆ์ ๋์ ์๋ฆฌ
GitHub - aws/aws-msk-iam-auth: Enables developers to use AWS Identity and Access Management (IAM) to connect to their Amazon Man
Enables developers to use AWS Identity and Access Management (IAM) to connect to their Amazon Managed Streaming for Apache Kafka (Amazon MSK) clusters. - aws/aws-msk-iam-auth
github.com
Amazon MSK(Managed Streaming for Apache Kafka)๋ IAM ๊ธฐ๋ฐ ์ธ์ฆ์ ์ง์ํ๋ค. aws-msk-iam-auth ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ GitHub ์ ์ฅ์๋ฅผ ์ดํด๋ณด๋ฉด, ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ AWS_MSK_IAM์ด๋ผ๋ ์๋ก์ด SASL ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ค.

IAMSaslClient๋ Kafka ๋ธ๋ก์ปค์ ์๋ก์ด ์ฐ๊ฒฐ์ ์ด๊ฑฐ๋ ๊ธฐ์กด ์ฐ๊ฒฐ์ ์ฌ์ธ์ฆํ ๋๋ง๋ค ์๋ก ์์ฑ๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ ์ ์ MSK๊ฐ re-authentication ์ principal(์ธ์ ์ด๋ฆ ํฌํจ)์ ๋ณ๊ฒฝ์ ํ์ฉํ์ง ์๋๋ค๋ ๊ฒ์ด๋ค.
1.2 EKS Pod Identity์ ์ธ์ ์ด๋ฆ ์์ฑ ๋ฐฉ์
Amazon EKS Pod Identity: a new way for applications on EKS to obtain IAM credentials | Amazon Web Services
Introduction At AWS we are constantly striving to improve customer experience. For instance, we launched IAM Roles for Service Accounts (IRSA) in 2019 that allows customers to configure Kubernetes (k8s) applications running on AWS with fine-grained AWS Ide
aws.amazon.com
AWS ์ปจํ ์ด๋ ๋ธ๋ก๊ทธ์์ ํ์ธํ ์ ์๋ฏ์ด, EKS Pod Identity Agent๋ AssumeRoleForPodIdentity API๋ฅผ ํธ์ถํ ๋ ์ธ์ ์ด๋ฆ์ ์๋์ผ๋ก ์์ฑํ๋ค.
CloudTrail ๋ก๊ทธ๋ฅผ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ์์ ์ธ์ ์ด๋ฆ์ด ์์ฑ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค:
{
"requestParameters": {
"roleArn": "arn:aws:iam::123456789012:role/my-pod-role",
"roleSessionName": "eks-eks-pod-identity-secretmgr--24690dab-4c88-462f-89cc-3b77432e51ba",
...
}
}
์ธ์ ์ด๋ฆ์ด eks-{cluster}-{namespace/service}-{UUID} ํ์์ผ๋ก ์์ฑ๋๋ฉฐ, ์๊ฒฉ ์ฆ๋ช ์ด ๊ฐฑ์ ๋ ๋๋ง๋ค UUID ๋ถ๋ถ์ด ๋ณ๊ฒฝ๋๋ค.
1.3 ๋ฌธ์ ๋ฐ์ ์๋๋ฆฌ์ค
AWS ์ปจํ ์ด๋ ๋ก๋๋งต์ GitHub ์ด์ #2362์์ ์ด ๋ฌธ์ ๊ฐ ๋ช ํํ๊ฒ ๋ณด๊ณ ๋์๋ค. ์ค์ ์๋ฌ ๋ฉ์์ง๋ฅผ ์ดํด๋ณด๋ฉด:
failed authentication due to: Cannot change principals during re-authentication
from IAM.arn:aws:sts::ACCOUNT:assumed-role/bookingApiPod/eks-k8s-wl-prd-engine-boo-064f1ed1-2349-4774-b895-9a69ccc3eeb1:
IAM.arn:aws:sts::ACCOUNT:assumed-role/bookingApiPod/eks-k8s-wl-prd-engine-boo-875fdfcd-19cd-4ac3-8544-7077f94a6e39
๋ ์ธ์ ์ด๋ฆ์ UUID ๋ถ๋ถ์ด ๋ค๋ฅธ ๊ฒ์ ํ์ธํ ์ ์๋ค. MSK๋ ์ด๊ธฐ ์ธ์ฆ ์ ์ฌ์ฉ๋ principal๊ณผ ์ฌ์ธ์ฆ ์์ principal์ด ์ผ์นํด์ผ ํ๋๋ฐ, Pod Identity๊ฐ ์๊ฒฉ ์ฆ๋ช ์ ๊ฐฑ์ ํ๋ฉด์ ์ธ์ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์ด ์ธ์ฆ์ด ์คํจํ๊ฒ ๋๋ค.
์ฌ๊ธฐ์ ํ ๊ฐ์ง ์๋ฌธ์ด ์๊ธด๋ค. ์ผ๋ฐ์ ์ผ๋ก AWS SDK์์๋ AWS_ROLE_SESSION_NAME ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ฌ ์ธ์ ์ด๋ฆ์ ๊ณ ์ ํ ์ ์๋๋ฐ, Pod Identity์์๋ ์ ์ด ๋ฐฉ๋ฒ์ด ํตํ์ง ์์๊น?
์ด๋ Pod Identity์ ์ํคํ ์ฒ ๋๋ฌธ์ด๋ค. Pod Identity์์๋ ์ฌ์ฉ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ง์ STS:AssumeRole์ ํธ์ถํ๋ ๊ฒ์ด ์๋๋ผ, eks-pod-identity-agent๊ฐ AssumeRoleForPodIdentity API๋ฅผ ํธ์ถํ๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ ์ธ์ ์ด๋ฆ์ ์ ์ดํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค.
๐ธ 2. IRSA์ Pod Identity์ ์ฐจ์ด์
2.1 ์ธ์ฆ ํ๋ฆ ๋น๊ต

IRSA์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ง์ AWS SDK๋ฅผ ํตํด AssumeRoleWithWebIdentity๋ฅผ ํธ์ถํ๋ค. ์ด ๊ฒฝ์ฐ aws-msk-iam-auth ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ awsRoleSessionName ์ค์ ์ ํตํด ์ธ์ ์ด๋ฆ์ ๊ณ ์ ํ ์ ์๋ค.
ํ์ง๋ง Pod Identity์์๋ eks-pod-identity-agent DaemonSet์ด ์ค๊ฐ์ ๊ฐ์ ํ์ฌ ์๊ฒฉ ์ฆ๋ช ์ ๊ด๋ฆฌํ๋ค. AWS ์ปจํ ์ด๋ ๋ธ๋ก๊ทธ๋ฅผ ์ดํด๋ณด๋ฉด, Pod์ ํ๊ฒฝ ๋ณ์์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ๋๋ค:
env:
- name: AWS_CONTAINER_CREDENTIALS_FULL_URI
value: http://169.254.170.23/v1/credentials
- name: AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
value: /var/run/secrets/pods.eks.amazonaws.com/serviceaccount/eks-pod-identity-token
AWS SDK๋ ์ด ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด eks-pod-identity-agent ์๋ํฌ์ธํธ์์ ์๊ฒฉ ์ฆ๋ช ์ ๊ฐ์ ธ์ค๊ณ , agent๊ฐ ๋ด๋ถ์ ์ผ๋ก AssumeRoleForPodIdentity๋ฅผ ํธ์ถํ์ฌ ์ธ์ ์ด๋ฆ์ ์๋ ์์ฑํ๋ค.
2.2 ์ธ์ ์ด๋ฆ ์ ์ด ๊ฐ๋ฅ ์ฌ๋ถ
| ์๊ฒฉ ์ฆ๋ช ํ๋ ๋ฐฉ์ | AssumeRoleWithWebIdentity | AssumeRoleForPodIdentity |
| ์ธ์ ์ด๋ฆ ์ค์ | awsRoleSessionName์ผ๋ก ๊ฐ๋ฅ | ๋ถ๊ฐ๋ฅ (agent๊ฐ ์๋ ์์ฑ) |
| ์ธ์ ํ๊ทธ ์ง์ | ๋ฏธ์ง์ | ์ง์ |
๐ธ 3. ํด๊ฒฐ ๋ฐฉ์
3.1 ๋ฐฉ์ 1: MSK์๋ง IRSA ์ ์ฉ, ๋๋จธ์ง๋ Pod Identity
๊ฐ์ฅ ๊ฐ๋จํ ์ ๊ทผ ๋ฐฉ์์ด๋ค. MSK์ ์ ๊ทผํ๋ ๋ถ๋ถ๋ง IRSA๋ฅผ ์ ์งํ๊ณ , ๋๋จธ์ง AWS ์๋น์ค์ ๋ํด์๋ Pod Identity๋ฅผ ์ฌ์ฉํ๋ค.

AWS ๋ธ๋ก๊ทธ์์ ์ธ๊ธ๋ ๊ฒ์ฒ๋ผ, EKS Pod Identity ์นํ ์ ๋์ผํ ์๋น์ค ๊ณ์ ์ IRSA์ Pod Identity๊ฐ ๋ชจ๋ ์ค์ ๋์ด ์์ ๋ Pod Identity๋ฅผ ์ฐ์ ์ํ๋ค. ๋ฐ๋ผ์ MSK ์ ์ฉ ์๋น์ค ๊ณ์ ์ ๋ณ๋๋ก ๋ถ๋ฆฌํ์ฌ IRSA๋ฅผ ์ ์ฉํด์ผ ํ๋ค.
์ด ๋ฐฉ๋ฒ์ ์ฅ์ ์ ๊ตฌํ์ด ๋จ์ํ๋ค๋ ๊ฒ์ด๋ค. ํ์ง๋ง ํ๋์ Pod์์ ๋ ๊ฐ์ง ์๊ฒฉ ์ฆ๋ช ๋ฐฉ์์ ํผ์ฉํด์ผ ํ๋ฏ๋ก ๊ด๋ฆฌ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๋ค.
3.2 ๋ฐฉ์ 2: ์ ์ฒด IRSA๋ก ์ ํ
Pod Identity ๋์ ๋ชจ๋ ์๋น์ค์ IRSA๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ด ๋ฐฉ๋ฒ์ MSK ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์์ ํ ํด๊ฒฐํ ์ ์์ง๋ง, ๋ช ๊ฐ์ง ๋จ์ ์ด ์กด์ฌํ๋ค:
- OIDC Provider ๊ด๋ฆฌ ํ์: ํด๋ฌ์คํฐ๋ง๋ค IAM OIDC Provider๋ฅผ ์ค์ ํด์ผ ํ๋ฉฐ, ๊ณ์ ๋น 100๊ฐ์ ๊ธฐ๋ณธ ์ ํ์ด ์๋ค.
- Trust Policy ๊ด๋ฆฌ ๋ณต์ก๋: ์ ํด๋ฌ์คํฐ๋ฅผ ์ถ๊ฐํ ๋๋ง๋ค IAM Role์ Trust Policy๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๋ค.
- ๋ง์ด๊ทธ๋ ์ด์ ๋น์ฉ: ์ด๋ฏธ Pod Identity๋ก ์ ํํ ์๋น์ค๋ค์ ๋ค์ IRSA๋ก ๋กค๋ฐฑํด์ผ ํ๋ค. -> ๊ทธ๋ ๊ฒ ๋น์ฉ์ด ํฌ์ง ์๋ค.
3.3 ๋ฐฉ์ 3: Kafka ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ ์๋ช ์กฐ์
Kafka ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ ์๋ช ์ STS ํ ํฐ์ ์ ํจ ๊ธฐ๊ฐ(๊ธฐ๋ณธ 1์๊ฐ)์ ๋ง์ถฐ ์ค์ ํ์ฌ, ์ฌ์ธ์ฆ ์์ ์ ์ ์ฐ๊ฒฐ์ ๋๊ณ ์๋ก ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ด๋ค.
# Kafka Producer/Consumer ์ค์
connections.max.idle.ms=3540000 # 59๋ถ
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ๋ถ์์ ํ ์ธก๋ฉด์ด ์๋ค. ๋คํธ์ํฌ ์ง์ฐ์ด๋ ํ์ด๋ฐ ์ด์๋ก ์ธํด ์ฌ์ธ์ฆ์ด ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ์ฐ๊ฒฐ์ด ์์ฃผ ๋์ด์ง๋ฉด์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
โญ๏ธ 3.4 ๋ฐฉ์ 4: MSK ์ ์ฉ IAM Role Chain ๊ตฌ์ฑ
์ฌ์ค ์ด ํด๊ฒฐ์ฑ ์ ๋๋ฌธ์ ๋ธ๋ก๊ทธ ๊ธ์ ์์ฑํ๋ค.
Pod Identity๊ฐ ํ๋ํ ์๊ฒฉ ์ฆ๋ช ์ผ๋ก MSK ์ ์ฉ IAM Role์ assumeํ๊ณ , ์ด๋ ์ธ์ ์ด๋ฆ์ ๊ณ ์ ํ๋ ๋ฐฉ์์ด๋ค.

์ฐ์ ์ด ํด๊ฒฐ๋ฐฉ์์ ๋ํ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- Application Pod๊ฐ Pod Identity Agent์ ์๊ฒฉ ์ฆ๋ช ์ ์์ฒญํ๋ค.
- Pod Identity Agent๊ฐ AWS STS์ AssumeRoleForPodIdentity๋ฅผ ํธ์ถํ๋ค.
- AWS STS๊ฐ ์์ ์๊ฒฉ ์ฆ๋ช ์ ๋ฐํํ๋ค. (์ธ์ : ๋ณ๋ UUID)
- Pod Identity Agent๊ฐ Application Pod์ ์๊ฒฉ ์ฆ๋ช ์ ์ ๋ฌํ๋ค.
- Application Pod๊ฐ MSK ์ ์ฉ Role์ AssumeRoleํ๋ค. (์ธ์ : "my-service-msk" ๊ณ ์ )
- AWS STS๊ฐ MSK Role ์๊ฒฉ ์ฆ๋ช ์ ๋ฐํํ๋ค. (๊ณ ์ ์ธ์ )
- Application Pod๊ฐ ๊ณ ์ ๋ ์ธ์ ์ด๋ฆ์ผ๋ก MSK Broker์ SASL ์ธ์ฆ์ ์ํํ๋ค.
- MSK Broker๊ฐ ์ธ์ฆ ์ฑ๊ณต์ ๋ฐํํ๋ค.
- ์๊ฒฉ ์ฆ๋ช ๊ฐฑ์ ์์๋ 5~8 ๊ณผ์ ์์ ์ธ์ ์ด๋ฆ์ด ๋์ผํ๊ฒ ์ ์ง๋์ด ์ฌ์ธ์ฆ์ด ์ ์ ๋์ํ๋ค.
3.4.1 MSK ์ ์ฉ IAM Role ์์ฑ
๋จผ์ MSK ์ ๊ทผ์ ์ํ ์ ์ฉ IAM Role์ ์์ฑํ๋ค. Trust Policy์์ Pod Identity Role์ด ์ด Role์ assumeํ ์ ์๋๋ก ์ค์ ํ๋ค:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:role/my-pod-identity-role"
},
"Action": "sts:AssumeRole"
}
]
}
3.4.2 Pod Identity Role์ AssumeRole ๊ถํ ์ถ๊ฐ
Pod Identity Role์ MSK ์ ์ฉ Role์ assumeํ ์ ์๋ ๊ถํ์ ์ถ๊ฐํ๋ค:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::123456789012:role/my-msk-role"
}
]
}
3.4.3 Kafka ํด๋ผ์ด์ธํธ ์ค์
sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required \
awsRoleArn="arn:aws:iam::123456789012:role/my-msk-role" \
awsRoleSessionName="my-service-msk" \
awsStsRegion="ap-northeast-2";
Pod Identity๊ฐ ์๊ฒฉ ์ฆ๋ช ์ ๊ฐฑ์ ํ ๋๋ง๋ค ๊ธฐ๋ณธ ์๊ฒฉ ์ฆ๋ช ์ ์ธ์ ์ด๋ฆ์ ๋ณ๊ฒฝ๋์ง๋ง
Kafka ํด๋ผ์ด์ธํธ๋ ํญ์ my-msk-role์ assumeํ๋ฉด์ my-service-msk๋ผ๋ ๊ณ ์ ๋ ์ธ์ ์ด๋ฆ์ ์ฌ์ฉํ๋ค
MSK ์ ์ฅ์์๋ principal์ด ํญ์ ๋์ผํ๊ฒ ์ ์ง๋๋ฏ๋ก ์ฌ์ธ์ฆ์ด ์ ์์ ์ผ๋ก ๋์ํ๋ค
3.4.4 Spring Kafka ์ ์ฉ ์์
spring:
kafka:
bootstrap-servers: b-1.msk-cluster.xxxxx.kafka.ap-northeast-2.amazonaws.com:9098
properties:
security.protocol: SASL_SSL
sasl.mechanism: AWS_MSK_IAM
sasl.jaas.config: >
software.amazon.msk.auth.iam.IAMLoginModule required
awsRoleArn="arn:aws:iam::123456789012:role/my-msk-role"
awsRoleSessionName="my-service-msk"
awsStsRegion="ap-northeast-2";
sasl.client.callback.handler.class: software.amazon.msk.auth.iam.IAMClientCallbackHandler
3.4.5 ์ ์ฉ ๊ฒฐ๊ณผ


์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ํตํด์ Pod Identity Role์ ์ค๊ฐ์ ์์นํ MSK ์ ์ฉ Role ๋๋ถ์ ๊ณ ์ ์ ์ธ ์ธ์ ์ด๋ฆ์ ๊ฐ์ง ์ ์๊ฒ ๋์์ผ๋ฉฐ, ์ค์ ๋ก ์์ ๋ฐฉ์์ ์ ์ฉํ ์ดํ๋ก 24์๊ฐ๋์ ์์ ์ ์ผ๋ก ์ธ์ฆ์ ์ํํ๋ฉฐ ๋์ํ๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
์ ๋ฆฌ
EKS Pod Identity๋ฅผ MSK์ ํจ๊ป ์ฌ์ฉํ ๋ ๋ฐ์ํ๋ ์ธ์ฆ ์คํจ ๋ฌธ์ ๋ eks-pod-identity-agent๊ฐ ์๊ฒฉ ์ฆ๋ช ์ ๊ฐฑ์ ํ ๋๋ง๋ค ์ธ์ ์ด๋ฆ์ ์๋ก์ด UUID๋ก ๋ณ๊ฒฝํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ค. MSK๋ ์ฌ์ธ์ฆ ์ principal ๋ณ๊ฒฝ์ ํ์ฉํ์ง ์์ผ๋ฏ๋ก, ์ธ์ ์ด๋ฆ์ด ๋ฐ๋๋ฉด "Cannot change principals during re-authentication" ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ MSK ์ ์ฉ IAM Role์ ์์ฑํ๊ณ , aws-msk-iam-auth ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ awsRoleArn๊ณผ awsRoleSessionName ์ค์ ์ ํตํด Kafka ํด๋ผ์ด์ธํธ๊ฐ ํญ์ ๊ณ ์ ๋ ์ธ์ ์ด๋ฆ์ผ๋ก MSK์ ์ ๊ทผํ๋๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ํตํด Pod Identity์ ์ฅ์ ์ ์ ์งํ๋ฉด์๋ MSK์์ ์์ ์ ์ธ ์ฐ๊ฒฐ์ ๋ณด์ฅํ ์ ์๋ค.
๐ ์ถ์ฒ
- AWS ์ปจํ ์ด๋ ๋ก๋๋งต GitHub ์ด์ #2362: https://github.com/aws/containers-roadmap/issues/2362
- aws-msk-iam-auth GitHub: https://github.com/aws/aws-msk-iam-auth
- Amazon EKS Pod Identity ๋ธ๋ก๊ทธ: https://aws.amazon.com/blogs/containers/amazon-eks-pod-identity-a-new-way-for-applications-on-eks-to-obtain-iam-credentials/
- MSK IAM ์ธ์ฆ ๊ณต์ ๋ฌธ์: https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html
- aws-msk-iam-sasl-signer-js ์ด์ #27: https://github.com/aws/aws-msk-iam-sasl-signer-js/issues/27