使用 IAM 进行访问权限控制

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 Service Agent 帐号简介

在您的项目中,Cloud Composer 服务会使用由 Google 管理的特殊服务帐号来管理与 Cloud Composer 相关的资源。此帐号称为 Cloud Composer Service Agent

Cloud Composer Service Agent 用于项目中的所有环境。

Cloud Composer 环境的服务帐号简介

创建环境时,您需要指定服务帐号。您的环境的集群使用此服务帐号运行具有不同环境组件(如 Airflow 工作器和调度器)的 pod。

默认情况下,Cloud Composer 环境使用默认 Compute Engine 服务帐号运行。此 Google 管理的服务帐号具有的权限超出运行 Cloud Composer 环境所需的权限,通常是 Editor 基本角色。

我们建议您为 Cloud Composer 环境设置用户管理的服务帐号。为此帐号分配 Cloud Composer 专用角色。然后,在创建新环境时指定此服务帐号。

Cloud Composer 用户角色简介

要触发环境操作,用户必须具有足够的权限。例如,如果您要创建新环境,则必须拥有 composer.environments.create 权限。

对于 Cloud Composer,各个权限分组到角色中。您可以将这些角色分配给主帐号。

如果您的服务帐号具有 Project Editor 角色,则您可以执行所有环境操作。但是,此角色具有宽泛的权限。对于使用环境的用户,我们建议使用 Cloud Composer 专用角色。通过这种方式,您可以缩小权限范围,并为不同主帐号提供不同访问权限级别。例如,一个用户拥有创建、更新、升级和删除环境的权限,而另一个用户只能查看环境和访问 Airflow 网页界面。

向用户管理的服务帐号分配角色

对于运行 Cloud Composer 环境的用户管理的服务帐号

  • 对于公共 IP 配置,分配 Composer Worker (composer.worker) 角色。
  • 对于专用 IP 配置:
    1. 分配 Composer Worker (composer.worker) 角色。
    2. 分配 Service Account User (iam.serviceAccountUser) 角色。

为用户分配角色

根据您要提供的 Cloud Composer 环境访问权限级别,向主帐号授予以下权限。

管理环境和环境存储桶

对于可以查看、创建、更新、升级和删除环境、管理环境存储桶中的对象(例如 DAG 文件)以及访问 Airflow 网页界面的用户:

  1. 分配 Environment and Storage Object Administrator (composer.environmentAndStorageObjectAdmin) 角色。
  2. 分配 Service Account User (iam.serviceAccountUser) 角色。

管理环境

对于可以查看、创建、更新、升级和删除环境以及访问 Airflow 网页界面的用户:

  1. 分配 Composer Administrator (composer.admin) 角色。
  2. 分配 Service Account User (iam.serviceAccountUser) 角色。

查看环境并管理环境存储桶

对于可以查看环境、访问 Airflow 网页界面以及管理环境存储桶中的对象(例如,上传新 DAG 文件)的用户:

  1. 分配 Environment User and Storage Object Viewer (composer.environmentAndStorageObjectViewer) 角色。
  2. 分配 Storage Object Admin (storage.objectAdmin) 角色。

查看环境和环境存储桶

对于可以查看环境、访问 Airflow 网页界面以及查看环境存储桶中的对象的用户,分配 Environment User and Storage Object Viewer (composer.environmentAndStorageObjectViewer) 角色。

查看环境

对于可以查看环境和访问 Airflow 网页界面的用户,分配 Composer User (composer.user) 角色。

分配将 gcloud 与环境搭配使用的权限

如需将 gcloud 命令行工具与 Cloud Composer 环境搭配使用(例如,运行 Airflow CLI 命令),需要以下权限。

如果要使用 gcloud composer 命令管理环境或环境存储桶,还必须具有拥有足够权限的角色。

要将 gcloud 与 Cloud Composer 环境搭配使用,您需要以下权限:

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

角色

角色 权限

Cloud Composer v2 API Service Agent Extension
(roles/composer.ServiceAgentV2Ext)

Cloud Composer v2 API Service Agent Extension 是管理 Composer v2 环境所需的补充角色。

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

Composer Administrator
(roles/composer.admin)

提供对 Cloud Composer 资源的完全控制权。

您可以授予此角色的最低级层资源:

  • 项目
  • composer.*
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list

Environment and Storage Object Administrator
(roles/composer.environmentAndStorageObjectAdmin)

提供对 Cloud Composer 资源和所有项目存储分区中对象的完全控制权。

您可以授予此角色的最低级层资源:

  • 项目
  • composer.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • storage.objects.*

Environment User and Storage Object Viewer
(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 Shared VPC Agent
(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 User
(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 Worker
(roles/composer.worker)

提供运行 Cloud Composer 环境虚拟机所需的权限。适用于服务帐号。

您可以授予此角色的最低级层资源:

  • 项目
  • 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 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 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 Viewer 该基本角色可为用户提供列出和获取 Cloud Composer 资源的权限。 composer.environments.get
composer.environments.list
composer.imageversions.list
composer.operations.get
composer.operations.list
项目

权限

下表列出了调用方调用 Cloud Composer 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. 在此过程中,您必须将用户管理的服务帐号的 Service Account Token Creator 角色授予以下 Google 管理的服务帐号:

    1. Compute Engine 默认服务帐号 (PROJECT_NUMBER-compute@developer.gserviceaccount.com)
    2. Cloud Composer Service Agent (service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com)

后续步骤