워크로드 아이덴티티

워크로드 아이덴티티(WIF)는 클러스터 워크로드가 Kubernetes 서비스 계정으로 외부 클라우드 리소스에 액세스할 수 있게 해주는 메커니즘입니다. WIF는 GKE 연결 클러스터 내에서 실행되는 애플리케이션이 Google Cloud 서비스에 액세스하는 데 권장되는 방식입니다. 클러스터를 등록하면 GKE 연결 클러스터 API는 공개 또는 비공개 OIDC 발급자를 사용하는 클러스터를 지원하여 WIF에 필요한 모든 인프라를 만듭니다.

커넥트 및 원격 분석 에이전트와 같이 Google Cloud에 다시 연결되는 모든 GKE Enterprise 서비스는 워크로드 아이덴티티를 사용합니다.

Kubernetes 서비스 계정 및 워크로드 아이덴티티

포드가 실행되면 Kubernetes 서비스 계정을 사용하여 클러스터 내에서 호스팅되는 리소스에 대한 액세스를 승인합니다. WIF를 사용하면 포드가 동일한 Kubernetes 서비스 계정(KSA)을 사용하여 클러스터 외부에서 호스팅되는 리소스에 액세스할 수 있는 단기 토큰을 얻을 수 있습니다.

WIF에는 클러스터 내부의 OIDC ID 공급업체와 Google Cloud IAM과 같은 외부 리소스 공급업체 간의 트러스트 관계가 필요합니다. 연결된 클러스터를 등록하면 등록 프로세스는 Google Cloud 프로젝트에 바인딩된 기본 워크로드 아이덴티티 풀에 클러스터의 OIDC 서비스를 추가하여 이 트러스트 관계를 자동으로 만듭니다.

이 워크로드 아이덴티티 풀은 Google 프로젝트의 신뢰할 수 있는 ID 공급업체 풀이며 이름은 PROJECT_ID.svc.id.goog입니다. 여기서 PROJECT_ID는 연결된 클러스터와 연결된 Google 프로젝트 ID입니다.

일반 Google Cloud IAM 정책을 사용하여 Google Cloud 서비스에 대한 Kubernetes 서비스 계정의 액세스를 제어할 수 있습니다. Kubernetes 서비스 계정 주 구성원은 워크로드 아이덴티티 풀 내에서 KSA를 나타냅니다. 형식은 다음과 같습니다.

serviceAccount:WORKLOAD_IDENTITY_POOL_NAME[KSA_NAMESPACE/KSA_NAME]

Kubernetes 서비스 계정에 역할을 부여하려면 다음 명령어를 사용합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_ID.svc.id.goog[KSA_NAMESPACE/KSA_NAME]" \
  --role=IAM_ROLE

다음과 같이 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • KSA_NAMESPACE: 이 서비스 계정이 있는 클러스터 네임스페이스
  • KSA_NAME: 권한을 부여할 Kubernetes 서비스 계정의 이름
  • IAM_ROLE: 이 KSA에 부여할 Google Cloud 역할