具有RBAC功能的LDAP身份验证
我正在尝试使用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=true
并删除了authentication=true
afflow\u HOME
目录中创建一个webserver\u 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完成的吗?如果是,您能将您的代码更改粘贴到这里吗?