Cloud Build 서비스 계정 변경

이 동작을 재정의하지 않는 한 Cloud Build는 사용자 대신 빌드를 실행할 Cloud Build 서비스 계정을 자동으로 선택합니다. 이 서비스 계정에는 Cloud Source Repositories 및 프로젝트의 Cloud Storage 버킷에 대한 액세스 권한과 같이 사용 사례에 불필요한 권한이 다양하게 있을 수 있습니다.

2024년 5월과 6월 몇 주에 걸쳐 Cloud Build가 새 프로젝트에서 서비스 계정을 사용하는 방법에 대한 기본 동작이 변경되었습니다. 이러한 변경사항은 향후 고객의 기본 보안 상황을 개선합니다. 조직 정책 제약조건을 구성하여 이러한 변경사항을 선택 해제할 수 있습니다.

프로젝트가 영향을 받는 방식은 조직에 속해 있는지 여부에 따라 다릅니다.

  • 조직이 없는 프로젝트. 변경 후 프로젝트에서 Cloud Build API를 사용 설정하면 Cloud Build API 또는 Google Cloud CLI를 통해 제출된 빌드에 기본적으로 Compute Engine 서비스 계정을 사용합니다. 이러한 프로젝트에서는 기존 Cloud Build 서비스 계정을 사용할 수 없지만 사용자 지정 서비스 계정을 사용할 수 있습니다.

  • 조직이 포함된 프로젝트. 변경 후 프로젝트에서 Cloud Build API를 사용 설정하면 Cloud Build API 또는 Google Cloud CLI를 통해 제출된 빌드에 기본적으로 Compute Engine 서비스 계정을 사용합니다. 사용자 지정 서비스 계정을 사용하거나 조직에서 Cloud Build 서비스 계정을 사용 설정하여 변경사항을 선택 해제할 수 있습니다.

  • 조직이 없는 기존 프로젝트. 변경 전에 프로젝트에서 Cloud Build API를 사용 설정한 경우 기본적으로 모든 빌드에 기존 Cloud Build 서비스 계정을 사용하여 이전 동작을 계속 진행합니다. Compute Engine 서비스 계정을 선택하거나 직접 만들어 사용자 지정 서비스 계정을 계속 사용할 수 있습니다.

  • 조직이 있는 기존 프로젝트. 변경 전에 프로젝트에서 Cloud Build API를 사용 설정하면 기본적으로 기존 Cloud Build 서비스 계정을 사용하여 이전 동작을 계속 진행합니다. 사용자 지정 서비스 계정을 계속 사용할 수도 있습니다.

  • 트리거. 프로젝트의 기본 서비스 계정이 기존 Cloud Build 서비스 계정이 아닌 경우 트리거를 만들거나 업데이트할 때 서비스 계정을 지정해야 합니다.

  • API. Cloud Build API를 사용 설정하면 Identity and Access Management API도 사용 설정됩니다.

  • Cloud Build 서비스 계정 이름: Cloud Build 서비스 계정은 기존 Cloud Build 서비스 계정이라고 합니다.

취해야 할 조치는 무엇인가요?

조직에 속한 경우 조직은 선택한 제약조건으로 조직 정책을 설정하여 모든 프로젝트의 동작을 구성할 수 있습니다.

조직에서는 다음 조직 정책 불리언 제약조건을 설정하여 이러한 변경사항을 선택 해제할 수 있습니다.

  • 미적용: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • 미적용: constraints/cloudbuild.useComputeServiceAccount
  • 적용됨: constraints/cloudbuild.useBuildServiceAccount

조직 정책을 조정할 수 없거나 조정하지 않으려 하고 변경 후 Cloud Build API를 사용 설정하면 Compute Engine 기본 서비스 계정 또는 사용자가 만든 서비스 계정에 빌드에 대한 충분한 권한이 있는지 검증합니다. 특히 빌드를 제출하는 사용자에게는 서비스 계정에 대한 iam.serviceAccounts.actAs 권한이 있어야 합니다.

새 조직 정책 제약조건

Cloud Build에 구성을 위한 새로운 조직 정책 불리언 제약조건이 도입되었습니다.

  • 기존 Cloud Build 서비스 계정을 사용할 수 있습니다.
  • 조직의 모든 프로젝트의 기본 서비스 계정입니다.

조직 정책을 수정하려면 Google Cloud 콘솔 또는Google Cloud CLI를 사용할 수 있습니다.

조직 정책에 대해 자세히 알아보려면 조직 정책 서비스 소개를 참조하세요.

기존 Cloud Build 서비스 계정 가용성 구성

Cloud Build API를 사용 설정할 때 기존 Cloud Build 서비스 계정 가용성을 구성하기 위해 Cloud Build에 다음 불리언 정책 제약조건이 도입됩니다.

  • 미적용: constraints/cloudbuild.disableCreateDefaultServiceAccount. 새 프로젝트에서 기존 Cloud Build 서비스를 사용할 수 있습니다.

  • 적용됨: constraints/cloudbuild.disableCreateDefaultServiceAccount. 새 프로젝트에서 기존 Cloud Build 서비스 계정을 사용할 수 없습니다. 이는 제약조건의 기본값입니다.

이 제약조건은 변경사항이 출시된 후에 Cloud Build API를 사용 설정하는 프로젝트에만 영향을 미칩니다. 정책 제약조건을 적용하지 않으면 해당 구성이 활성화되었을 때 API를 사용 설정하는 모든 프로젝트에 변경사항이 영구적으로 적용됩니다. 이전에 서비스 계정을 사용할 수 있었던 프로젝트에서는 기존 Cloud Build 서비스 계정 가용성을 중지할 수 없습니다. 하지만 서비스 계정을 사용할 수 있는 경우에도 다음 섹션에 설명된 대로 조직 내 사용자가 이를 사용하지 못하도록 할 수 있습니다.

조직의 기본 서비스 계정 구성

조직에서 어떤 기본 서비스 계정을 사용할지 구성하기 위해 Cloud Build에서는 두 가지 새로운 정책 불리언 제약조건을 도입합니다.

  • constraints/cloudbuild.useBuildServiceAccount: Cloud Build 기존 서비스 계정 사용을 구성합니다.
  • constraints/cloudbuild.useComputeServiceAccount: Compute Engine 기본 서비스 계정의 사용을 구성합니다.

이러한 정책을 서로 독립적으로 구성할 수 있지만 다음 시나리오에서 적용 규칙을 조합할 때 가장 유용합니다.

  • 수동으로 제출된 빌드 및 트리거된 빌드 모두에 Compute Engine 기본 서비스 계정을 사용합니다. 조직 정책에 다음 제약조건을 설정합니다.

    • 미적용: constraints/cloudbuild.useBuildServiceAccount
    • 적용됨: constraints/cloudbuild.useComputeServiceAccount
  • 수동으로 제출된 빌드와 트리거된 빌드 모두에 사용자 지정 서비스 계정을 사용합니다. 일반적으로 가장 안전한 옵션입니다. 조직 정책에 다음 제약조건을 설정합니다.

    • 미적용: constraints/cloudbuild.useBuildServiceAccount
    • 미적용: constraints/cloudbuild.useComputeServiceAccount
  • Cloud Build 기존 서비스 계정을 계속 사용합니다. 관련된 보안 절충안을 알고 있으면 조직 정책에 다음 제약조건을 설정합니다.

    • 미적용: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • 미적용: constraints/cloudbuild.useComputeServiceAccount
    • 적용됨: constraints/cloudbuild.useBuildServiceAccount
  • 변경 전에 Cloud Build API를 사용 설정한 프로젝트에 대해 Cloud Build 기존 서비스 계정을 계속 사용하고, 새 프로젝트에는 Compute Engine 기본 서비스 계정을 사용합니다. 관련된 보안 장단점을 이해하고 조직 정책에 다음 제약조건을 설정합니다.

    • 적용됨: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • 적용됨: constraints/cloudbuild.useComputeServiceAccount
    • 적용됨: constraints/cloudbuild.useBuildServiceAccount

프로젝트의 현재 기본 서비스 계정 가져오기

Cloud Build에서 프로젝트의 기본값으로 사용하는 서비스 계정을 확인하려면 Google Cloud CLI 또는 Cloud Build API를 사용하면 됩니다.

gcloud CLI

다음 명령어를 실행하여 현재 프로젝트의 기본 서비스 계정을 가져옵니다.

gcloud builds get-default-service-account

Cloud Build API

cURL을 사용하여 Cloud Build API를 호출합니다.

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/defaultServiceAccount

자리표시자 값을 다음으로 바꿉니다.