조직 정책 기반 게이트 빌드

Cloud Build를 사용하면 조직 정책(constraints/cloudbuild.allowedIntegrations)을 정의하여 빌드 트리거를 호출할 수 있는 외부 서비스를 제어할 수 있습니다. 예를 들어 트리거가 GitHub 저장소 변경사항을 리슨하지만 GitHub가 조직 정책에서 거부된 경우에는 트리거가 실행되지 않습니다. 조직 또는 프로젝트에 대해 허용되는 값 또는 거부되는 값을 제한 없이 지정할 수 있습니다.

이 페이지에서는 Google Cloud Console 및 gcloud 명령줄 도구를 사용하여 통합을 위해 조직 정책(constraints/cloudbuild.allowedIntegrations)을 설정하는 방법을 설명합니다.

시작하기 전에

  • API Cloud Build and Organization Policy 사용 설정

    API 사용 설정

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

  • 조직 정책을 설정, 변경, 삭제하려면 조직 정책 관리자(roles/orgpolicy.policyAdmin) 역할이 있어야 합니다. 계정에 역할을 추가하는 방법을 알아보려면 조직 정책 관리자 추가를 참조하세요.

허용된 통합에 대한 조직 정책 설정

이 섹션에서는 허용된 통합의 빌드를 정의하도록 조직 정책(constraints/cloudbuild.allowedIntegrations)을 설정하는 방법을 설명합니다.

Console

  1. Google Cloud Console에서 조직 정책 페이지를 엽니다.

    조직 정책 페이지 열기

  2. 허용되는 통합(Cloud Build) 정책이 포함된 행을 클릭합니다.

    정책 세부정보 페이지가 표시됩니다.

  3. 정책을 수정하려면 수정을 클릭합니다.

    정책 수정 페이지가 표시됩니다.

  4. 적용 대상 섹션에서 맞춤설정을 선택하여 정책 정의를 설정합니다.

  5. 정책 시행 섹션에서 바꾸기를 선택하여 정책에 대한 자체 규칙을 정의합니다. 그렇지 않으면 상위 항목과 병합을 선택하여 상위 리소스의 규칙이 설정에 적용되도록 합니다. 자세한 내용은 계층 구조 평가 이해를 참조하세요.

  6. 규칙 섹션에서 규칙 추가를 클릭하여 정책의 새 규칙을 추가합니다.

  7. 정책 값에서 모두 허용을 선택하여 모든 서비스에서 빌드를 허용하거나, 모두 거부를 선택하여 모든 서비스에서 빌드를 거부하거나, 커스텀을 선택하여 특정 서비스에서의 빌드를 허용하거나 거부합니다.

    값으로 커스텀을 선택하면 다음 단계를 완료합니다.

    1. 정책 유형 섹션에서 허용 또는 거부를 선택합니다.

    2. 커스텀 값 섹션에서 빌드를 허용하거나 거부하려는 인스턴스 또는 저장소의 호스트 URL을 입력합니다. 예를 들어 GitHub에서 빌드를 허용하거나 거부하려면 URL을 github.com 또는 www.github.com으로 입력합니다.

      또한 URL이 여러 개 있으면 공백으로 구분하여 입력할 수 있습니다. 예를 들면 github.com ghe.staging-test.com입니다.

      이벤트에 따라 지정하는 호스트 URL은 다음 중 하나입니다.

      • RepoSync 이벤트: 호스트가 source.developers.google.com입니다.
      • GitHub 앱 이벤트: 호스트가 항상 github.com인 JSON 페이로드의 repository.html_url 필드에서 파생됩니다.
      • GitHub Enterprise 이벤트: 호스트가 JSON 페이로드의 repository.html_url 필드에서 파생됩니다. 예를 들면 ghe.staging-test.com입니다.
      • Pub/Sub 이벤트: 호스트가 트리거에 지정된 소스에서 파생됩니다. 트리거에 지정된 소스가 없으면 조직 정책 확인이 없습니다.
      • 웹훅 이벤트: 호스트가 트리거에 지정된 소스에서 파생됩니다. 트리거에 지정된 소스가 없으면 조직 정책 확인이 있습니다.
  8. 규칙을 저장하려면 완료를 클릭합니다.

  9. 다른 규칙을 추가하려면 규칙 추가를 클릭합니다. 그렇지 않고 정책을 저장하려면 저장을 클릭합니다.

gcloud

  1. 터미널 창을 엽니다.

  2. 모든 서비스에서 빌드를 허용하거나 거부하려면 다음 콘텐츠를 사용하여 YAML 파일을 만듭니다.

    name: projects/PROJECT_NUMBER/policies/cloudbuild.allowedIntegrations
    spec:
      inheritFromParent: INHERIT
      rules:
        - ALLOW_OR_DENY: true
    

    각 항목의 의미는 다음과 같습니다.

    • PROJECT_NUMBER는 프로젝트 번호입니다.
    • 정책 규칙이 상위 리소스에서 상속되도록 하려면 INHERITtrue입니다. 그 외의 경우에는 false입니다.
    • 모든 호스트 URL에서 빌드를 허용하려면 ALLOW_OR_DENYallowAll입니다. 그 이외의 경우 denyAll입니다.
    • HOST_URL는 호스트 URL입니다. 예를 들면 github.com입니다. 또한 다음 줄에 추가 URL을 지정할 수 있습니다.

    선택한 서비스에서 빌드를 허용하거나 거부하려면 다음 콘텐츠를 사용하여 YAML 파일을 만듭니다.

    name: projects/PROJECT_NUMBER/policies/cloudbuild.allowedIntegrations
    spec:
      inheritFromParent: INHERIT
      rules:
        - values:
            ALLOW_OR_DENY:
              HOST_URL
              ...
    

    각 항목의 의미는 다음과 같습니다.

    • PROJECT_NUMBER는 프로젝트 번호입니다.
    • 정책 규칙이 상위 리소스에서 상속되도록 하려면 INHERITtrue입니다. 그 외의 경우에는 false입니다.
    • 빌드를 허용할 호스트 URL을 지정하려면 ALLOW_OR_DENYallowedValues입니다. 그 외의 경우에는 deniedValues입니다.
    • HOST_URL는 호스트 URL입니다. 예를 들면 github.com입니다. 또한 다음 줄에 추가 URL을 지정할 수 있습니다.
  3. 다음 명령어를 실행하여 조직 정책을 설정합니다. 여기서 FILE_NAME은 YAML 파일의 이름입니다.

     gcloud org-policies set-policy FILE_NAME
    
  4. 정책이 설정되었는지 확인하려면 다음 명령어를 실행합니다. 여기서 PROJECT_ID는 프로젝트 ID입니다.

     gcloud org-policies describe cloudbuild.allowedIntegrations --effective --project PROJECT_ID
    

허용된 통합을 위한 조직 정책 테스트

이 섹션에서는 빌드 트리거를 사용하여 조직 정책(constraints/cloudbuild.allowedIntegrations)을 테스트하는 방법을 설명합니다.

  1. 아직 만들지 않았으면 빌드 트리거를 만듭니다.

  2. 소스에 변경사항을 푸시합니다.

  3. 정책이 소스에서 빌드를 허용하도록 설정되었으면 빌드 기록 페이지에서 트리거의 빌드 실행을 볼 수 있습니다. 그렇지 않으면 빌드가 실행되지 않습니다. 정책 정의로 제한되는 빌드 기록을 보려면 로그 탐색기 페이지에서 JSON 페이로드 이유 및 거부 이유를 확인합니다.

다음 단계