如何直接从根源禁用Apache Airflow GUI中的Docs菜单栏
Airflow生产环境隐藏UI Docs菜单的实现方案

以下是三种不需要逐一调整角色权限的根源级实现方式,可根据你的实际部署场景选择:
方案1:配置文件移除菜单注册(推荐,无侵入无需改源码)
该方案直接修改Airflow Webserver的菜单注册逻辑,从根源上不加载Docs菜单,适配Airflow 2.x全版本:
- 进入你的Airflow配置目录(默认路径为
$AIRFLOW_HOME),如果目录下不存在webserver_config.py文件,执行命令生成:airflow config generate-webserver-config - 打开
webserver_config.py文件,添加如下代码覆盖默认菜单配置,直接删除Docs相关的菜单项即可:
from flask_appbuilder.menu import MenuItem # 自定义菜单列表,仅保留你需要的菜单,删除Docs相关的MenuItem条目 FAB_MENU = [ MenuItem("Home", href="/", icon="fa-home"), MenuItem("DAGs", href="/dags", icon="fa-th-large"), MenuItem("Datasets", href="/datasets", icon="fa-database"), MenuItem("Security", href="", icon="fa-lock", children=[ MenuItem("List Users", href="/users/list", icon="fa-user"), MenuItem("List Roles", href="/roles/list", icon="fa-lock"), ]), MenuItem("Admin", href="", icon="fa-wrench", children=[ MenuItem("Connections", href="/connection/list/", icon="fa-exchange"), MenuItem("Variables", href="/variable/list/", icon="fa-pencil"), MenuItem("XComs", href="/xcom/list/", icon="fa-exchange"), ]) # 按需添加其他需要保留的菜单,不要添加Docs对应的条目即可 ]
- 配置完成后重启Airflow Webserver服务生效。
方案2:CSS注入隐藏(操作最简,适配全版本)
如果不想修改菜单配置,可通过注入自定义CSS的方式直接隐藏前端的Docs菜单入口:
- 打开
airflow.cfg配置文件,找到[webserver]配置段,确认webserver_config参数指向的webserver_config.py路径 - 在
webserver_config.py末尾添加如下配置:
# 注入自定义CSS隐藏Docs菜单 CUSTOM_CSS = """ .nav > li:has(a[href*="airflow.apache.org/docs"]) { display: none !important; } """
- 重启Airflow Webserver服务生效。
方案3:CLI批量移除权限(适合仅限制访问、不需要完全隐藏菜单的场景)
如果需要保留Docs菜单但仅对特定角色开放,可通过Airflow CLI命令批量移除所有角色的Docs访问权限,不需要逐个在UI操作:
- 进入Airflow运行的虚拟环境,执行如下命令批量移除指定角色的Docs相关权限:
# 以Admin角色为例,替换为你需要调整的角色名(Viewer、User、Op等)即可批量操作 airflow roles list-permissions --role Admin | grep -i docs | awk '{print $1}' | xargs -I {} airflow roles remove-permission Admin {}
注意:所有配置修改完成后都需要重启Airflow Webserver服务生效,生产环境建议先在测试环境验证配置正确性后再上线。
内容的提问来源于stack exchange,提问作者techrhl
相关产品推荐
相关产品推荐

