Airflow 3.0.2中FabAuthManager下LDAP/AD认证配置失败求助
Airflow LDAP/Active Directory 配置排障
你的配置仅启用了FabAuthManager并导入了AUTH_LDAP,但缺少核心的LDAP连接与认证参数,这是认证不生效的主要原因。以下是完整的可生效配置示例及关键检查点:
完整webserver_config.py配置示例
from airflow.providers.fab.auth_manager.fab_auth_manager import FabAuthManager from airflow.providers.fab.auth_manager.security_manager.override import FabAirflowSecurityManagerOverride from flask_appbuilder.security.manager import AUTH_LDAP from flask_appbuilder.const import AUTH_LDAP # 设置认证类型为LDAP AUTH_TYPE = AUTH_LDAP # LDAP服务器基础配置 AUTH_LDAP_SERVER = "ldap://your-ad-server:389" # SSL连接用ldaps://your-ad-server:636 AUTH_LDAP_USE_TLS = False # 启用LDAPS时设为True # 用于查询AD的服务账号配置 AUTH_LDAP_BIND_USER = "CN=airflow-service,OU=ServiceAccounts,DC=yourdomain,DC=com" AUTH_LDAP_BIND_PASSWORD = "your-service-account-password" # 用户搜索规则(匹配AD中的用户目录) AUTH_LDAP_SEARCH = "OU=Users,DC=yourdomain,DC=com" AUTH_LDAP_UID_FIELD = "sAMAccountName" # AD中对应用户名的字段,通常是这个 AUTH_LDAP_FIRSTNAME_FIELD = "givenName" AUTH_LDAP_LASTNAME_FIELD = "sn" AUTH_LDAP_EMAIL_FIELD = "mail" # 可选:AD组与Airflow角色映射(按需配置) AUTH_LDAP_GROUP_SEARCH = "OU=Groups,DC=yourdomain,DC=com" AUTH_LDAP_GROUP_FIELD = "memberOf" AUTH_LDAP_ROLE_ADMIN = "CN=AirflowAdmins,OU=Groups,DC=yourdomain,DC=com" # 对应Airflow管理员角色的AD组 AUTH_LDAP_ROLE_PUBLIC = "CN=AirflowUsers,OU=Groups,DC=yourdomain,DC=com" # 对应普通用户角色的AD组 # 自定义SecurityManager(必须配置,否则无法生效) class CustomSecurityManager(FabAirflowSecurityManagerOverride): pass SECURITY_MANAGER_CLASS = CustomSecurityManager
关键检查点
- 确认
airflow.cfg的[core]段已设置auth_manager = airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager,并重启Airflow Webserver和Scheduler服务。 - 用命令测试LDAP连通性:
能返回用户信息说明连通正常,否则检查网络、账号权限或AD地址。ldapsearch -x -H ldap://your-ad-server:389 -D "CN=airflow-service,OU=ServiceAccounts,DC=yourdomain,DC=com" -w "your-password" -b "OU=Users,DC=yourdomain,DC=com" "(sAMAccountName=test-user)" - 查看Airflow Webserver日志(默认路径
$AIRFLOW_HOME/logs/webserver),排查是否有LDAP连接失败、绑定错误或搜索规则不匹配的日志。 - 若用LDAPS(636端口),需确保Airflow服务器信任AD的SSL证书,可将证书导入系统信任库,或添加配置
AUTH_LDAP_CERTIFICATE = "/path/to/ad-cert.pem"。 - 确认绑定的服务账号拥有查询AD用户、组信息的权限。
内容的提问来源于stack exchange,提问作者Duurenjargal Davaadorj
相关产品推荐
相关产品推荐

