Airflow 2.5.2(Docker部署)非RBAC模式下按所有者配置DAG角色权限
非RBAC模式下Airflow 2.5.2用户DAG权限配置方案
前提确认
当前环境为Docker Compose部署的Airflow 2.5.2,已通过配置AIRFLOW__WEBSERVER__RBAC = False禁用RBAC模式,需为用户abc配置仅能管理自身所属DAG的权限。
操作步骤
1. 创建自定义专属角色
在Airflow容器内执行命令,创建一个仅用于管理abc所属DAG的角色(示例命名为abc_dag_manager):
docker-compose exec airflow-webserver airflow roles create abc_dag_manager
2. 为角色分配目标DAG的具体权限
针对abc拥有的每个DAG(假设DAG ID为dag_abc_01、dag_abc_02),分配查看、暂停、恢复、触发运行所需的权限动作:
# 为单个DAG分配权限 docker-compose exec airflow-webserver airflow roles add-perms -r DAG -a can_read can_pause can_resume can_trigger -d dag_abc_01 abc_dag_manager # 为多个DAG批量分配权限 docker-compose exec airflow-webserver airflow roles add-perms -r DAG -a can_read can_pause can_resume can_trigger -d dag_abc_01 dag_abc_02 abc_dag_manager
3. 移除角色的全局DAG权限(关键)
默认情况下角色可能带有对所有DAG的访问权限,需移除这些全局权限,确保用户仅能看到指定的DAG:
docker-compose exec airflow-webserver airflow roles del-perms -r DAG -a can_read can_pause can_resume can_trigger abc_dag_manager
注:此命令会移除角色对
*(所有)DAG的对应权限,仅保留步骤2中指定的单个/多个DAG的权限。
4. 绑定用户与自定义角色
将用户abc关联到刚创建的自定义角色:
docker-compose exec airflow-webserver airflow users add-role abc abc_dag_manager
若用户
abc之前绑定过其他角色,可按需移除旧角色:docker-compose exec airflow-webserver airflow users remove-role abc [旧角色名称]
命令中文翻译及参数说明
原命令:
[RESOURCE [RESOURCE ...]] [-v] [role [role ...]]``` 中文翻译及参数解释: ```airflow roles del-perms [-h] [-a [动作 [动作 ...]]] -r [资源 [资源 ...]] [-v] [角色 [角色 ...]]``` - `-h`:显示命令帮助信息 - `-a`:指定要移除的权限动作(如`can_read`、`can_pause`等) - `-r`:指定权限对应的资源类型(此处需填`DAG`) - `-v`:开启详细输出模式 - 末尾指定要移除权限的角色名称 ## 配置验证 完成操作后,用用户`abc`登录Airflow GUI,验证以下内容: - 仅能看到自身所属的DAG(如`dag_abc_01`、`dag_abc_02`) - 可对这些DAG执行暂停、恢复、触发运行操作 - 无法查看或操作其他用户的DAG 内容的提问来源于stack exchange,提问作者Usman_Ahmed
相关产品推荐
相关产品推荐

