9장. 서비스 계정에 AWS IAM 역할 가정
AWS STS(Security Token Service)를 사용하는 AWS 클러스터의 Red Hat OpenShift Service에서 Pod에서 AWS Identity and Access Management(IAM) 역할을 가정하는 데 사용할 수 있는 서명된 서비스 계정 토큰을 프로젝트하도록 OpenShift API 서버를 활성화할 수 있습니다. 예상 IAM 역할에 필요한 AWS 권한이 있는 경우 Pod는 AWS 작업을 수행하기 위해 임시 STS 인증 정보를 사용하여 AWS API에 대해 인증할 수 있습니다.
Pod ID Webhook를 사용하여 서비스 계정 토큰을 프로젝트하여 자체 워크로드에 대한 AWS Identity and Access Management(IAM) 역할을 가정할 수 있습니다. 가정된 IAM 역할에 필요한 AWS 권한이 있는 경우 Pod는 임시 STS 인증 정보를 사용하여 AWS SDK 작업을 실행할 수 있습니다.
9.1. 서비스 계정에서 SRE 보유 프로젝트에서 AWS IAM 역할을 가정하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
AWS STS(Security Token Service)를 사용하는 AWS 클러스터에 Red Hat OpenShift Service를 설치하면 클러스터별 Operator AWS IAM(Identity and Access Management) 역할이 생성됩니다. 이러한 IAM 역할을 통해 AWS 클러스터 Operator의 Red Hat OpenShift Service가 핵심 OpenShift 기능을 실행할 수 있습니다.
클러스터 Operator는 서비스 계정을 사용하여 IAM 역할을 가정합니다. 서비스 계정에서 IAM 역할을 가정하면 서비스 계정에서 클러스터 Operator의 Pod에서 사용할 임시 STS 인증 정보가 제공됩니다. 추정 역할에 필요한 AWS 권한이 있는 경우 서비스 계정은 Pod에서 AWS SDK 작업을 실행할 수 있습니다.
SRE 보유 프로젝트에서 AWS IAM 역할을 가정하기 위한 워크플로우
다음 다이어그램은 SRE 보유 프로젝트에서 AWS IAM 역할을 가정하는 워크플로우를 보여줍니다.
그림 9.1. SRE 보유 프로젝트에서 AWS IAM 역할을 가정하기 위한 워크플로우
워크플로는 다음 단계가 있습니다.
클러스터 Operator가 실행하는 각 프로젝트 내에서 Operator의 배포 사양에는 예상 서비스 계정 토큰에 대한 볼륨 마운트와 Pod에 대한 AWS 인증 정보 구성이 포함된 시크릿이 있습니다. 토큰은 오디언스 바인딩 및 시간 바인딩입니다. AWS의 Red Hat OpenShift Service는 매번 새 토큰을 생성하고 AWS SDK는 AWS 인증 정보 구성이 포함된 마운트된 시크릿을 읽습니다. 이 구성에는 마운트된 토큰 및 AWS IAM 역할 ARN의 경로가 있습니다. 시크릿의 인증 정보 구성에는 다음이 포함됩니다.
-
AWS SDK 작업을 실행하는 데 필요한 권한이 있는 IAM 역할에 대한 ARN이 있는
$AWS_ARN_ROLE변수. -
서비스 계정의 OpenID Connect(OIDC) 토큰으로 Pod의 전체 경로가 있는
$AWS_LOAD_IDENTITY_TOKEN_FILE변수. 전체 경로는/var/run/secrets/openshift/serviceaccount/token입니다.
-
AWS SDK 작업을 실행하는 데 필요한 권한이 있는 IAM 역할에 대한 ARN이 있는
-
클러스터 Operator에서 AWS IAM 역할로 간주하여 AWS IAM 역할(예: EC2)을 가정해야 하는 경우 Operator에서 실행되는 AWS SDK 클라이언트 코드는
AssumeRoleWithWebIdentityAPI 호출을 호출합니다. OIDC 토큰은 Pod에서 OIDC 공급자로 전달됩니다. 다음 요구 사항이 충족되면 공급자는 서비스 계정 ID를 인증합니다.
- ID 서명이 유효하고 개인 키로 서명됩니다.
sts.amazonaws.com대상이 OIDC 토큰에 나열되고 OIDC 공급자에 구성된 대상과 일치합니다.참고STS 클러스터를 사용하는 AWS의 Red Hat OpenShift Service에서 OIDC 공급자는 설치 중에 생성되며 기본적으로 서비스 계정 발행자로 설정됩니다.
sts.amazonaws.com대상은 기본적으로 OIDC 공급자에 설정됩니다.- OIDC 토큰이 만료되지 않았습니다.
- 토큰의 발행자 값에는 OIDC 공급자의 URL이 있습니다.
- 프로젝트 및 서비스 계정이 가정 중인 IAM 역할에 대한 신뢰 정책 범위에 있는 경우 권한 부여가 성공합니다.
- 인증 및 권한 부여에 성공하면 AWS 액세스 토큰, 시크릿 키 및 세션 토큰 형식의 임시 AWS STS 인증 정보가 서비스 계정에서 사용할 수 있도록 Pod에 전달됩니다. 인증 정보를 사용하면 서비스 계정에 IAM 역할에서 활성화된 AWS 권한이 일시적으로 부여됩니다.
- 클러스터 Operator가 실행되면 Pod에서 AWS SDK를 사용하는 Operator는 예상 서비스 계정에 대한 경로가 있는 시크릿과 AWS IAM 역할 ARN을 사용하여 OIDC 공급자에 대해 인증합니다. OIDC 공급자는 AWS API에 대한 인증에 대한 임시 STS 자격 증명을 반환합니다.