이 문서에서는 Cloud Deploy를 실행하고 여러 작업 실행을 위해 Cloud Deploy를 호출하는 데 사용되는 서비스 계정에 대해 설명합니다.
Cloud Deploy는 다음 서비스 계정을 사용합니다.
Cloud Deploy 서비스 에이전트
Cloud Deploy는 이 서비스 계정을 사용해서 프로젝트와 상호작용합니다. 이 서비스 에이전트를 대체 서비스 계정으로 바꿀 수는 없습니다. 하지만 예를 들어 서비스 계정 또는 비공개 Cloud Build 작업자 풀과 같이 프로젝트 외부의 리소스를 사용하는 경우 등에는 이에 대한 권한을 수정할 수 있습니다.
Cloud Deploy 실행 서비스 계정
Cloud Deploy는 이 서비스 계정을 사용해서 Cloud Build에서 렌더링 및 배포 작업을 실행합니다. 이 계정은 Cloud Storage 버킷 읽기 및 쓰기와 배포 대상 액세스를 위해 충분한 권한이 필요합니다.
실행을 위한 기본 서비스 계정은 기본 Compute Engine 서비스 계정입니다. 대상 구성에서 대체 서비스 계정을 지정할 수 있습니다.
Cloud Deploy 자동화 서비스 계정
이는 Cloud Deploy에서 자동화를 수행하는 데 사용하는 서비스 계정입니다. 기본 실행 서비스 계정 또는 다른 서비스 계정일 수 있습니다. 이 서비스 계정에 대한 자세한 내용은 자동화 서비스 계정을 참조하세요.
서비스 계정 권한 수정 및 대체 서비스 계정 만들기 방법에 대한 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요.
Cloud Deploy 서비스 에이전트
Cloud Deploy 서비스 에이전트는 Cloud Deploy가 Cloud Deploy에 사용되는 다른 Google Cloud 서비스와 상호작용하기 위해 사용하는 서비스 계정입니다. 이러한 서비스에는 Cloud Build, Pub/Sub, Cloud 감사 로그가 포함됩니다.
이 서비스 계정의 이름은 다음 패턴을 따릅니다.
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
이 서비스 에이전트를 대체 서비스 계정으로 바꿀 수는 없습니다. 하지만 실행 환경의 일부로 구성된 다른 프로젝트의 비공개 풀에 대해 액세스를 허용하는 등의 경우에는 권한을 추가해야 할 수 있습니다.
Cloud Deploy 실행 서비스 계정
기본적으로 Cloud Deploy는 기본 Compute Engine 서비스 계정을 사용하여 실행됩니다.
이 서비스 계정의 이름은 다음 패턴을 따릅니다.
[project-number]-compute@developer.gserviceaccount.com
이 서비스 계정은 여러 제품에서 사용되므로 광범위한 권한을 보유할 수 있습니다. 여기에서는 Cloud Deploy가 다른 서비스 계정으로 실행되도록 실행 환경을 변경하는 것이 좋습니다.
대상 정의에서 executionConfigs.privatePool.serviceAccount
속성 또는 executionConfigs.defaultPool.serviceAccount
속성을 사용해서 각 대상에 대해 실행 서비스 계정을 변경할 수 있습니다.
이러한 속성에 대해 설정하는 서비스 계정에는 Cloud Deploy 프로젝트의 Cloud Deploy Runner 역할이 있어야 합니다. 기본 실행 서비스 계정에 이 역할이 없으면 다음 명령어를 실행합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:$(gcloud projects describe PROJECT_ID \
--format="value(projectNumber)")-compute@developer.gserviceaccount.com \
--role="roles/clouddeploy.jobRunner"
선택한 런타임에 배포하려면 서비스 계정에 런타임별 권한도 필요합니다. Google Kubernetes Engine의 경우 컨테이너 개발자 및 서비스 계정 사용자 역할을 선택할 수 있습니다. Cloud Run의 경우 Cloud Run 개발자 및 서비스 계정 사용자 역할을 선택할 수 있습니다. 맞춤 타겟에서 사용하는 다른 런타임에는 자체 권한이 필요할 수 있습니다.
생성할 서비스 계정
렌더링 및 배포에 기본 실행 서비스 계정을 사용하지 않도록 선택한 경우에는 하나 이상의 대체 서비스 계정을 사용하도록 만들어야 합니다. 이러한 서비스 계정은 Cloud Deploy에서 실행되며 대상 구성에 구성되어 있습니다.
2개 이상을 만드는 한 가지 이유는 특정 서비스 계정 또는 프로덕션 대상과 같이 제한된 대상을 배포하도록 계정을 지정하기 위한 것입니다.
한 가지 가능한 방법은 전달 파이프라인별로 구분된 서비스 계정을 사용하는 것입니다. 이러한 각 서비스 계정에는 렌더링 및 배포에 충분한 권한이 있는 역할이 포함됩니다.
Google Kubernetes Engine에 배포하기 위해서는 서비스 계정을 하나의 네임스페이스로 제한할 수 있습니다.
다른 프로젝트의 서비스 계정 사용
실행 환경에서 대상을 만드는 프로젝트와 다른 프로젝트에 있는 서비스 계정을 지정할 수 있습니다.
서비스 계정을 소유하는 프로젝트에서 프로젝트 간 SA 조직 정책을 사용 설정합니다.
Cloud Deploy 서비스 에이전트(
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
)에 서비스 계정에 대한iam.serviceAccounts.actAs
권한을 부여합니다.이 경우
project-number
는 대상을 만든 프로젝트입니다.또한 프로젝트와 Cloud Deploy가 실행 중인 프로젝트와 다른 프로젝트에 있는 각 서비스 계정에서 해당 권한이 포함된
roles/iam.serviceAccountUser
역할을 부여할 수도 있습니다.Cloud Build 서비스 에이전트(
service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com
)에roles/iam.serviceAccountTokenCreator
역할을 부여합니다.이 경우
project-number
는 대상을 만든 프로젝트이며 이 역할은 서비스 계정의 프로젝트에 부여됩니다.서비스 계정이 Cloud Deploy가 실행 중인 프로젝트와 다른 프로젝트에 있는 경우 대상 실행 환경에 구성된 서비스 계정마다 이 역할을 부여해야 합니다.
서비스 계정 또는
roles/iam.serviceAccountUser
역할에 대한gcloud deploy releases create
및gcloud deploy rollouts create
iam.serviceAccounts.actAs
권한 호출자를 부여합니다.
필수 권한
렌더링 구성에 사용되는 서비스 계정은 Google Cloud Deploy 리소스가 저장된 Cloud Storage 버킷에 액세스하기 위해 충분한 권한이 있어야 합니다(배포 파이프라인, 출시 버전, 출시).
roles/clouddeploy.jobRunner
역할에는 렌더링 서비스 계정(privatePool
또는defaultPool
)에 필요한 모든 권한이 포함되어 있습니다.배포에 사용되는 서비스 계정은 대상 클러스터에 배포를 위해 충분한 권한 및 Cloud Storage 버킷 액세스를 위한 권한이 있어야 합니다.
출시 버전을 만들기 위해 Cloud Deploy를 호출하는 서비스 계정에는
clouddeploy.releaser
역할이 있어야 합니다. 또한 매니페스트를 렌더링하는 서비스 계정을 사용하려면iam.serviceAccount.actAs
권한이 있어야 합니다(예를 들어roles/iam.serviceAccountUser
역할 사용).출시 버전을 승격하기 위해 또는
rollout
을 만들기 위해 Cloud Deploy를 호출하는 서비스 계정은 대상에 배포되는 서비스 계정을 사용하기 위한iam.serviceAccount.actAs
권한이 있어야 합니다(예를 들어roles/iam.serviceAccountUser
역할 사용).자동화에 대해 구성된 서비스 계정에는 자동화할 작업을 실행할 수 있는 권한이 있어야 합니다. 자세히 알아보기
자동화 서비스 계정
출시의 일부 작업을 자동화할 수 있습니다. Cloud Deploy는 기본 실행 서비스 계정, 실행 서비스 계정으로 사용되는 기본이 아닌 서비스 계정 또는 다른 서비스 계정일 수 있는 자동화 서비스 계정을 사용하여 이러한 자동화를 실행합니다.
자동화 서비스 계정에 대해 자세히 알아보세요.
다음 단계
- IAM에 대해 알아보기
- 사전 정의된 Cloud Deploy 역할 자세히 알아보기
- 서비스 계정 만들기 및 관리 방법 알아보기