다른 계정의 클러스터에서 ID 제공업체를 생성하거나 연결된 AssumeRole
작업을 사용하여 크로스 계정 IAM 권한을 구성할 수 있습니다. 다음 예제에서 계정 A는 서비스 계정에 대한 IAM 역할을 지원하는 Amazon EKS 클러스터를 소유합니다. 해당 클러스터에서 실행 중인 Pods는 계정 B의 IAM 권한을 수임해야 합니다.
예 다른 계정의 클러스터에서 ID 제공업체 생성
이 예제에서 계정 A는 계정 B에 클러스터의 OpenID Connect(OIDC) 발행자 URL을 제공합니다. 계정 B는 계정 A의 클러스터에서 OIDC 발급자 URL을 사용하여 클러스터 및 Kubernetes 서비스 계정에 IAM 역할 할당에 대한 IAM OIDC 공급자 클러스터에 대한 IAM OIDC 공급자 생성만들기의 지침을 따릅니다. 그런 다음 클러스터 관리자는 계정 B(444455556666
)의 역할을 사용할 계정 A의 클러스터에 있는 서비스 계정에 주석을 답니다.
apiVersion: v1
kind: ServiceAccount
metadata:
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::444455556666:role/account-b-role
예 연결된 AssumeRole
작업 사용
이 예에서 계정 B는 계정 A의 클러스터에 있는 Pods에 부여할 권한이 포함된 IAM 정책을 생성합니다. 계정 B(444455556666
)는 계정 A(111122223333
)에 AssumeRole
권한을 허용하는 신뢰 관계를 사용하여 이 정책을 IAM 역할에 연결합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
계정 A는 클러스터의 OIDC 발행자 주소로 생성된 ID 제공업체의 자격 증명을 가져오는 신뢰 정책을 이용해 역할을 생성합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE"
},
"Action": "sts:AssumeRoleWithWebIdentity"
}
]
}
계정 A는 이 역할을 계정 B가 생성한 역할을 맡을 수 있는 다음과 같은 권한이 포함된 정책에 연결합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::444455556666:role/account-b-role"
}
]
}
Pods가 계정 B의 역할을 맡을 수 있게 해주는 애플리케이션 코드에서는 두 가지 프로필, 즉 account_b_role
및 account_a_role
을 사용합니다. account_b_role
프로필에서는 account_a_role
프로필을 소스로 사용합니다. AWS CLI의 경우 ~/.aws/config
파일은 다음과 유사합니다.
[profile account_b_role] source_profile = account_a_role role_arn=arn:aws:iam::444455556666:role/account-b-role [profile account_a_role] web_identity_token_file = /var/run/secrets/eks.amazonaws.com/serviceaccount/token role_arn=arn:aws:iam::111122223333:role/account-a-role
연결된 프로파일을 다른 AWS SDK에 지정하려면 사용 중인 SDK에 대한 설명서를 참조하세요. 자세한 내용은 AWS 기반의 도구