Cloud Build에 대한 액세스 권한 부여 - 서비스 계정 가장

팀 구성원이 프로젝트에서 Cloud Build와 상호 작용할 수 있도록 하는 또 다른 옵션은 서비스 계정impersonate입니다.

작동 방식:


  • 사전 정의된 역할 또는 사용자 정의 역할(선호)을 제공하는 서비스 계정을 생성하여 필요한 권한을 부여합니다.
  • 사용자에게 다음 역할만 있으면 됩니다.
  • roles/iam.serviceAccountTokenCreator
  • roles/serviceusage.serviceUsageConsumer


  • 이렇게 하면 팀 구성원이 가장 플래그를 사용하여 빌드를 제출할 수 있습니다.

    gcloud builds submit \
      --config cloudbuild.yaml \
      --impersonate-service-account=<SERVICE_ACCOUNT>
      --gcs-log-dir=gs://<BUCKET_NAME>/<SUBDIRECTORY>
    





  • 이 옵션의 결함



    사용자가 이와 같은 서비스 계정을 가장할 수 있도록 허용하면 기술적으로 프로젝트 내에서 서비스 계정을 나열하고 가장할 수 있으므로 프로젝트 내에서 많은 가능성을 제공하므로 Cloud Build뿐만 아니라 다른 프로젝트 리소스도 마찬가지입니다.

    따라서 이러한 방식으로 사용자에게 서비스 계정 토큰 생성자 역할을 부여해서는 안 됩니다.


    서비스 계정 토큰 생성자 역할을 위한 솔루션



    사용자에게 계정 가장을 위한 프로젝트 차원의 서비스 계정 토큰 생성자 역할을 부여하는 대신 해당 역할을 서비스 계정별로 지정해야 합니다.

    Cloud Console 또는 CLI를 통해 이를 수행하는 방법은 다음과 같습니다.

    클라우드 콘솔 솔루션


  • IAM 및 관리자 -> 서비스 계정으로 이동합니다.
  • '정보 패널 표시'를 클릭합니다.
  • 관련 서비스 계정을 선택합니다.
  • '멤버 추가'를 클릭합니다.
  • 서비스 계정 토큰 생성자 역할을 부여하는 사용자 계정을 지정합니다.
  • '저장'을 클릭합니다.

  • CLI 솔루션


  • gcloud 도구를 사용하여 서비스 계정에 대해 IAM policy binding을 추가합니다.

    gcloud iam service-accounts add-iam-policy-binding <SERVICE_ACCOUNT> \
      --member="user:<USER_ACCOUNT>" \
      --role="roles/iam.serviceAccountTokenCreator"
    


  • 현재 IAM 정책 바인딩을 보려면 다음gcloud 명령을 실행합니다.

    gcloud iam service-accounts get-iam-policy <SERVICE_ACCOUNT>
    


  • 이 경우 팀 구성원(그룹)은 서비스 사용량 소비자 역할만 있으면 되고 서비스 계정 토큰 생성자 역할은 지정된 서비스 계정에만 바인딩됩니다.

    좋은 웹페이지 즐겨찾기