Airflow权限分为四个级别:全局(Global)、DAG、任务(Task)、实例(Instance)。其中,允许通过API触发DAG运行的权限属于DAG级别。
具体来说,需要添加以下权限:
可以通过以下代码实现添加权限:
import airflow.api.security as security
from airflow import DAG
from airflow.models import DagBag
# 定义DAG
dag_id = 'my_dag'
dag = DAG(dag_id, ...)
...
# 获取DAG对应的安全对象
dagbag = DagBag()
dag = dagbag.get_dag(dag_id)
if dag:
security_manager = security.SecurityManager(dag.model)
# 添加dag_run:create和dag_run:edit权限
security_manager.add_permission_to_role('dag_run', 'create')
security_manager.add_permission_to_role('dag_run', 'edit')