사용자 지정 서비스 계정 구성

이 페이지에서는 빌드에 사용자 지정 서비스 계정을 구성하는 방법을 설명합니다.

기본적으로 Cloud Build는 특별 서비스 계정을 사용하여 자동으로 빌드를 실행합니다. 이 서비스 계정을 Cloud Build 서비스 계정이라고 하며 Google Cloud 프로젝트에서 Cloud Build API를 사용 설정하면 자동으로 생성됩니다. 이 서비스 계정에는 기본적으로 빌드 업데이트나 로그 작성 기능과 같은 여러 권한이 있습니다.

프로젝트당 서비스 계정 수를 지정할 수 있습니다. 서비스 계정 여러 개를 관리하면 수행되는 태스크에 따라 이러한 서비스 계정에 각기 다른 권한을 부여할 수 있습니다. 예를 들어 이미지를 빌드하여 Container Registry에 푸시하는 데 서비스 계정 하나를, 이미지를 빌드하여 Artifact Registry에 푸시하는 데 다른 서비스 계정을 사용할 수 있습니다.

제한사항

  • 사용자 지정 서비스 계정은 수동 빌드에서만 작동하며 빌드 트리거에서는 작동하지 않습니다.
  • 빌드를 실행하는 동일한 Cloud 프로젝트에서 사용자가 지정한 서비스 계정을 만들어야 합니다.

시작하기 전에

  • Cloud Build and IAM API를 사용 설정합니다.

    API 사용 설정

  • 이 가이드의 명령줄 예시를 사용하려면 Cloud SDK를 설치하고 구성합니다.

  • 사용하려는 서비스 계정을 만들었는지 확인합니다.

빌드 로그 설정

빌드에 고유한 서비스 계정을 지정하려면 빌드 로그가 Cloud Logging 또는 자체 Cloud Storage 버킷에 저장되도록 구성해야 합니다.

필수 IAM 권한

서비스 계정에 IAM 역할을 부여하는 방법은 프로젝트 구성원을 위한 액세스 구성을 참조하세요.

빌드 실행

  1. 프로젝트 루트 디렉터리에 cloudbuild.yaml 또는 cloudbuild.json이라는 Cloud Build 빌드 구성 파일을 만듭니다.

  2. 빌드 구성 파일에서 다음 안내를 따릅니다.

    • 서비스 계정의 이메일 주소를 지정하는 serviceAccount 필드를 추가합니다.
    • 빌드 로그를 Cloud Storage 버킷에 저장하는 경우 Cloud Storage 버킷을 가리키는 logsBucket 필드를 추가합니다.

    YAML

    steps:
    - name: 'bash'
      args: ['echo', 'Hello world!']
    logsBucket: 'LOGS_BUCKET_LOCATION'
    serviceAccount: 'projects/PROJECT_NAME/serviceAccounts/SERVICE_ACCOUNT'
    

    JSON

    {
      "steps": [
      {
        "name": "bash",
        "args": [
          "echo",
          "Hello world!"
        ]
      }
      ],
      "logsBucket": "LOGS_BUCKET_LOCATION",
      "serviceAccount": "projects/PROJECT_NAME/serviceAccounts/SERVICE_ACCOUNT"
    }
    

    빌드 구성 파일의 자리표시자 값을 다음으로 바꿉니다.

    • LOGS_BUCKET_LOCATION: 빌드 로그를 저장할 Cloud Storage 버킷입니다. 예를 들면 gs://mylogsbucket입니다.
    • PROJECT_NAME: 빌드를 실행 중인 Cloud 프로젝트 이름입니다.
    • SERVICE_ACCOUNT: 빌드에 지정할 서비스 계정의 이메일 주소나 고유 ID입니다.
  3. 빌드 구성 파일을 사용하여 빌드를 시작합니다.

     gcloud builds submit --config CONFIG_FILE_PATH SOURCE_DIRECTORY
    

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

  • CONFIG_FILE_PATH: 빌드 구성 파일의 경로입니다.
  • SOURCE_DIRECTORY: 소스 코드의 경로나 URL입니다.

gcloud builds submit 명령어에서 CONFIG_FILE_PATHSOURCE_DIRECTORY를 지정하지 않으면 Cloud Build는 빌드 구성 파일과 소스 코드가 현재 작업 디렉터리에 있다고 가정합니다.

다음 단계