액세스 제어

Cloud Composer 1 | Cloud Composer 2

이 페이지에서는 Cloud Composer에서 사용할 수 있는 액세스 제어 옵션을 설명하고, 역할을 할당하는 방법을 알려줍니다.

개요

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

또한 Airflow 웹 인터페이스에 대한 액세스를 사용 설정하거나 중지하는 것 이상의 권한을 제어할 수 있습니다. 자세한 내용은 Airflow 역할 기반 액세스 제어를 참조하세요.

Cloud Composer의 Identity and Access Management 정보

Cloud Composer는 액세스 제어에 Identity and Access Management(IAM)를 사용합니다.

IAM 서비스 계정과 Google Cloud 프로젝트의 사용자 계정에 역할과 권한을 할당하여 다양한 Cloud Composer 기능에 대한 액세스를 제어합니다.

Cloud Composer는 다음 두 가지 유형의 IAM 서비스 계정을 사용합니다.

Cloud Composer 서비스 에이전트 계정 정보

프로젝트에서 Cloud Composer 서비스는 특수한 Google 관리형 서비스 계정을 사용하여 Cloud Composer와 관련된 리소스를 관리합니다. 이 계정을 Cloud Composer 서비스 에이전트라고 합니다.

Cloud Composer 서비스 에이전트는 프로젝트의 모든 환경에 사용됩니다.

Cloud Composer 환경의 서비스 계정 정보

환경을 만들 때 서비스 계정을 지정합니다. 환경의 클러스터는 이 서비스 계정을 사용하여 Airflow 작업자 및 스케줄러와 같은 다른 환경 구성요소로 pod를 실행합니다.

기본적으로 Cloud Composer 환경은 기본 Compute Engine 서비스 계정을 사용하여 실행됩니다. 이 Google 관리형 서비스 계정에는 Cloud Composer 환경(일반적으로 편집자 기본 역할)을 실행하는 데 필요한 것보다 많은 권한이 있습니다.

Cloud Composer 환경의 사용자 관리형 서비스 계정을 설정하는 것이 좋습니다. 이 계정에 Cloud Composer 전용 역할을 할당합니다. 그런 다음 새 환경을 만들 때 이 서비스 계정을 지정합니다.

Cloud Composer 사용자의 역할 정보

환경 작업을 트리거하려면 사용자에게 충분한 권한이 있어야 합니다. 예를 들어 새 환경을 만들려면 composer.environments.create 권한이 있어야 합니다.

Cloud Composer의 경우 개별 권한이 역할로 그룹화됩니다. 이러한 역할을 주 구성원에게 할당할 수 있습니다.

서비스 계정에 프로젝트 편집자 역할이 있으면 모든 환경 작업을 실행할 수 있습니다. 하지만 이 역할에는 광범위한 권한이 있습니다. 환경에서 작업하는 사용자의 경우 Cloud Composer와 관련된 역할을 사용하는 것이 좋습니다. 이렇게 하면 권한 범위의 범위를 좁히고 주 구성원마다 다른 액세스 수준을 제공할 수 있습니다. 예를 들어 한 사용자는 환경을 생성, 업데이트, 업그레이드, 삭제할 수 있는 권한을 가지고 다른 사용자는 환경을 보고 Airflow 웹 인터페이스에 액세스할 수만 있습니다.

Cloud Composer 서비스 에이전트 계정에 역할 할당

프로젝트에서 Cloud Composer API를 사용 설정하면 프로젝트에 Composer 서비스 에이전트 계정이 생성됩니다. Cloud Composer는 이 계정을 사용하여 Google Cloud 프로젝트에서 작업을 수행합니다.

Cloud Composer 2는 GKE Autopilot을 사용하며, 여기에는 워크로드 아이덴티티가 필요합니다. 워크로드 아이덴티티를 지원하려면 환경의 서비스 계정에 환경의 클러스터를 실행하는 Kubernetes 서비스 계정에 대한 binding이 있어야 합니다. 이러한 바인딩은 환경 클러스터의 포드가 Google Cloud 프로젝트의 리소스에 액세스할 수 있도록 하는 데 필요합니다. 예를 들어 환경의 버킷에서 DAG 정의 파일을 읽기 위함입니다.

환경의 서비스 계정과 환경 클러스터의 Kubernetes 서비스 계정 간에 binding을 만들려면 Composer 서비스 에이전트 계정에 충분한 권한이 있어야 합니다. 그러려면 Cloud Composer v2 API 서비스 에이전트 확장 역할에서 제공하는 iam.serviceAccounts.getIamPolicyiam.serviceAccounts.setIamPolicy 권한이 필요합니다. 이 역할은 자동으로 부여되지 않습니다. 프로젝트당 한 번씩 수동으로 부여해야 합니다.

이 역할을 추가하는 방법은 환경 만들기를 참조하세요.

사용자 관리 서비스 계정에 역할 할당

Cloud Composer 환경을 실행하는 사용자 관리 서비스 계정의 경우:

  • 공개 IP 구성의 경우 Composer 작업자(composer.worker) 역할을 할당합니다.
  • 비공개 IP 구성의 경우:
    1. Composer 작업자(composer.worker) 역할을 지정합니다.
    2. 서비스 계정 사용자(iam.serviceAccountUser) 역할을 할당합니다.

사용자에게 역할 지정

Cloud Composer 환경에 제공하려는 액세스 수준에 따라 주 구성원에게 다음 권한을 부여합니다.

환경 및 환경 버킷 관리

환경을 보고, 만들고, 업데이트, 업그레이드, 삭제하고, 환경 버킷에서 객체(예: DAG 파일)를 관리하고, Airflow 웹 인터페이스에 액세스할 수 있는 사용자의 경우 다음을 수행합니다.

  1. 환경 및 스토리지 객체 관리자(composer.environmentAndStorageObjectAdmin) 역할을 할당합니다.
  2. 서비스 계정 사용자(iam.serviceAccountUser) 역할을 할당합니다.

환경 관리

환경을 보고, 만들고, 업데이트하고, 업그레이드, 삭제하고 Airflow 웹 인터페이스에 액세스할 수 있는 사용자의 경우 다음을 수행합니다.

  1. Composer 관리자(composer.admin) 역할을 할당합니다.
  2. 서비스 계정 사용자(iam.serviceAccountUser) 역할을 할당합니다.

환경 보기 및 환경 버킷 관리

환경을 보고, Airflow 웹 인터페이스에 액세스하고, 환경 버킷의 객체(예: 새 DAG 파일 업로드)를 관리할 수 있는 사용자의 경우 다음을 수행합니다.

  1. 환경 사용자 및 스토리지 객체 뷰어(composer.environmentAndStorageObjectViewer) 역할을 할당합니다.
  2. 스토리지 객체 관리자(storage.objectAdmin) 역할을 할당합니다.

환경 및 환경 버킷 보기

환경을 보고, Airflow 웹 인터페이스에 액세스하고, 환경 버킷의 객체를 볼 수 있는 사용자의 경우 환경 사용자 및 스토리지 객체 뷰어(composer.environmentAndStorageObjectViewer) 역할을 할당합니다.

환경 보기

환경을 보고 Airflow 웹 인터페이스에 액세스할 수 있는 사용자의 경우 Composer 사용자(composer.user) 역할을 할당합니다.

환경에서 gcloud를 사용할 권한 할당

예를 들어 Airflow CLI 명령어를 실행하기 위해 Cloud Composer 환경에서 gcloud 명령줄 도구를 사용하려면 다음 권한이 필요합니다.

gcloud composer 명령어로 환경 또는 환경 버킷을 관리하려는 경우, 이렇게 할 충분한 권한이 있는 역할도 있어야 합니다.

Cloud Composer 환경에서 gcloud를 사용하려면 다음 권한이 필요합니다.

  • composer.environments.get
  • container.clusters.get
  • container.clusters.list
  • container.clusters.getCredentials

역할

역할 권한

Cloud Composer v2 API 서비스 에이전트 확장 프로그램
(roles/composer.ServiceAgentV2Ext)

Cloud Composer v2 API 서비스 에이전트 확장 프로그램은 Composer v2 환경을 관리하는 데 필요한 보조 역할을 합니다.

  • iam.serviceAccounts.getIamPolicy
  • iam.serviceAccounts.setIamPolicy

Composer 관리자
(roles/composer.admin)

Cloud Composer 리소스를 관리할 수 있는 전체 권한을 제공합니다.

이 역할을 부여할 수 있는 최하위 수준 리소스:

  • 프로젝트
  • composer.*
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list

환경 및 저장소 객체 관리자
(roles/composer.environmentAndStorageObjectAdmin)

Cloud Composer 리소스와 모든 프로젝트 버킷에 있는 객체를 관리할 수 있는 전체 권한을 제공합니다.

이 역할을 부여할 수 있는 최하위 수준 리소스:

  • 프로젝트
  • composer.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • storage.objects.*

환경 사용자 및 스토리지 객체 뷰어
(roles/composer.environmentAndStorageObjectViewer)

Cloud Composer 환경 및 작업을 나열하고 가져오는 데 필요한 권한을 제공합니다. 모든 프로젝트 버킷에 있는 객체에 대한 읽기 전용 액세스 권한을 제공합니다.

이 역할을 부여할 수 있는 최하위 수준 리소스:

  • 프로젝트
  • composer.environments.get
  • composer.environments.list
  • composer.imageversions.*
  • composer.operations.get
  • composer.operations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • storage.objects.get
  • storage.objects.list

Composer 공유 VPC 에이전트
(roles/composer.sharedVpcAgent)

공유 VPC 호스트 프로젝트의 Composer 에이전트 서비스 계정에 할당되어야 하는 역할입니다.

  • compute.networks.access
  • compute.networks.addPeering
  • compute.networks.get
  • compute.networks.list
  • compute.networks.listPeeringRoutes
  • compute.networks.removePeering
  • compute.networks.updatePeering
  • compute.networks.use
  • compute.networks.useExternalIp
  • compute.projects.get
  • compute.regions.*
  • compute.subnetworks.get
  • compute.subnetworks.list
  • compute.subnetworks.use
  • compute.subnetworks.useExternalIp
  • compute.zones.*

Composer 사용자
(roles/composer.user)

Cloud Composer 환경 및 작업을 나열하고 가져오는 데 필요한 권한을 제공합니다.

이 역할을 부여할 수 있는 최하위 수준 리소스:

  • 프로젝트
  • composer.environments.get
  • composer.environments.list
  • composer.imageversions.*
  • composer.operations.get
  • composer.operations.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list

Composer 작업자
(roles/composer.worker)

Cloud Composer 환경 VM을 실행하는 데 필요한 권한을 제공합니다. 서비스 계정용입니다.

이 역할을 부여할 수 있는 최하위 수준 리소스:

  • 프로젝트
  • artifactregistry.*
  • cloudbuild.builds.create
  • cloudbuild.builds.get
  • cloudbuild.builds.list
  • cloudbuild.builds.update
  • cloudbuild.workerpools.use
  • container.*
  • containeranalysis.occurrences.create
  • containeranalysis.occurrences.delete
  • containeranalysis.occurrences.get
  • containeranalysis.occurrences.list
  • containeranalysis.occurrences.update
  • logging.logEntries.create
  • monitoring.metricDescriptors.create
  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.monitoredResourceDescriptors.*
  • monitoring.timeSeries.*
  • pubsub.schemas.attach
  • pubsub.schemas.create
  • pubsub.schemas.delete
  • pubsub.schemas.get
  • pubsub.schemas.list
  • pubsub.schemas.validate
  • pubsub.snapshots.create
  • pubsub.snapshots.delete
  • pubsub.snapshots.get
  • pubsub.snapshots.list
  • pubsub.snapshots.seek
  • pubsub.snapshots.update
  • pubsub.subscriptions.consume
  • pubsub.subscriptions.create
  • pubsub.subscriptions.delete
  • pubsub.subscriptions.get
  • pubsub.subscriptions.list
  • pubsub.subscriptions.update
  • pubsub.topics.attachSubscription
  • pubsub.topics.create
  • pubsub.topics.delete
  • pubsub.topics.detachSubscription
  • pubsub.topics.get
  • pubsub.topics.list
  • pubsub.topics.publish
  • pubsub.topics.update
  • pubsub.topics.updateTag
  • remotebuildexecution.blobs.get
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • source.repos.get
  • source.repos.list
  • storage.buckets.create
  • storage.buckets.get
  • storage.buckets.list
  • storage.objects.*

기본 역할

역할 이름 설명 권한 최하위 리소스
roles/owner 소유자 Cloud Composer 리소스를 전체적으로 제어할 수 있는 기본 역할 composer.environments.create
composer.environments.delete
composer.environments.get
composer.environments.list
composer.environments.update
composer.imageversions.list
composer.operations.delete
composer.operations.get
composer.operations.list
iam.serviceAccounts.actAs
프로젝트
roles/editor 편집기 Cloud Composer 리소스를 전체적으로 제어할 수 있는 기본 역할 composer.environments.create
composer.environments.delete
composer.environments.get
composer.environments.list
composer.environments.update
composer.imageversions.list
composer.operations.delete
composer.operations.get
composer.operations.list
iam.serviceAccounts.actAs
프로젝트
roles/viewer 뷰어 사용자가 Cloud Composer 리소스를 나열하고 가져올 수 있게 해주는 기본 역할 composer.environments.get
composer.environments.list
composer.imageversions.list
composer.operations.get
composer.operations.list
프로젝트

권한

다음 표에는 호출자가 Cloud Composer API의 각 API 메서드를 호출하거나 API를 사용하는 Google Cloud 도구(예: Google Cloud Console 또는 Cloud SDK)를 사용하여 작업을 수행하는 데 필요한 권한이 나와 있습니다.

메서드 권한
environments.create 환경의 서비스 계정에 대한 composer.environments.createiam.serviceAccounts.actAs 권한
environments.delete composer.environments.delete
environments.get composer.environments.get
environments.list composer.environments.list
environments.update composer.environments.update
operations.delete composer.operations.delete
operations.get composer.operations.get
operations.list composer.operations.list

다른 프로젝트의 서비스 계정 사용

한 프로젝트의 Cloud Composer 환경에서 다른 프로젝트의 사용자 관리 서비스 계정을 사용하려면 다음 안내를 따르세요.

  1. 여러 프로젝트에서 작동하도록 사용자 관리 서비스 계정을 구성합니다.
  2. 이 프로세스를 실행할 때는 사용자 관리 서비스 계정에서 다음 Google 관리 서비스 계정에 대해 서비스 계정 토큰 생성자 역할을 부여해야 합니다.

    1. Compute Engine 기본 서비스 계정(PROJECT_NUMBER-compute@developer.gserviceaccount.com)
    2. Cloud Composer 서비스 에이전트(service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com)

다음 단계