具有RBAC功能的LDAP身份验证

具有RBAC功能的LDAP身份验证,ldap,airflow,rbac,flask-appbuilder,Ldap,Airflow,Rbac,Flask Appbuilder,我正在尝试使用RBAC功能启用LDAP身份验证,并进行了以下更改: 已从airflow.cfg中删除LDAP节 修改的aiffort.cfg:在[webserver]部分下添加了rbac=true并删除了authentication=true 在afflow\u HOME目录中创建一个webserver\u config.py文件 webserver_config.py文件包含: import os from airflow import configuration as conf from

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

  • 已从airflow.cfg中删除LDAP节
  • 修改的aiffort.cfg:在[webserver]部分下添加了
    rbac=true
    并删除了
    authentication=true
  • afflow\u HOME
    目录中创建一个webserver\u 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’
    
    在进行上述更改后,我们可以使用LDAP凭据登录到Airflow。但问题是所有用户在自注册后都有
    Admin
    角色, 因为我们在
    AUTH\u USER\u REGISTRATION\u ROLE=“Admin”
    中给出了这个值

    如何根据用户LDAP角色动态分配
    AUTH\u USER\u REGISTRATION\u角色
    ? 我们有不同的用户,如tester、developer和operation user,但通过上面的Web服务器配置文件,所有用户都会通过manager.py文件下的Flask_appbuilder.security自动分配
    Admin
    角色


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

    我建议将其设置为查看器以启动,然后手动将其更新给用户。

    您可以尝试使用AUTH_LDAP_SEARCH_FILTER

    筛选或限制LDAP服务器中允许的用户,例如,仅限于团队中的人员。AUTH\u LDAP\u SEARCH\u FILTER=“(memberOf=cn=group name,OU=type,dc=ex,cn=com)”

    发件人:

    气流>=1.10使用FlaskAppBuilder进行RBAC验证


    尚未对其进行测试,但是

    PS:AUTH_USER_REGISTRATION_ROLE_JMESPATH用于在注册时计算用户角色的JMESPATH表达式。如果设置,则优先于身份验证用户注册角色。需要安装jmespath。请参阅:ref:
    jmespath示例
    以了解示例,即AUTH_USER_REGISTRATION_ROLE_jmespath='email='user1@domain.com“&&“管理员”| |(电子邮件==”user2@domain.com“&&“Op”| |“Viewer”)“我没有在flask app builder的安全管理器中看到为ldap实现的Jmes路径。您能确认它是为ldap完成的吗?如果是,您能将您的代码更改粘贴到这里吗?