在网页界面中使用 Airflow 基于角色的访问权限控制

Cloud Composer 1 | Cloud Composer 2

对 Cloud Composer 中的 Airflow 界面的访问权限由 Identity and Access Management 控制。用户必须先向 Identity-Aware Proxy (IAP) 进行身份验证,并拥有适当的 IAM 权限,然后才能访问网页界面。

但是,当用户访问 Airflow 网页界面后,IAM 在 Airflow 界面中不会提供任何其他精细的权限控制。借助此功能,您可以在 Airflow 网页界面内启用精细的 Airflow 原生基于角色的访问权限控制 (RBAC)。

请注意,RBAC 界面是 Airflow 的一项功能,它拥有自己的用户、角色、权限模型,与 IAM 不同。

启用 RBAC 界面

在 Cloud Composer 2 中,Airflow RBAC 界面始终处于启用状态。

使用 RBAC 界面

在 RBAC 界面中,可以使用“安全性”菜单下的链接配置访问权限控制设置。如需详细了解 RBAC 模型、可用权限和默认角色,请参阅 Airflow RBAC 界面文档

Airflow 会将用户角色视为所有自定义角色的模板。这意味着 Airflow 会不断将“用户角色”中的权限复制到所有自定义角色,all_dags 的权限除外。

Airflow RBAC 维护自己的用户列表,这意味着具有管理员角色(或等效角色)的用户可以查看已打开 Airflow 界面的实例,并且已注册 Airflow RBAC。

在 RBAC 界面中注册用户

当新用户第一次打开与给定 Cloud Composer 环境关联的 Airflow RBAC 界面时,系统会自动注册新用户。

注册时,系统会向用户授予 [webserver]rbac_user_registration_role Airflow 配置选项中指定的角色。您可以通过使用其他值替换此配置选项来控制新注册用户的角色。

如果未指定,则在具有 Airflow 2 的环境中,默认注册角色为 Op

如需为 Airflow RBAC 界面创建基本角色配置,建议执行以下步骤:

Airflow 2

  1. 环境管理员访问新创建的环境的 Airflow RBAC 界面。

  2. 为管理员帐号授予 Admin 角色。在具有 Airflow 2 的环境中,新帐号的默认角色为 Op。如需分配 Admin 角色,请运行带有 gcloud 的以下 Airflow CLI 命令

      gcloud beta composer environments run ENVIRONMENT_NAME \
        --location LOCATION \
        users add-role -- -e USER_EMAIL -r Admin
    

    您需要将其中的:

    • ENVIRONMENT_NAME 替换为环境的名称。
    • LOCATION 替换为环境所在的 Compute Engine 区域。
    • USER_EMAIL 替换为用户帐号的电子邮件地址。
  3. 管理员现在可以为新用户配置访问权限控制,包括向其他用户授予 Admin 角色。

Airflow 1

Cloud Composer 2 中不提供 Airflow 1。

移除用户

从 RBAC 中删除用户不会撤消该用户的访问权限,因为他们在下次访问 Airflow 界面时会自动进行重新注册。如需撤消对整个 Airflow 界面的访问权限,请从适用于项目的 IAM 的访问权限政策中移除 composer.environments.get 权限。您还可以将用户在 RBAC 界面中的角色更改为公开,这将保留用户注册,但会移除 Airflow 界面的所有权限。

配置 DAG 级权限

您可以为自定义角色配置 DAG 级权限,以指定哪个用户组可以看见哪些 DAG。

如需在 Airflow RBAC 界面中配置 DAG 分离,请按以下步骤操作:

  1. 管理员创建空角色以对 DAG 进行分组
  2. 管理员将用户分配到相应的角色
  3. 管理员或用户为 DAG 分配 DAG
  4. 用户只能在界面中看到权限已被分配到其所属群组的 DAG

DAG 可以通过 DAG 属性或 RBAC 界面分配给角色。

将 DAG 分配给 DAG 属性中的角色

DAG 开发者可以在他们上传的 DAG 上设置 access_control DAG 参数,从而指定 DAG 将为其分配的 DAG 分组角色:

dag = DAG(
  access_control={
    'DagGroup': {'can_dag_edit', 'can_dag_read'},
  },
  ...
  )

然后,管理员、DAG 开发者或自动化流程必须运行 sync_perm Airflow 命令以应用新的访问权限控制设置。

将 DAG 分配给 RBAC 界面中的角色

管理员还可以将所需的 DAG 级权限分配给 Airflow 界面中的相应角色。

后续步骤