이 페이지에서는 워크로드 아이덴티티 제휴와 직접 리소스 액세스 또는 서비스 계정 가장을 사용하여 Google Cloud 리소스에 액세스하도록 워크로드를 구성하는 방법을 설명합니다.
AWS 및 Azure, Active Directory, GitHub, GitLab, 기타 배포 파이프라인 및 Kubernetes에 대한 구성 가이드에서 사용 사례별 엔드 투 엔드 안내를 참조하세요.
외부 워크로드가 Google Cloud 리소스에 액세스하도록 허용
워크로드에 Google Cloud 리소스에 대한 액세스 권한을 제공하려면 주 구성원에게 직접 리소스에 대한 액세스 권한을 부여하는 것이 좋습니다. 이 경우 주 구성원은 제휴 사용자입니다. 일부 Google Cloud 제품에는 Google Cloud API 제한사항이 있습니다. 워크로드가 제한사항이 있는 API 엔드포인트를 호출하는 경우 대신 서비스 계정 가장을 사용할 수 있습니다. 이 경우 주 구성원은 ID 역할을 하는 Google Cloud 서비스 계정입니다. 서비스 계정에 리소스에 대한 액세스 권한을 부여합니다.
직접 리소스 액세스
Google Cloud 콘솔 또는 gcloud CLI를 사용하면 제휴 ID에 직접 리소스에 대한 액세스 권한을 부여할 수 있습니다.
콘솔
Google Cloud 콘솔을 사용하여 리소스에 대한 IAM 역할을 직접 부여하려면 리소스 페이지로 이동한 다음 역할을 부여해야 합니다. 다음 예시에서는 Cloud Storage 페이지로 이동하여 제휴 ID에 Cloud Storage 버킷에 대한 스토리지 객체 뷰어(roles/storage.objectViewer
) 역할을 직접 부여하는 방법을 보여줍니다.
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
버킷 목록에서 역할을 부여하려는 버킷의 이름을 클릭합니다.
페이지 상단의 권한 탭을 선택합니다.
add_box 액세스 권한 부여 버튼을 클릭합니다.
주 구성원 추가 대화상자가 표시됩니다.
새 주 구성원 필드에 버킷에 액세스해야 하는 ID를 한 개 이상 입력합니다.
주체별
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
다음을 바꿉니다.
PROJECT_NUMBER
: 프로젝트 번호POOL_ID
: 워크로드 풀 IDSUBJECT
: IdP에서 매핑된 개별 주체(예:administrator@example.com
)
그룹별
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
다음을 바꿉니다.
PROJECT_NUMBER
: 프로젝트 번호WORKLOAD_POOL_ID
: 워크로드 풀 IDGROUP
: IdP에서 매핑된 그룹(예:administrator-group@example.com
)
속성별
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
다음을 바꿉니다.
PROJECT_NUMBER
: 프로젝트 번호WORKLOAD_POOL_ID
: 워크로드 풀 IDATTRIBUTE_NAME
: IdP에서 매핑된 속성 중 하나ATTRIBUTE_VALUE
: 속성의 값
역할 선택 드롭다운 메뉴에서 역할을 한 개 이상 선택합니다. 선택한 역할 및 부여되는 권한에 대한 간단한 설명이 창에 표시됩니다.
저장을 클릭합니다.
gcloud
gcloud CLI를 사용하여 프로젝트의 리소스에 대한 IAM 역할을 부여하려면 다음을 수행합니다.
리소스가 정의된 프로젝트의 프로젝트 번호를 가져옵니다.
gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
리소스에 대한 액세스 권한을 부여합니다.
gcloud CLI를 사용하여 특정 기준을 충족하는 외부 ID에 워크로드 아이덴티티 사용자(
roles/iam.workloadIdentityUser
) 역할을 부여하려면 다음 명령어를 실행합니다.주체별
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"
그룹별
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"
속성별
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"
다음을 바꿉니다.
BUCKET_ID
: 액세스 권한을 부여할 버킷PROJECT_NUMBER
: 워크로드 아이덴티티 풀이 포함된 프로젝트의 프로젝트 번호POOL_ID
: 워크로드 아이덴티티 풀의 IDSUBJECT
:google.subject
에 매핑한 속성의 예상 값GROUP
:google.groups
에 매핑한 속성의 예상 값ATTRIBUTE_NAME
: 속성 매핑의 커스텀 속성 이름ATTRIBUTE_VALUE
: 속성 매핑의 커스텀 속성 값
IAM 허용 정책을 지원하는 모든 Google Cloud 리소스에 대한 역할을 부여할 수 있습니다.
서비스 계정 가장
외부 워크로드의 서비스 계정을 만들려면 다음을 수행합니다.
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
워크로드를 나타내는 서비스 계정을 만듭니다. 워크로드마다 전용 서비스 계정을 사용하는 것이 가장 좋습니다.
서비스 계정이 워크로드 아이덴티티 풀과 동일한 프로젝트에 있을 필요는 없습니다.
외부 ID가 액세스할 리소스에 대한 액세스 권한을 서비스 계정에 부여합니다.
서비스 계정에 워크로드 아이덴티티 사용자 역할(
roles/iam.workloadIdentityUser
)을 부여합니다.워크로드를 나타내는 서비스 계정을 만듭니다. 워크로드마다 전용 서비스 계정을 사용하는 것이 좋습니다.
서비스 계정이 워크로드 아이덴티티 풀과 동일한 프로젝트에 있을 필요는 없지만 서비스 계정이 포함된 프로젝트를 참조해야 합니다.
Google Cloud 콘솔 또는 gcloud CLI를 사용하여 서비스 계정 가장으로 제휴 ID에 액세스 권한을 부여하려면 다음을 수행합니다.
콘솔
Google Cloud 콘솔을 사용하여 서비스 계정으로 제휴 ID에 IAM 역할을 부여하려면 다음을 수행합니다.
다음을 수행하여 가장할 ID 역할을 하는 서비스 계정을 만듭니다.
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
워크로드의 ID를 나타내는 서비스 계정을 만듭니다. 워크로드마다 전용 서비스 계정을 사용하는 것이 좋습니다.
서비스 계정이 워크로드 아이덴티티 풀과 동일한 프로젝트에 있을 필요는 없지만 IAM 액세스 권한을 부여할 때 서비스 계정이 포함된 프로젝트를 참조해야 합니다.
외부 ID가 액세스할 리소스에 대한 액세스 권한을 서비스 계정에 부여합니다.
서비스 계정 가장을 사용하여 액세스 권한을 부여하려면 다음을 수행합니다.
워크로드 아이덴티티 풀 페이지로 이동합니다.
액세스 권한 부여를 선택합니다.
서비스 계정에 액세스 권한 부여 대화상자에서 서비스 계정 가장을 사용하여 액세스 권한 부여를 선택합니다.
서비스 계정 목록에서 가장하려는 외부 ID의 서비스 계정을 선택하고 다음을 수행합니다.
풀에서 서비스 계정을 가장할 수 있는 ID를 선택하려면 다음 작업 중 하나를 수행합니다.
워크로드 아이덴티티 풀의 특정 ID만 서비스 계정을 가장하도록 허용하려면 필터와 일치하는 ID만을 선택합니다.
속성 이름 목록에서 필터링할 속성을 선택합니다.
속성 값 필드에서 속성의 예상 값을 입력합니다. 예를 들어 속성 매핑
google.subject=assertion.sub
를 사용하는 경우 속성 이름을subject
로, 속성 값을 외부 ID 공급업체에서 발급한 토큰의sub
클레임 값으로 설정합니다.
구성을 저장하려면 저장을 클릭한 다음 닫기를 클릭합니다.
gcloud
gcloud CLI를 사용하여 특정 기준을 충족하는 외부 ID에 워크로드 아이덴티티 사용자(
roles/iam.workloadIdentityUser
) 역할을 부여하려면 다음 명령어를 실행합니다.주체별
gcloud storage buckets add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/storage.objectViewer \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"
그룹별
gcloud storage buckets add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"
속성별
gcloud storage buckets add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"
다음을 바꿉니다.
구성 다운로드
워크로드에서 클라이언트 라이브러리에 액세스하도록 하려면 먼저 다음을 수행하여 애플리케이션 기본 사용자 인증 정보(ADC)를 다운로드하고 구성해야 합니다.
-
Google Cloud 콘솔에서 워크로드 아이덴티티 풀 페이지로 이동합니다.
워크로드 아이덴티티 풀로 이동 -
표에서 풀을 선택하여 풀의 세부정보 페이지로 이동합니다.
-
액세스 권한 부여를 클릭합니다.
-
제휴 ID를 사용하여 액세스 권한 부여(권장)
-
워크로드에서 클라이언트 라이브러리에 액세스할 수 있도록 애플리케이션 기본 사용자 인증 정보(ADC)를 다운로드하려면 다음을 수행합니다.
-
구성 다운로드를 클릭합니다.
-
애플리케이션 구성 대화상자에서 다음을 수행합니다.
-
공급업체 드롭다운 목록에서 공급업체를 선택합니다.
-
OIDC 토큰 경로 또는 SAML 어설션 경로에 토큰 또는 어설션이 있는 경로를 입력합니다.
형식 유형 드롭다운 목록에서 형식을 선택합니다.
-
-
구성 다운로드를 클릭하고 파일을 저장한 경로를 기록해 둡니다.
-