이 페이지에서는 Cloud Build 구성 파일과 Secure Source Manager 저장소의 트리거 YAML 파일을 사용하여 Secure Source Manager에서 빌드를 자동으로 호출하는 방법을 자세히 설명합니다.
기본적으로 Secure Source Manager는 Google 관리 서비스 에이전트를 사용하여 Cloud Build 및 기타 리소스와 상호작용합니다. 팀 권한을 격리하려면 사용자 관리 서비스 계정을 저장소와 연결하여 저장소별 ID를 구성하는 것이 좋습니다. Secure Source Manager는 저장소와 연결된 사용자 관리 서비스 계정을 사용하여 빌드를 트리거합니다.
기본 서비스 에이전트와 달리 커스텀 Cloud Build 서비스 계정에 iam.serviceAccounts.actAs 권한으로 사용자 관리 서비스 계정을 구성할 수 있습니다. 이렇게 하면 빌드 권한을 해당 저장소로 제한하면서 커스텀 서비스 계정을 사용하여 빌드를 실행할 수 있습니다.
시작하기 전에
- Secure Source Manager 인스턴스를 만듭니다.
- Secure Source Manager 저장소를 만듭니다.
Cloud Build 사용자 지정 서비스 계정을 구성합니다. Cloud Build가 Secure Source Manager 저장소에서 읽을 수 있도록 하려면 Cloud Build 서비스 계정 (기본 서비스 계정 또는 사용자 관리 서비스 계정)에 다음 역할을 부여합니다.
- Secure Source Manager 인스턴스의 Secure Source Manager 인스턴스 접근자 (
roles/securesourcemanager.instanceAccessor) - 저장소의 Secure Source Manager 저장소 리더
사용 사례에 따라 Cloud Build 서비스 계정에 추가 역할이 필요할 수 있습니다. 예를 들면 다음과 같습니다.
- Cloud Logging에 빌드 로그를 저장하려면 Cloud Build 서비스 계정에 로그 작성자 역할 (
roles/logging.logWriter)을 부여합니다. - Secret Manager의 보안 비밀에 액세스하려면 Cloud Build 서비스 계정에 Secret Manager 보안 비밀 접근자 역할(
roles/secretmanager.secretAccessor)을 부여합니다.
빌드 로그에 대한 자세한 내용은 빌드 로그 설정을 참조하세요.
- Secure Source Manager 인스턴스의 Secure Source Manager 인스턴스 접근자 (
빌드가 작업자 풀에서 실행되는 경우 빌드가 실행되는 프로젝트에서 저장소의 사용자 관리 서비스 계정에 Cloud Build WorkerPool 사용자 역할 (
roles/cloudbuild.workerPoolUser)을 부여합니다.
필요한 역할
Secure Source Manager 저장소를 Cloud Build에 연결하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
- Secure Source Manager 저장소 작성자 (
roles/securesourcemanager.repoWriter) 저장소 - Secure Source Manager 인스턴스의 Secure Source Manager 인스턴스 접근자 (
roles/securesourcemanager.instanceAccessor)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
Secure Source Manager 역할 부여에 대한 자세한 내용은 IAM으로 액세스 제어 및 사용자에게 인스턴스 액세스 권한 부여를 참조하세요.
필요한 서비스 계정 역할
Secure Source Manager를 Cloud Build에 연결하려면 저장소별 ID에 대한 IAM 권한을 구성해야 합니다.
저장소별 ID 설정
저장소별 ID를 사용하려면 권한을 구성해야 합니다.
- 사용자: 저장소 서비스 계정을 구성하는 사용자에게
서비스 계정 사용자 역할 (
roles/iam.serviceAccountUser)이 사용자 관리 서비스 계정에 필요합니다. 이 권한은 저장소 생성 또는 업데이트 중에 확인됩니다. Secure Source Manager 서비스 에이전트: 저장소 프로젝트의 Secure Source Manager 서비스 에이전트에 사용자 관리 서비스 계정에 대한 서비스 계정 토큰 생성자 역할 (
roles/iam.serviceAccountTokenCreator)을 부여합니다.Secure Source Manager 서비스 에이전트 이메일의 형식은
service-REPOSITORY_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com, 여기서REPOSITORY_PROJECT_NUMBER는 저장소를 호스팅하는 프로젝트의 프로젝트 번호입니다.사용자 관리 서비스 계정:
- 사용자 관리 서비스 계정에 커스텀 Cloud Build 서비스 계정(저장소 프로젝트)에 대한 서비스 계정 사용자 역할 (
roles/iam.serviceAccountUser)을 부여합니다. - 사용자 관리 서비스 계정에 빌드가 실행되는 프로젝트에 대한 Cloud Build 편집자 역할(
roles/cloudbuild.builds.editor) 및 서비스 사용량 소비자 역할 (roles/serviceusage.serviceUsageConsumer)을 부여합니다.
- 사용자 관리 서비스 계정에 커스텀 Cloud Build 서비스 계정(저장소 프로젝트)에 대한 서비스 계정 사용자 역할 (
IAM 역할을 부여하는 방법에 대한 자세한 내용은 단일 역할 부여 또는 취소를 참조하세요.
빌드 구성 파일 만들기
빌드 구성 파일은 Cloud Build가 빌드 작업을 수행하는 데 필요한 필드를 정의합니다. YAML 구문을 사용하여 빌드 구성 파일을 작성할 수 있습니다.
빌드 구성 파일은 빌드하려는 브랜치에서 만들 수 있습니다.
빌드 구성 파일을 만들려면 다음을 수행합니다.
- Secure Source Manager 웹 인터페이스에서 Cloud Build에 연결할 저장소를 선택합니다.
- Cloud Build를 사용하여 빌드할 브랜치를 선택합니다.
빌드 구성 파일을 만듭니다. 빌드 구성 파일을 만드는 방법에 대한 자세한 내용은 빌드 구성 파일 만들기의 안내를 따르세요.
변경사항을 브랜치에 커밋합니다.
트리거 파일 만들기
트리거 구성 파일은 저장소의 기본 브랜치 에서 만들어야 합니다.
트리거 구성 파일을 만들려면 다음을 수행합니다.
- 로컬 저장소 또는 Secure Source Manager 웹 인터페이스에서 기본 브랜치 로 전환합니다.
.cloudbuild/triggers.yaml파일을 만듭니다..cloudbuild/triggers.yaml파일에서 트리거를 구성합니다.triggers: - name: TRIGGER_NAME project: PROJECT_ID configFilePath: CLOUD_BUILD_CONFIG_PATH eventType: EVENT_TYPE ignoredGitRefs: