具有 RBAC 功能的 Airflow LDAP 身份验证

abh*_*ani 6 ldap rbac airflow flask-appbuilder

我正在尝试使用 RBAC 功能启用 Airflow LDAP 身份验证,并进行了以下更改:

  1. 从airflow.cfg 中删除了LDAP 部分
  2. 修改airflow.cfg:在[webserver]部分下 添加rbac = true和删除authentication = True
  3. AIRFLOW_HOME目录下 创建 webserver_config.py 文件

webserver_config.py 文件包含:

import os

from airflow import configuration as conf

from flask_appbuilder.security.manager import AUTH_LDAP

basedir = os.path.abspath(os.path.dirname(__file__))

SQLALCHEMY_DATABASE_URI = conf.get(‘core’, ‘SQL_ALCHEMY_CONN’)

CSRF_ENABLED = True

AUTH_TYPE = AUTH_LDAP

AUTH_ROLE_ADMIN = ‘Admin’

AUTH_USER_REGISTRATION = True

AUTH_USER_REGISTRATION_ROLE = “Admin”

AUTH_LDAP_SERVER = ‘ldaps://ldap.xxx.yyy.net:636‘

AUTH_LDAP_SEARCH = “ou=Users,o=corp”

AUTH_LDAP_BIND_USER = ‘cn=ldap-proxy,ou=Users,o=corp’

AUTH_LDAP_BIND_PASSWORD = ‘YOUR_PASSWORD’

AUTH_LDAP_UID_FIELD = ‘uid’

AUTH_LDAP_USE_TLS = False

AUTH_LDAP_ALLOW_SELF_SIGNED = False

AUTH_LDAP_TLS_CACERTFILE = ‘/etc/ssl/certs/ldap.crt’
Run Code Online (Sandbox Code Playgroud)

完成上述更改后,我们就可以使用 LDAP 凭据登录 Airflow。但是问题是所有的用户Admin在自注册后都有这个角色,因为我们在AUTH_USER_REGISTRATION_ROLE = “Admin”.

我们如何AUTH_USER_REGISTRATION_ROLE根据用户 LDAP 角色动态分配?我们有不同的用户,如测试人员、开发人员和操作用户,但使用上述 web 服务器配置文件,所有用户都Admin通过 manager.py 文件下的 Flask_appbuilder.security自动分配角色。

有什么方法可以创建自定义管理器文件,登录时引用此自定义文件而不是 Flask_appbuilder.security.manager.py 文件。

小智 0

我建议将其设置为“查看者”以开始,然后手动将其更新为“用户”。