IAM 역할 및 권한

이 페이지에서는 Cloud Deploy 서비스 계정, 역할, 권한에 대해 설명합니다.

Cloud Deploy의 액세스 권한은 Identity and Access Management(IAM)로 제어합니다. IAM을 사용하면 Google Cloud 리소스에 대한 권한을 만들고 관리할 수 있습니다. Cloud Deploy는 각 역할에 권한 집합이 포함된 특정 사전 정의된 IAM 역할 집합을 제공합니다. 이러한 역할을 사용하여 특정 Google Cloud 리소스에 대해 보다 세부적인 액세스 권한을 제공하고 다른 리소스에 대한 원치 않는 액세스를 방지할 수 있습니다. IAM은 최소 권한의 보안 원칙을 채택하여 리소스에 대해 필요한 액세스 권한만 부여할 수 있게 해줍니다.

고급 액세스 제어 보안 기능에 대해 알아보려면 IAM을 사용하여 Cloud Deploy 액세스 제한을 참조하세요.

Cloud Deploy의 서비스 계정

기본적으로 Cloud Deploy는 기본 Compute Engine 서비스 계정을 사용하여 실행됩니다. 이 서비스 계정은 매니페스트를 렌더링하고 대상에 배포할 수 있는 충분한 권한을 갖고 있습니다.

Cloud Deploy에서 서비스 계정을 사용하는 방법에 대해 자세히 알아보세요.

사전 정의된 Cloud Deploy 역할

IAM을 사용할 때 Cloud Deploy API의 모든 API 메서드를 사용하려면 API 요청을 실행하는 ID에 해당 리소스를 사용하는 데 필요한 적절한 권한이 있어야 합니다. 권한을 부여하기 위해서는 프로젝트의 주 구성원(사용자, 그룹 또는 서비스 계정)에게 역할을 부여하는 정책을 설정하면 됩니다. 주 구성원에게 동일한 리소스에 대한 여러 역할을 부여할 수 있습니다.

IAM 문서에는 사전 정의된 모든 역할의 검색 가능한 참조가 포함되어 있습니다.

다음 표에서는 Cloud Deploy IAM 역할과 여기에 포함된 권한을 보여줍니다.

권한

(roles/clouddeploy.admin)

Cloud Deploy 리소스를 관리할 수 있는 전체 권한입니다.

clouddeploy.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.approver)

출시를 승인하거나 거부할 수 있는 권한입니다.

clouddeploy.config.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.rollouts.approve

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.customTargetTypeAdmin)

CustomTargetType 리소스를 관리할 수 있는 권한입니다.

clouddeploy.config.get

clouddeploy.customTargetTypes.*

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.developer)

대상과 같은 운영 리소스에 액세스할 권한이 없이 배포 구성을 관리할 수 있는 권한입니다.

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.update

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.*

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.jobRunner)

대상으로 전달할 권한 없이 Cloud Deploy 작업을 실행할 권한입니다.

clouddeploy.config.get

logging.logEntries.create

storage.objects.create

storage.objects.get

storage.objects.list

(roles/clouddeploy.operator)

배포 구성을 관리할 수 있는 권한입니다.

clouddeploy.automationRuns.*

clouddeploy.automations.*

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.update

clouddeploy.jobRuns.*

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.*

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.ignoreJob

clouddeploy.rollouts.list

clouddeploy.rollouts.retryJob

clouddeploy.rollouts.rollback

clouddeploy.targets.create

clouddeploy.targets.delete

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

clouddeploy.targets.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.releaser)

Cloud Deploy 출시 버전 및 출시 항목을 만들 수 있는 권한입니다.

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.deliveryPipelines.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.create

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.rollouts.rollback

clouddeploy.targets.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.viewer)

Cloud Deploy 리소스를 볼 수 있습니다.

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.get

clouddeploy.operations.list

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

resourcemanager.projects.get

resourcemanager.projects.list

사전 정의된 Cloud Deploy 역할 외에 기본 뷰어, 편집자, 소유자 역할에도 Cloud Deploy와 관련된 권한이 포함됩니다. 하지만 가능한 한 최소 권한의 보안 원칙에 맞게 사전 정의된 역할을 부여하는 것이 좋습니다.

권한

다음 표에서는 호출자가 각 메서드를 호출하는 데 필요한 권한 목록을 보여줍니다.

API 메서드 필요한 권한 설명
automations.create() clouddeploy.automations.create 새 자동화 리소스를 만듭니다.
automations.delete() clouddeploy.automations.delete 기존 자동화 리소스를 삭제합니다.
automations.get() clouddeploy.automations.get 개별 자동화 리소스의 세부정보를 검색합니다.
automations.list() clouddeploy.automations.list 자동화 리소스 및 해당 메타데이터를 나열합니다.
automations.update() clouddeploy.automations.update 기존 자동화 리소스를 업데이트합니다.
automationRuns.cancel() clouddeploy.automationRuns.cancel 실행 중인 자동화를 취소합니다.
automationRuns.get() clouddeploy.automationRuns.get 개별 자동화 실행의 세부정보를 검색합니다.
automationRuns.list() clouddeploy.automationRuns.list 자동화 실행 및 해당 메타데이터를 나열합니다.
customTargetTypes.create() clouddeploy.customTargetType.create 커스텀 대상 유형 리소스를 만듭니다.
customTargetTypes.delete() clouddeploy.customTargetType.delete 커스텀 대상 유형 리소스를 삭제합니다.
customTargetTypes.get() clouddeploy.customTargetType.get 커스텀 대상 유형의 세부정보를 검색합니다.
customTargetTypes.getIamPolicy() clouddeploy.customTargetType.getIamPolicy 커스텀 대상 유형 리소스의 IAM 정책을 가져옵니다.
customTargetTypes.list() clouddeploy.customTargetType.list 사용 가능한 커스텀 대상 유형 및 해당 메타데이터를 나열합니다.
customTargetTypes.patch() clouddeploy.customTargetType.patch 기존 커스텀 대상 유형을 업데이트합니다.
customTargetTypes.setIamPolicy() clouddeploy.customTargetType.setIamPolicy 커스텀 대상 유형 리소스의 IAM 정책을 설정합니다.
deliveryPipelines.create() clouddeploy.deliveryPipelines.create 새 배포 파이프라인 리소스를 만듭니다.
deliveryPipelines.delete() clouddeploy.deliveryPipelines.delete 기존 배포 파이프라인 리소스를 삭제합니다.
deliveryPipelines.get() clouddeploy.deliveryPipelines.get 개별 배포 파이프라인의 세부정보를 검색합니다.
deliveryPipelines.getIamPolicy() clouddeploy.deliveryPipelines.getIamPolicy 배포 파이프라인 리소스의 IAM 정책을 가져옵니다.
deliveryPipelines.list() clouddeploy.deliveryPipelines.list 배포 파이프라인 및 해당 메타데이터를 나열합니다.
deliveryPipelines.rollbackTarget() clouddeploy.rollouts.rollback 대상을 롤백합니다.
deliveryPipelines.setIamPolicy() clouddeploy.deliveryPipelines.setIamPolicy 배포 파이프라인 리소스의 IAM 정책을 설정합니다.
deliveryPipelines.update() clouddeploy.deliveryPipelines.update 기존 배포 파이프라인 리소스를 업데이트합니다.
jobRuns.get() clouddeploy.jobRuns.get JobRuns 리소스를 가져옵니다.
jobRuns.list() clouddeploy.jobRuns.list JobRuns 리소스 및 해당 메타데이터를 나열합니다.
jobRuns.terminate() clouddeploy.jobRuns.terminate 진행 중인 작업 실행을 종료합니다.
operations.cancel() clouddeploy.operations.cancel 장기 실행 작업을 취소합니다.
operation.delete() clouddeploy.operations.delete 장기 실행 작업을 삭제합니다.
operations.get() clouddeploy.operations.get 특정 장기 실행 작업을 가져옵니다(예: 출시 생성 상태 반환).
operations.list() clouddeploy.operations.list 장기 실행 작업을 나열합니다.
releases.abandon() clouddeploy.releases.abandon 출시 버전을 취소하고 이 출시 버전에서 더 이상 출시되지 않도록 막습니다.
releases.create() clouddeploy.releases.create 새 출시 버전 리소스를 만듭니다. 호출자에게 매니페스트를 렌더링하는 데 사용되는 서비스 계정에 대한 iam.serviceAccounts.actAs 권한도 필요합니다.
releases.get() clouddeploy.releases.get 개별 출시 버전의 세부정보를 가져옵니다.
releases.list() clouddeploy.releases.list 출시 버전 및 메타데이터를 나열합니다.
releases.promote() clouddeploy.rollouts.create 다음 대상으로 출시 버전을 승격합니다.
rollouts.advance() clouddeploy.rollouts.advance 다음 단계로 출시를 진행합니다.
rollouts.approve() clouddeploy.rollouts.approve 승인 상태가 required인 출시를 승인 또는 거부합니다.
rollouts.cancel() clouddeploy.rollouts.cancel 출시를 취소합니다.
rollouts.create() clouddeploy.rollouts.create 새 출시 리소스를 만듭니다. 호출자에게 배포에 사용되는 프로젝트 또는 서비스 계정에 대한 iam.serviceAccounts.actAs 권한도 필요합니다.
rollouts.get() clouddeploy.rollouts.get 개별 출시의 세부정보를 가져옵니다.
rollouts.ignoreJob() clouddeploy.rollouts.ignoreJob 실패한 작업을 무시합니다.
rollouts.list() clouddeploy.rollouts.list 출시 및 메타데이터를 나열합니다.
rollouts.retryJob() clouddeploy.rollouts.retryJob 실패한 작업을 재시도합니다.
targets.create() clouddeploy.targets.create 새로운 대상 리소스를 만듭니다.
targets.delete() clouddeploy.targets.delete 기존 대상 리소스를 삭제합니다.
targets.get() clouddeploy.targets.get 개별 대상의 세부정보를 가져옵니다.
targets.getIamPolicy() clouddeploy.targets.getIamPolicy 대상 리소스의 IAM 정책을 가져옵니다.
targets.list() clouddeploy.targets.list 대상과 해당 메타데이터를 나열합니다.
targets.setIamPolicy() clouddeploy.targets.setIamPolicy 대상 리소스의 IAM 정책을 설정합니다.
targets.update() clouddeploy.targets.update 기존 대상 리소스를 업데이트합니다.

IAM을 사용하여 Cloud Deploy 리소스에 대한 작업 제한

다음과 같은 방법으로 IAM을 사용하여 Cloud Deploy 리소스를 보호할 수 있습니다.

  • IAM 메타 API

    Cloud Deploy 리소스에서 setIamPolicy를 사용하여 해당 리소스의 작업을 제한합니다.

  • 조건부 IAM

    액세스 권한을 부여 또는 거부하는 조건을 포함하여 액세스 정책을 프로그래매틱 방식으로 적용합니다.

이러한 정책 및 조건을 사용하여 Cloud Deploy 리소스에서 다음 작업을 제한할 수 있습니다.

  • 배포 파이프라인 또는 대상 만들기

    특정 사용자 또는 그룹에 이 액세스 권한을 부여할 수 있습니다.

  • 특정 배포 파이프라인 업데이트 또는 삭제

    특정 사용자 또는 그룹에 이 액세스 권한을 부여할 수 있습니다.

  • 특정 배포 파이프라인용 출시 만들기

    특정 사용자 또는 그룹에 이 액세스 권한을 부여할 수 있습니다.

  • 특정 대상 업데이트 또는 삭제

    특정 사용자 또는 그룹에 이 액세스 권한을 부여할 수 있습니다.

  • 출시 생성 또는 승인, 또는 출시 승격

    특정 대상 또는 배포 파이프라인의 특정 사용자 또는 그룹에 이 액세스 권한을 부여할 수 있습니다.

    이 액세스를 또한 지정된 기간 내로 제한하는 조건을 설정할 수도 있습니다.

다음 단계