Я пытаюсь включить аутентификацию Airflow LDAP с функциями RBA C и внес следующие изменения:
- Удален раздел LDAP из airflow.cfg
- Изменен airflow.cfg: добавлен
rbac = true
и удален authentication = True
в разделе [webserver] - Создайте файл webserver_config.py в каталоге
AIRFLOW_HOME
Файл 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’
После вышеуказанных изменений мы можем войти в Airflow с учетными данными LDAP. Но проблема в том, что все пользователи имеют роль Admin
после самостоятельной регистрации, потому что мы дали это значение в AUTH_USER_REGISTRATION_ROLE = “Admin”
.
Как мы можем динамически назначить AUTH_USER_REGISTRATION_ROLE
на основе роли LDAP пользователей ? У нас есть разные пользователи, такие как тестировщик, разработчик и пользователь эксплуатации, но с указанным выше конфигурационным файлом веб-сервера всем пользователям автоматически назначается роль Admin
через Flask_appbuilder.security в файле manager.py.
Есть ли способ создать файл менеджера настройки и при входе в систему используйте этот файл настройки вместо файла Flask_appbuilder.security.manager.py.