Cloud Build에 대한 액세스 권한 부여 - 사전 정의된 역할

이 기사에서는 팀 구성원이 프로젝트에서 Cloud Build를 사용하는 데 필요한 권한과 이를 위해 사용할 수 있는 사전 정의된 역할을 살펴보겠습니다.

필요한 권한



먼저 팀원에게 필요한 권한을 검토해 보겠습니다.

Cloud Build API에 액세스하는 사용자는 다음 권한이 있어야 합니다.
  • storage.buckets.get
  • storage.buckets.list
  • storage.objects.create
  • serviceusage.services.use

  • Cloud Build가 로그를 Google Cloud Storage에 푸시하기 때문에 스토리지 권한이 필요하고, serviceusage.services.use는 프로젝트에 대한 할당량 및 청구를 사용할 수 있도록 하기 때문에 필요합니다.

    위에서 언급한 권한 외에도 팀에는 다음과 같은 obvious ones이 필요합니다.
  • cloudbuild.builds.create
  • cloudbuild.builds.update
  • cloudbuild.builds.get
  • cloudbuild.builds.list

  • 미리 정의된 역할



    다음 역할은 위에서 언급한 권한을 팀에 부여할 수 있습니다.

    (storage.buckets.get 및 storage.buckets.list)
  • roles/storage.admin
  • roles/viewer

  • (스토리지.객체.만들기)
  • roles/storage.objectCreator

  • (서비스 사용.서비스.사용)
  • roles/serviceusage.serviceUsageConsumer

  • 물론 roles/cloudbuild.builds.editor 빌드를 만들고 취소합니다.

    액세스 거부 오류



    Cloud Build 로그의 known issue으로 인해 팀 구성원이 기본 역할(뷰어/편집자/소유자) 중 하나가 아닌 한 여전히 액세스 거부 오류가 발생합니다.

    이 오류는 GCS에 저장된 Cloud Build 로그에 대한 액세스 권한이 없기 때문에 발생합니다. 이러한 로그는 기본 역할에만 사용할 수 있는 Google 관리 버킷에 저장됩니다.

    이는 빌드 자체에는 영향을 미치지 않지만 해당 로그에는 영향을 미칩니다. 팀은 뷰어/편집자/소유자 역할 없이도 Cloud Build를 계속 사용할 수 있습니다.

    액세스 거부 오류: 솔루션



    사용자에게 기본 역할을 부여하지 않고 액세스 거부 오류를 방지하는 방법을 살펴보겠습니다.

    앞에서 언급했듯이 이 오류의 근본 원인은 Cloud Build가 기본적으로 Google 관리 버킷에 로그를 저장하기 때문입니다.

    그러나 당사는 특정 용도를 사용할 의무가 없습니다.
    버킷이며 다음 플래그를 사용하여 자체 버킷 중 하나를 지정할 수 있습니다.

    --gcs-log-dir=gs://<BUCKET_NAME>/<SUBDIRECTORY>
    


    선택한 버킷의 하위 디렉터리를 지정해야 합니다. 그렇지 않으면 다음 오류가 발생합니다.

    ERROR: (gcloud.builds.submit) wrong collection: expected [storage.buckets], got [storage.objects]

    좋은 웹페이지 즐겨찾기