访问权限控制机制

本页面介绍 Cloud Composer 中提供的访问权限控制选项,并说明如何分配角色。

概览

Cloud Composer 使用 Identity and Access Management (IAM) 进行访问权限控制。

如需详细了解 IAM 及其功能,请参阅 IAM 文档

如需了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

除了提供对 Airflow 网页界面的访问权限,您还可以控制该网页界面的权限。如需了解详情,请参阅 Airflow 基于角色的访问权限控制

Cloud Composer 环境的服务帐号简介

创建环境时,您需要指定服务帐号。此服务帐号运行 Cloud Composer 环境的 GKE 节点。

默认情况下,Cloud Composer 环境使用默认 Compute Engine 服务帐号运行。此 Google 管理的服务帐号具有宽泛的权限,通常是 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

角色

角色 名称 说明 权限 最低资源要求
roles/composer.ServiceAgentV2Ext Cloud Composer v2 API Service Agent Extension Cloud Composer v2 API Service Agent Extension 是管理 Composer v2 环境所需的补充角色。
  • iam.serviceAccounts.getIamPolicy
  • iam.serviceAccounts.setIamPolicy
roles/composer.admin Composer Administrator 提供对 Cloud Composer 资源的完全控制权。
  • composer.*
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
项目
roles/composer.environmentAndStorageObjectAdmin Environment and Storage Object Administrator 提供对 Cloud Composer 资源和所有项目存储分区中对象的完全控制权。
  • composer.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • storage.objects.*
项目
roles/composer.environmentAndStorageObjectViewer Environment User and Storage Object Viewer 提供列出及获取 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
项目
roles/composer.sharedVpcAgent Composer Shared VPC Agent 应分配给共享 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.*
roles/composer.user 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
项目
roles/composer.worker Composer Worker 提供运行 Cloud Composer 环境虚拟机所需的权限。适用于服务帐号。
  • 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 Owner 该基本角色可提供 Cloud Composer 资源的完全控制权。 composer.operations.list
composer.operations.get
composer.operations.delete
composer.environments.list
composer.environments.get
composer.environments.delete
composer.environments.update
composer.environments.create
iam.serviceAccounts.actAs
项目
roles/editor Editor 该基本角色可提供 Cloud Composer 资源的完全控制权。 composer.operations.list
composer.operations.get
composer.operations.delete
composer.environments.list
composer.environments.get
composer.environments.delete
composer.environments.update
composer.environments.create
iam.serviceAccounts.actAs
项目
roles/reader Viewer 该基本角色可为用户提供列出和获取 Cloud Composer 资源的权限。 composer.operations.list
composer.operations.get
composer.environments.list
composer.environments.get
项目

权限

下表列出了调用方调用 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

后续步骤