Проверить, что версия Datavision не ниже, чем 2.2.0
/usr/local/bin/python3.9 -m pip list | grep datavision
Внимание: на данный момент при добавление LDAP аутентификации возможно, только при редактировании файла конфигурации вручную, поэтому рекомендуется воздержаться от переконфигурирования через RTCM, так как это затрёт изминения. Рекомендуется сделать backup настроек
Потребуется
Рекомендация: для подключения подойдёт любая учётная запись с минимальными правами, но рекомендуется завести отдельную техническую учётную запись, что защитит от случаев, когда человек уволился, его УЗ заблокировали и доступ в AD пропал
Делаем backup настроек
cp /etc/datavision/conf/superset_config.py /etc/datavision/conf/superset_config.py.back
Добавляем настройки в файл конфигурации
# Добавить в начало файла
import ldap
from flask_appbuilder.security.manager import AUTH_LDAP
# Добавить в конец файла
AUTH_TYPE = AUTH_LDAP
AUTH_LDAP_SERVER = "ldap://server:389"
AUTH_USER_REGISTRATION = True
AUTH_LDAP_EMAIL_FIELD = "mail"
AUTH_LDAP_SEARCH = "OU=main,DC=DCP,DC=LOCAL"
AUTH_LDAP_UID_FIELD = "userPrincipalName"
AUTH_LDAP_BIND_USER = "datavision_tua"
AUTH_LDAP_BIND_PASSWORD = "Pa$$word!"
# AD Groups
AUTH_ROLES_MAPPING = {
"CN=dv_admin,OU=main,DC=DCP,DC=LOCAL": ["Admin"],
"CN=dv_gamma,OU=main,DC=DCP,DC=LOCAL": ["Gamma"]
}
AUTH_LDAP_GROUP_FIELD = "memberOf"
AUTH_ROLES_SYNC_AT_LOGIN = True
PERMANENT_SESSION_LIFETIME = 1800
Обязательные к настройки параметры
AUTH_LDAP_SERVER - адрес нашего сервера
AUTH_LDAP_SEARCH - место где располагаются пользователи AD
AUTH_LDAP_UID_FIELD - поле ввода аутентификации
AUTH_LDAP_UID_FIELD - логин технической учётной записей
AUTH_LDAP_BIND_USER - пароль технической учётной записей
AUTH_LDAP_SERVER - При выборе подключения есть несколько вариантов, самый простой это 389, но иногда требуется проводить поиск пользователей в глобальном каталоге. Подоробнее уточняйте у администраторов Active Directory
389 - LDAP auth/replication/gpo/trusts port
636 - LDAP over SSL auth/replication/gpo/trusts port
3268 - LDAP Global Catalog
3269 - LDAP over SSL Global Catalog
AUTH_LDAP_UID_FIELD - стоит отметить, что по этому полю будет сверяться логин пользователя. Если указать userPrincipalName, то скорее всего будет логин вида user@domain, если указать sAMAccountName, то просто user. Но эти настройки могут быть изменены в самой AD и нужно свериться какое там имеет значение этот атрибут.
systemctl restart datavision.socket datavision.service
Переинициализировать
export FLASK_APP=/usr/local/lib/python3.9/site-packages/superset
export SUPERSET_CONFIG_PATH=/etc/datavision/conf/superset_config.py
superset init
cp /etc/datavision/conf/superset_config.py /etc/datavision/conf/superset_config.py.back-with-ad
Открыть datavision в браузере и проверить аутентификацию
https://server
Проверить, что сервер пингутеся
ping <server>
Проверить, что порт открыт
nc -vz <server> <port>
Проверка технической учётной записи (в примере проверяем datavision_tua@dcp.local)
Должно выдать очень длинный список информации из AD
ldapsearch -x -h server -p 3268 -D "datavision_tua@dcp.local" -W -b "dc=dcp,dc=local"
Проверяем, что конкретный пользователь находится в AD
Если используется sAMAccountName, то заменить userPrincipalName на sAMAccountName
ldapsearch -x -h server -p 3268 -D "datavision_tua@dcp.local" -W -b "dc=dcp,dc=local" "(userPrincipalName=user@doamin)"