개발자가 애플리케이션을 미리 보고 배포할 때 기존 서비스 계정을 사용할 수 있으며, App Design Center에서 새 서비스 계정을 자동으로 만들 수도 있습니다. 개발자가 내 서비스 계정을 사용하도록 하려면 다음을 수행해야 합니다.
- 서비스 계정 및 사용자 계정에 IAM 정책 바인딩을 추가합니다.
- 각 리소스를 배포하는 데 필요한 역할을 서비스 계정에 부여합니다.
- 서비스 계정이 생성된 프로젝트 외부에서 배포할 수 있도록 서비스 계정에 권한을 추가합니다.
- 조직 정책을 업데이트하여 서비스 계정을 프로젝트 간에 사용할 수 있도록 합니다.
서비스 계정을 구성하려면 다음 단계를 따르세요.
서비스 에이전트의
roles/iam.serviceAccountUser역할에 대한 IAM 정책 바인딩을 서비스 계정에 추가합니다.gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="serviceAccount:service-SERVICE_ACCOUNT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"다음을 바꿉니다.
SERVICE_ACCOUNT_EMAIL: 서비스 계정 이메일입니다. 예를 들면my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com입니다.SERVICE_ACCOUNT_PROJECT_ID: 서비스 계정이 포함된 프로젝트의 프로젝트 ID입니다.SERVICE_ACCOUNT_PROJECT_NUMBER: 서비스 계정이 포함된 프로젝트의 프로젝트 번호입니다.
사용자가
roles/iam.serviceAccountUser역할을 갖도록 서비스 계정에 IAM 정책 바인딩을 추가합니다.gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="user:USER_EMAIL" \ --role="roles/iam.serviceAccountUser"다음을 바꿉니다.
SERVICE_ACCOUNT_EMAIL: 서비스 계정 이메일입니다. 예를 들면my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com입니다.USER_EMAIL: 배포를 실행하는 사용자의 사용자 이메일입니다.
서비스 계정이 있는 프로젝트에서 스페이스가 포함된 관리 프로젝트에 필요한 서비스 에이전트 역할의 IAM 정책 바인딩을 추가합니다.
gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \ --role="roles/apphub.editor"gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \ --role="roles/config.agent"gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \ --role="roles/serviceusage.serviceUsageAdmin"다음을 바꿉니다.
SERVICE_ACCOUNT_PROJECT_ID: 서비스 계정이 포함된 프로젝트의 프로젝트 ID입니다.MANAGEMENT_PROJECT_NUMBER: 스페이스가 포함된 관리 프로젝트의 프로젝트 번호입니다.
서비스 계정이 있는 프로젝트에서
iam.disableCrossProjectServiceAccountUsage조직 정책 제약 조건이 적용되지 않았는지 확인합니다. 이 제약조건은 기본적으로 적용됩니다.조직 정책 제약조건의 시행을 중지하려면 다음 명령어를 실행합니다.
gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=SERVICE_ACCOUNT_PROJECT_ID다음을 바꿉니다.
SERVICE_ACCOUNT_PROJECT_ID: 서비스 계정이 포함된 프로젝트의 프로젝트 ID입니다.
서비스 계정에 프로젝트에 리소스를 배포하는 데 필요한 역할을 부여합니다. 필수 역할은 개발자가 애플리케이션을 배포할 때 표시됩니다.
예를 들어
roles/run.admin역할을 부여하려면 다음 정책 바인딩을 추가합니다.gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-DEPLOYMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \ --role="roles/run.admin"다음을 바꿉니다.
SERVICE_ACCOUNT_PROJECT_ID: 서비스 계정이 포함된 프로젝트의 프로젝트 ID입니다.DEPLOYMENT_PROJECT_NUMBER: 리소스를 배포할 프로젝트의 프로젝트 번호입니다.
App Design Center는 Infrastructure Manager를 사용하여 콘솔에 애플리케이션을 배포합니다. 자체 서비스 계정을 사용하여 Infrastructure Manager로 배포하려면 프로젝트에 대한 액세스 권한 부여의 단계를 완료하세요.
배포하는 애플리케이션에 개발자 연결을 통해 가져온 비공개 구성요소가 포함되어 있는 경우 다음 단계를 따르세요.
서비스 계정을 만든 프로젝트에서 서비스 계정에
roles/iam.serviceAccountTokenCreator역할을 부여합니다.gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/iam.serviceAccountTokenCreator"다음을 바꿉니다.
SERVICE_ACCOUNT_PROJECT_ID: 서비스 계정이 포함된 프로젝트의 프로젝트 ID입니다.SERVICE_ACCOUNT_EMAIL: 서비스 계정 이메일입니다. 예를 들면my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com입니다.
다음 단계
- 애플리케이션 관리에서 애플리케이션의 수명 주기를 이해합니다.
- 콘솔에서 애플리케이션 배포