IAM を使用したアクセス制御

Cloud Composer 1 | Cloud Composer 2

このページでは、Cloud Composer で使用可能なアクセス制御オプションと、ロールを割り当てる方法について説明します。

概要

ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

また、Airflow ウェブ インターフェースへのアクセスを有効または無効にするだけでなく、権限を制御することもできます。詳細については、Airflow ロールベースのアクセス制御をご覧ください。

Cloud Composer の Identity and Access Management について

Cloud Composer は、Identity and Access Management(IAM)を使用してアクセス制御を行います。

Cloud IAM のさまざまな機能へのアクセスを制御するには、IAM サービス アカウントと Google Cloud プロジェクトのユーザー アカウントの両方にロールと権限を割り当てます。

Cloud Composer では、2 種類の 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 環境を実行するユーザー管理のサービス アカウントの場合:

  • パブリック 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 Agent のサービス アカウントに割り当てる必要があるロール

  • 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
  • composer.environments.get
  • 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.create、環境のサービス アカウントでは iam.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

次のステップ