서비스 계정 구성

Infrastructure Manager를 사용하여 배포를 만들거나 업데이트하거나 삭제하려면 서비스 계정을 사용해야 합니다. Infra Manager는 이 서비스 계정의 ID를 사용하여 Terraform을 실행합니다.

인프라 관리자 배포에 관한 정보를 보려면 서비스 계정이 필요하지 않습니다.

이 페이지에서는 Infrastructure Manager로 리소스를 배포할 수 있도록 서비스 계정을 구성하는 방법을 설명합니다.

시작하기 전에

  1. Infra Manager 서비스를 사용 설정합니다.
  2. Infra Manager에 사용할 서비스 계정을 만들거나 기존 서비스 계정을 식별합니다.

서비스 계정에 액세스 권한 부여

Infrastructure Manager를 사용하여 배포를 만들거나 업데이트하거나 삭제하려면 개인 사용자가 서비스 계정에 액세스할 수 있어야 합니다.

사용자에게 서비스 계정에 대한 서비스 계정 사용자 (roles/iam.serviceAccountUser) IAM 역할을 부여합니다.

인프라 관리자 권한 부여

Infra Manager를 사용하려면 서비스 계정에 Infra Manager 에이전트 (roles/config.agent) 역할이 필요합니다. Infra Manager가 리소스를 만들고, 업데이트하고, 삭제할 수 있는 권한을 부여합니다.

서비스 계정에 권한을 부여하는 방법에 관한 자세한 내용은 서비스 계정에 대한 액세스 관리를 참고하세요.

스토리지 버킷에 대한 읽기 권한 부여

스토리지 버킷을 사용하여 Infra Manager에서 배포한 Terraform 구성을 저장할 수 있습니다.

구성에 스토리지 버킷을 사용하고 이 스토리지 버킷이 Infra Manager를 실행하는 프로젝트와 다른 프로젝트에 있는 경우 Infra Manager를 호출하는 데 사용하는 서비스 계정에 버킷에 대한 읽기 권한이 있는지 확인해야 합니다. Cloud Storage 권한에 대한 자세한 내용은 Cloud Storage의 IAM 권한을 참고하세요.

스토리지 버킷이 Infra Manager와 동일한 프로젝트에 있고 서비스 계정에 roles/config.agent를 부여한 경우 버킷에 대한 읽기 권한이 이미 사용 설정되어 있습니다.

스토리지 버킷에 구성을 업로드하는 방법에 관한 자세한 내용은 Terraform 구성 업로드를 참고하세요.

구성에 정의된 리소스에 대한 권한 부여

Terraform 구성에 정의된 Google Cloud 리소스를 만들고 관리하려면 서비스 계정에 이러한 리소스와 관련된 권한이 필요합니다.

  • 배포 중인 Terraform 구성에 정의된 Google Cloud 리소스와 관련된 권한 예를 들어 Compute Engine VM 인스턴스 만들기 권한은 compute.instances.create입니다.

  • 업데이트하는 배포의 Terraform 구성에 정의된 Google Cloud 리소스와 관련된 권한

    예를 들어 배포에서 Compute Engine VM을 프로비저닝한 후 Compute Engine VM이 포함되지 않은 구성을 사용하여 배포를 업데이트한다고 가정해 보겠습니다. 이 경우 버전을 업데이트할 때 서비스 계정에 다음이 필요합니다.

    • 새 구성에서 정의된 리소스의 권한입니다.

    • 삭제되는 리소스의 권한(예: 이 예시의 Compute Engine VM)

Terraform 구성의 리소스에 필요한 권한을 식별하는 데 도움이 필요하면 사전 정의된 역할 선택을 참고하세요.

서비스 계정에 권한을 부여하는 방법에 관한 자세한 내용은 서비스 계정에 대한 액세스 관리를 참고하세요.

프로젝트에 액세스 권한을 부여합니다.

서비스 계정이 인프라 관리자 서비스가 실행되는 프로젝트와 다른 프로젝트에 있는 경우 추가 권한이 필요합니다.

이러한 추가 권한을 부여하려면 다음 단계를 따르세요.

  1. 서비스 계정이 있는 프로젝트에서 iam.disableCrossProjectServiceAccountUsage 조직 정책 제약조건이 적용되지 않았는지 확인합니다. 이 제약조건은 기본적으로 적용됩니다.

    이 조직 정책 제약조건을 중지하려면 다음을 실행합니다.

       gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage
           --project=SERVICE_ACCOUNT_PROJECT_ID
    

    SERVICE_ACCOUNT_PROJECT_ID를 서비스 계정이 포함된 프로젝트의 ID로 바꿉니다.

  2. 서비스 계정이 있는 프로젝트에서 배포를 만드는 프로젝트의 Infra Manager 서비스 에이전트에 대해 roles/iam.serviceAccountUser 역할을 부여합니다.

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountUser"
    

    위의 명령어에서 자리표시자 값을 다음으로 바꿉니다.

    • SERVICE_ACCOUNT_PROJECT_ID: 서비스 계정이 포함된 프로젝트의 프로젝트 ID입니다.
    • INFRA_MANAGER_PROJECT_NUMBER: 배포를 만들 프로젝트의 프로젝트 번호입니다. 이렇게 하면 서비스 에이전트의 이메일 ID가 생성됩니다. service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com
  3. Infra Manager가 서비스 계정을 대신하여 Cloud Build 작업을 만들 수 있도록 하려면 서비스 계정에 roles/iam.serviceAccountTokenCreator 역할을 부여합니다. 이 역할은 배포를 만드는 프로젝트의 Infra Manager 서비스 에이전트용입니다.

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" \
         --role="roles/iam.serviceAccountTokenCreator"
    

다음 단계