Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)
本页面介绍了 Managed Airflow 中提供的访问权限控制选项,并说明了如何授予角色。
如需了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
借助 Airflow 界面访问权限控制,除了启用或停用对 Airflow 界面和 DAG 界面的访问权限之外,您还可以控制这些界面的权限。
如果您想通过员工身份联合为外部身份设置访问权限,请参阅通过员工身份联合访问环境。
Managed Airflow 中的 Identity and Access Management 简介
Managed Airflow 使用 Identity and Access Management (IAM) 进行访问权限控制。
通过为 IAM 服务账号和 Google Cloud 项目中的用户账号授予角色和权限,您可以控制对不同 Managed Airflow 功能的访问权限。
Managed Airflow 使用两种类型的 IAM 服务账号:
除了这两种类型的服务账号之外,Google APIs 服务代理 还会代表您运行内部 Google 流程。
向 Managed Airflow 服务代理账号授予角色
在您的 Google Cloud 项目中,Managed Airflow 服务会创建一个服务代理(即 Managed Airflow Service Agent),以管理与 Managed Airflow 相关的资源。
Managed Airflow Service Agent 用于项目中的所有环境。默认情况下,Managed Airflow Service Agent 账号仅具有 Cloud Composer API Service Agent 角色。保留此服务账号的此角色。
向环境的服务账号授予角色
创建环境时,您需要指定服务账号。此服务账号称为“环境的服务账号”。创建环境后,您无法更改指定的服务账号。
您的环境使用此服务账号执行大部分操作,例如:
在环境的集群中运行具有不同环境组件(如 Airflow 工作器和调度器)的 pod。
代表此服务账号执行 DAG。例如,如果 DAG 访问其他 Google 服务,则会代表服务账号执行此操作。
在环境中安装自定义 PyPI 软件包时,构建 Airflow 组件的映像。
读取和写入环境存储桶中的对象。例如,在环境的存储桶与 Airflow 组件之间同步文件时。
运行通过 KubernetesPodOperator 和 GKEStartPodOperator 启动的 Pod。
您环境的现有服务账号和自定义服务账号
我们强烈建议您设置用户管理的服务账号,并将其用于 Managed Airflow 环境。为此,请执行以下操作:
按照 Identity and Access Management 文档中的说明创建新的服务账号。
向其授予 Composer Worker (
composer.worker) 角色。如需访问 Google Cloud 项目中的其他资源,请向此服务账号授予访问这些资源的额外权限。 在大多数情况下,Composer Worker (
composer.worker) 角色可提供所需的这组权限。仅当此服务账号需要额外权限才能运行 DAG 时,才向其添加这些权限。
环境服务账号的安全注意事项
我们强烈建议您为 Managed Airflow 环境设置用户代管式服务,该账号仅具有运行环境和执行 DAG 中定义的操作所需的必要权限。在大多数情况下,Composer Worker (
composer.worker) 角色可提供所需的这组权限。仅当此服务账号需要额外权限才能运行 DAG 时,才向其添加额外权限。您可以创建使用默认 Compute Engine 服务账号的 Managed Airflow 环境。此账号通常具有的权限超出运行 Managed Airflow 环境或 DAG 所需的权限。由于您的环境代表其服务账号运行 DAG,这会带来 DAG 使用的权限比预期更广泛的风险。但与此同时,在不影响项目中可能使用该服务账号的其他服务的情况下,通常无法降低该服务账号的权限。请改为设置用户代管式服务账号。
请务必仅向可信用户授予对环境存储桶的读写权限。
由于环境的服务账号用于运行 DAG,因此可以在环境的存储桶中添加和修改 DAG(或其他对象,例如 Python 依赖项)的用户可以代表环境的服务账号运行其代码,并通过部署自己的 DAG 版本来获取对该服务账号的所有权限的访问权限。即使其用户账号没有允许执行此类操作的明确的 Managed Airflow 相关角色和权限,也可能会发生这种情况。
请务必仅允许可信用户更新项目中的环境。
composer.environments.update权限不仅可用于应用配置更改。此角色可广泛控制托管式 Airflow 资源,包括代表环境的服务账号执行代码,这可以行使此服务账号拥有的所有权限。例如,安装 PyPI 软件包需要执行软件包中的 Python 代码。再举一个例子,环境变量可用于存储要由 DAG 执行的代码,或指向包含此类代码的位置。请务必仅允许受信任的用户在您的项目中运行 Airflow CLI 命令。
composer.environments.executeairflowcommand权限可用于代表环境的服务账号执行 Airflow 组件可用的 Python 代码。
向用户授予角色
要触发环境操作,用户必须具有足够的权限。例如,如果您要创建新环境,则必须拥有 composer.environments.create 权限。
对于 Managed Airflow,各个权限分组到预定义角色中。您可以向主账号授予这些角色。
如果您的用户账号具有 Project Editor 角色,则您可以执行所有环境操作。但是,此角色具有宽泛的权限。对于使用环境的用户,我们建议使用 Managed Airflow 专用角色。通过这种方式,您可以缩小权限范围,并为不同主账号提供不同访问权限级别。例如,一个用户拥有创建、更新、升级和删除环境的权限,而另一个用户只能查看环境和访问 Airflow 网页界面。
根据您要提供的 Managed Airflow 环境访问权限级别,向主账号授予以下权限。
管理环境和环境存储桶
对于可以查看、创建、更新、升级和删除环境、管理环境存储分区中的对象(例如 DAG 文件)、访问 Airflow 网页界面、运行 Airflow CLI 命令以及从 DAG 界面查看和触发 DAG 的用户:
授予 Environment and Storage Object Administrator (
composer.environmentAndStorageObjectAdmin) 角色。授予 Service Account User (
iam.serviceAccountUser) 角色。向环境的服务账号授予
iam.serviceAccounts.actAs权限。
管理环境
对于可以查看、创建、更新、升级和删除环境、访问 Airflow 网页界面、运行 Airflow CLI 命令以及从 DAG 界面查看和触发 DAG 的用户:
授予 Composer Administrator (
composer.admin) 角色。授予 Service Account User (
iam.serviceAccountUser) 角色。向环境的服务账号授予
iam.serviceAccounts.actAs权限。
查看环境并管理环境存储桶
对于可以查看环境、访问 Airflow 网页界面、通过 DAG 界面查看和触发 DAG 以及管理环境存储分区中的对象(例如,上传新 DAG 文件)的用户:
授予 Environment User and Storage Object Viewer (
composer.environmentAndStorageObjectViewer) 角色。授予 Storage Object Admin (
storage.objectAdmin) 角色。
查看环境和环境存储桶
对于可以查看环境、访问 Airflow 网页界面、通过 DAG 界面查看和触发 DAG 以及查看环境存储分区中的对象的用户,请授予 Environment User and Storage Object Viewer (composer.environmentAndStorageObjectViewer) 角色。
查看环境
对于可以查看环境、在 DAG 界面中查看和触发 DAG 以及访问 Airflow 网页界面的用户,授予 Composer User (composer.user) 角色。
角色
| Role | Permissions |
|---|---|
Composer Administrator( Provides full control of Managed Airflow resources. Lowest-level resources where you can grant this role:
|
|