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

Airflow 2.10基于LDAP的RBAC配置:按AD组限制查看对应所有者DAG求助

Airflow 2.10 对接AD组实现DAG粒度权限控制方案

1 先解决filter_by_owner配置不生效问题

你当前配置的fiter_by_owner=True存在两处错误:

  • 配置项拼写错误,正确参数名为filter_by_owner
  • 该参数必须放在airflow.cfg的[webserver]配置段下,放在其他段不会生效
    修正后重启Airflow webserver和scheduler,可先验证原生的基于用户名的owner过滤功能是否正常。

2 AD组对接实现方案

Airflow 2.x原生已经基于FAB框架生成了DAG粒度的权限端点,不需要自行开发对应接口,可按以下两种方案落地:

方案1:DAG内置access_control + AD组角色映射

无需修改Airflow核心配置,仅需调整DAG代码和FAB角色配置即可:

  • 第一步:完成AD组到FAB角色的映射,在webserver_config.py中配置你提到的FAB_ROLES和FAB_ROLES_MAPPING,将不同AD组对应到专属角色,比如Python开发组对应python_dev_role、ML开发组对应ml_dev_role。配置示例:
FAB_ROLES = {
    "python_dev_role": [
        [".*", "menu_access"],
        ["DAGRun", "can_list"],
        ["TaskInstance", "can_list"]
    ],
    "ml_dev_role": [
        [".*", "menu_access"],
        ["DAGRun", "can_list"],
        ["TaskInstance", "can_list"]
    ]
}
# 键为AD组的SID,值为对应自定义角色名
FAB_ROLES_MAPPING = {
    "S-1-5-21-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-1001": "python_dev_role",
    "S-1-5-21-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-1002": "ml_dev_role"
}
  • 第二步:在DAG定义中通过access_control参数指定可访问的角色,示例如下:
from airflow import DAG
from datetime import datetime

default_args = {
    'owner': 'python_team',
    'start_date': datetime(2024, 1, 1)
}

with DAG(
    dag_id='python_team_daily_task',
    default_args=default_args,
    schedule_interval='0 1 * * *',
    # 仅允许python_dev_role和管理员访问该DAG
    access_control={
        'python_dev_role': {'can_read', 'can_edit'},
        'Admin': {'can_read', 'can_edit'}
    }
) as dag:
    # 你的任务逻辑
    pass
  • 第三步:移除所有自定义角色中all_dags资源的读权限,避免用户看到所有DAG。

方案2:自定义安全管理器实现标签/组自动匹配

如果不想逐个DAG配置access_control,可重写Airflow安全管理器实现自动权限匹配:

  • 自定义安全管理器,继承AirflowSecurityManager,重写get_accessible_dag_ids方法,逻辑为获取当前用户所属的AD组,匹配DAG的标签(比如标签为team:python的DAG仅允许Python开发组成员查看),返回有权限的DAG ID列表。
  • 在webserver_config.py中指定SECURITY_MANAGER_CLASS为你自定义的安全管理器类即可。

注意事项

  • 用户首次登录时FAB会自动同步AD组对应的角色,可在Airflow UI的Admin > Security > List Users页面验证角色分配是否正确。
  • 如果是动态生成DAG的场景,可在DAG生成模板中统一注入access_control配置,无需逐个修改DAG代码。

内容的提问来源于stack exchange,提问作者Sarath Chandra Vema

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:18:03