Cloud Build용 커스텀 서비스 계정

개요

Cloud Functions는 Cloud 함수를 빌드하고 배포할 때 Cloud Build를 활용합니다. 기본적으로 Cloud Functions는 빌드를 수행할 때 기본 Cloud Build 서비스 계정을 주 구성원으로 사용합니다. 이 문서에서는 함수를 배포할 때 사용자가 만든 서비스 계정을 Cloud Build가 사용할 계정으로 전달하는 방법을 설명합니다.

Google Cloud CLI, Google Cloud 콘솔 또는 Cloud Functions API를 사용하여 커스텀 서비스 계정으로 함수를 배포할 수 있습니다.

Cloud Build가 함수를 빌드할 때 사용할 다른 서비스 계정을 제공해야 하는 상황은 다음과 같습니다.

  • VPC-SC 경계에 추가할 서비스 계정을 더 세부적으로 제어하려는 경우

  • 각 권한을 개별적으로 취소하지 않고 Cloud Build를 기본 서비스 계정의 권한과 다른 권한으로 실행하려는 경우

  • 다른 목적에 최적화된 Cloud Build 서비스 계정을 공유하지 않고 함수에 대한 세분화된 Cloud Build 권한을 설정하려는 경우

API 사용 설정

이 기능을 사용하려면 IAM API를 사용 설정해야 합니다.

Google Cloud CLI를 사용하여 Cloud 함수를 배포하는 데 필요한 API를 사용 설정하거나 Google Cloud 콘솔을 사용하세요.

gcloud services enable iam.googleapis.com

서비스 계정 구성

이 문서에서는 새 서비스 계정을 만들고 필요한 권한을 부여하는 방법을 설명합니다. 기존 서비스 계정을 사용하려면 사용할 서비스 계정의 이메일 주소가 필요합니다. 자세한 내용은 사용자 지정 서비스 계정 구성을 참조하세요.

다음과 같이 기존 서비스 계정을 보거나 Google Cloud 콘솔을 사용할 수 있습니다.

gcloud iam service-accounts list

서비스 계정 만들기

Google Cloud CLI를 사용하여 서비스 계정을 만들거나 Google Cloud 콘솔을 사용합니다.

gcloud iam service-accounts create SA_EMAIL

SA_EMAIL서비스 계정의 이메일 주소로 바꿉니다.

권한 부여

사용하는 서비스 계정에 다음 역할이 필요합니다.

  • roles/iam.serviceAccountUser— 서비스 계정에는 이 역할이 필요하지 않지만 함수를 배포하는 사용자에게 이 역할이 필요합니다.
  • roles/logging.logWriter— Cloud Logging에서 빌드 로그를 저장하는 데 필요합니다.
  • roles/artifactregistry.writer— Artifact Registry에 빌드 이미지를 저장하는 데 필요합니다.
  • roles/storage.objectAdmin - Cloud Storage 버킷에서 함수 소스를 검색하고 Container Registry에 빌드 이미지를 저장하는 데 필요합니다.

Google Cloud CLI를 사용하거나 Google Cloud 콘솔을 사용하여 다음 역할을 부여합니다.

gcloud projects add-iam-policy-binding SA_PROJECT_ID \
--member=user:DEPLOYING_USER_EMAIL \
--role=roles/iam.serviceAccountUser

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
    --role=roles/logging.logWriter

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/artifactregistry.writer

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/storage.objectAdmin

다음을 바꿉니다.

커스텀 서비스 계정으로 함수 배포

Google Cloud CLI를 사용하여 Cloud Build용 커스텀 서비스 계정을 사용하는 함수를 배포할 수 있습니다.

  • --build-service-account 플래그는 빌드 단계에 사용될 사용자 인증 정보를 보유한 IAM 서비스 계정을 지정합니다. 커스텀 서비스 계정이 제공되지 않으면 함수는 프로젝트의 기본 서비스 계정을 Cloud Build에 사용합니다.
  • 필요한 경우 --build-worker-pool 플래그로 비공개 풀을 지정하여 사용할 수도 있습니다.

gcloud beta functions deploy FUNCTION_NAME \
   --gen2 \
   --region=REGION \
   --project=PROJECT_ID \
   --runtime=RUNTIME \
   --entry-point=CODE_ENTRYPOINT \
   --build-service-account=projects/PROJECT_ID/serviceAccounts/SA_EMAIL \
   --memory=256Mi \
   --trigger-http \
   --source=.

다음을 바꿉니다.