Перед настройкой выполните следующие действия:
1. Убедитесь, что установлена версия RT.DataVision не ниже 2.2.0:
/usr/local/bin/python3.9 -m pip list | grep datavision
2. Обеспечьте сетевую связанность до AD-сервера, включая нужный порт.
3. Подготовьте техническую учётную запись (ТУЗ) в AD, состоящую в группе Domain Users.
4. Получите:
Важно. На текущий момент добавление LDAP-аутентификации возможно только вручную через конфигурационный файл. Переконфигурирование через RT.ClusterManager приведёт к потере внесённых изменений. Рекомендуется заранее сделать резервную копию настроек.
Примечание. Используйте отдельную техническую учётную запись с минимальными правами. Это исключит проблемы при блокировке личных учётных записей.
Выполните следующие шаги:
1. Сделайте резервную копию текущих настроек:
cp /etc/datavision/conf/superset_config.py /etc/datavision/conf/superset_config.py.back
2. Добавьте настройки в файл /etc/datavision/conf/superset_config.py:
В начало файла:
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
3. Убедитесь, что заданы обязательные параметры:
Примечание. Обычно используется порт 389 (LDAP), но могут потребоваться другие:
- 389 — LDAP (auth/replication/GPO/trusts)
- 636 — LDAP over SSL
- 3268 — Global Catalog
- 3269 — Global Catalog over SSL
Примечание. Параметр AUTH_LDAP_UID_FIELD определяет поле в AD, по которому производится сверка логина пользователя при входе. Наиболее часто используются:
- userPrincipalName — логин в формате user@domain.
- sAMAccountName — логин в формате user.
Эти значения могут быть изменены в настройках Active Directory. Уточните у администратора, какой атрибут используется для входа и какие значения он содержит.
4. Перезапустите RT.DataVision:
systemctl restart datavision.socket datavision.service
5. Выполните реинициализацию:
export FLASK_APP=/usr/local/lib/python3.9/site-packages/superset
export SUPERSET_CONFIG_PATH=/etc/datavision/conf/superset_config.py
superset init
6. Сохраните рабочую версию конфигурации:
cp /etc/datavision/conf/superset_config.py /etc/datavision/conf/superset_config.py.back-with-ad
7. Проверьте доступность интерфейса и возможность входа через AD. Откройте в браузере https://<datavision_server> и выполните вход с использованием учётной записи из AD.
Проверьте следующие пункты:
1. Сервер доступен по сети:
ping <server>
2. Порт доступен:
nc -vz <server> <port>
3. Техническая учётная запись активна:
ldapsearch -x -h server -p 3268 -D "datavision_tua@dcp.local" -W -b "dc=dcp,dc=local"
4. Пользователь найден в AD:
ldapsearch -x -h server -p 3268 -D "datavision_tua@dcp.local" -W -b "dc=dcp,dc=local" "(userPrincipalName=user@domain)"
ldapsearch -x -h server -p 3268 -D "datavision_tua@dcp.local" -W -b "dc=dcp,dc=local" "(sAMAccountName=user)"