You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何授予清除特定Airflow DAG历史执行记录的权限?

如何创建仅能清除特定Airflow DAG历史执行记录的角色

要实现只让角色清除指定DAG的历史执行记录,核心是把操作权限绑定到特定DAG资源上,而不是给全局权限。以下是具体配置方案:

核心权限逻辑

Airflow的权限是「操作类型 + 资源范围」的组合:

  • 不需要全局的can delete on DAGs权限(这个是用来删除DAG本身定义的,不是执行记录,会导致能删所有DAG)
  • 只需要针对特定DAG分配「删除DAG运行实例」和「清除任务实例状态」的权限

需要分配的具体权限

给新建角色添加以下权限(均限定目标DAG的dag_id):

  • delete操作,资源类型为DAG Run,资源名称填你的目标DAG ID(比如my_target_dag):对应清除DAG的历史执行记录
  • clear操作,资源类型为Task Instance,资源名称填目标DAG ID:对应清除任务实例的运行状态(如果需要用到post_clear_task_instances相关操作的话)

配置步骤

用Airflow UI配置

  1. 进入Airflow后台的「Security」→「Roles」页面,点击「Create」新建角色(比如命名为DAG_Clearer_MyTargetDAG)
  2. 在权限添加区域:
    • 选择操作delete,资源类型DAG Run,资源名称输入目标DAG的ID,点击「Add Permission」
    • 选择操作clear,资源类型Task Instance,资源名称输入目标DAG的ID,点击「Add Permission」
  3. 确认不要添加任何全局的delete on DAGs权限

用CLI配置

如果习惯命令行操作,可以用airflow roles add-permission命令:

# 给角色添加删除指定DAG运行记录的权限
airflow roles add-permission -r DAG_Clearer_MyTargetDAG -a delete -t "DAG Run" -d "my_target_dag"

# 给角色添加清除指定DAG任务实例的权限(如果需要)
airflow roles add-permission -r DAG_Clearer_MyTargetDAG -a clear -t "Task Instance" -d "my_target_dag"

关键注意点

  • 一定要区分「删除DAG定义」(can delete on DAGs)和「删除DAG执行记录」(can delete on DAG Runs):前者会让角色能删除任何DAG的元数据,完全不符合需求,绝对不能加
  • 配置完成后可以测试:用该角色登录Airflow,尝试清除其他DAG的执行记录,应该会被权限拦截,只能操作指定的DAG

内容的提问来源于stack exchange,提问作者Yohei Onishi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:55:31