Конфигурация LDAP-провайдера в DataLens On-premises
Чтобы настроить LDAP-провайдер, нужно создать конфигурацию с необходимыми параметрами для подключения к LDAP-серверу и маппинга пользовательских атрибутов.
Основные параметры конфигурации
{
slug: 'openldap', // Уникальный идентификатор провайдера
title: 'OpenLDAP', // Отображаемое название провайдера
type: 'ldap', // Тип провайдера (должен быть 'ldap')
defaultRole: 'datalens.visitor', // Роль по умолчанию для новых пользователей
config: {
// Параметры подключения к LDAP-серверу
url: 'ldap://localhost:8389', // URL LDAP-сервера
bindDN: 'cn=admin,dc=example,dc=org', // DN для административного подключения
bindCredentials: 'admin', // Пароль для административного подключения
bindProperty: 'dn', // Атрибут для административного подключения
// Параметры поиска пользователей
searchBase: 'ou=users,dc=example,dc=org', // База поиска пользователей
searchFilter: '(uid={{username}})', // Фильтр поиска пользователей
searchScope: 'sub', // Область поиска: 'base', 'one' или 'sub'
// Параметры поиска групп (опционально)
groupSearchBase: 'ou=groups,dc=example,dc=org', // База поиска групп
groupSearchFilter: '(&(objectClass=groupOfNames)(member={{dn}}))', // Фильтр поиска групп
groupDnProperty: 'dn', // Атрибут DN группы
groupSearchScope: 'sub', // Область поиска групп
// Маппинг атрибутов пользователя (опционально)
userAttributes: {
userId: 'uid', // Атрибут для идентификатора пользователя (по умолчанию 'uid')
login: 'uid', // Атрибут для логина пользователя (по умолчанию 'uid')
email: 'mail', // Атрибут для адреса электронной почты пользователя (по умолчанию 'mail')
firstName: 'givenName', // Атрибут для имени пользователя (по умолчанию 'givenName')
lastName: 'sn', // Атрибут для фамилии пользователя (по умолчанию 'sn')
},
// Маппинг атрибутов группы (опционально)
groupAttributes: {
groupId: 'dn', // Атрибут для идентификатора группы (по умолчанию 'dn')
title: 'cn', // Атрибут для названия группы (по умолчанию 'cn')
},
// Маппинг ролей DataLens на группы LDAP (опционально)
roleToGroupId: {
'datalens.admin': 'cn=datalensadmin,ou=groups,dc=example,dc=org',
'datalens.creator': 'cn=datalenscreator,ou=groups,dc=example,dc=org',
'datalens.visitor': 'cn=datalensvisitor,ou=groups,dc=example,dc=org',
},
// Дополнительные настройки
syncUserRoles: true, // Синхронизировать роли пользователя при каждом входе (по умолчанию true)
syncUserGroups: true, // Синхронизировать группы пользователя при каждом входе (по умолчанию true)
}
}
Описание параметров
Основные параметры
- slug — уникальный идентификатор провайдера, используется в URL и внутренних идентификаторах.
- title — название провайдера, отображаемое в интерфейсе.
- type — тип провайдера, для LDAP должно быть значение
ldap. - defaultRole — роль, назначаемая пользователю, если не удалось определить роль по группам LDAP.
Параметры подключения к LDAP-серверу
- url — URL LDAP-сервера, например,
ldap://localhost:389илиldaps://ldap.example.com:636. - bindDN — уникальное имя Distinguished Name (DN) для административного подключения к LDAP-серверу.
- bindCredentials — пароль для административного подключения.
- bindProperty — атрибут объекта пользователя LDAP, используемый при привязке для проверки пароля. Например,
name,email. По умолчанию:dn.
Параметры поиска пользователей
-
searchBase — база поиска пользователей в LDAP, например,
ou=users,dc=example,dc=org. -
searchFilter — фильтр поиска пользователей. Используйте шаблон
{{username}}для подстановки введенного пользователем логина. -
searchScope — область поиска:
base— поиск только в указанной базе.one— поиск в базе и на один уровень ниже.sub— рекурсивный поиск во всех поддеревьях.
Параметры поиска групп (опционально)
- groupSearchBase — база поиска групп в LDAP, например,
ou=groups,dc=example,dc=org. - groupSearchFilter — фильтр поиска групп. Используйте
{{dn}}для подстановки DN найденного пользователя. - groupDnProperty — атрибут объекта пользователя, используемый в интерполяции
{{dn}}для groupSearchFilter (по умолчаниюdn). - groupSearchScope — область поиска групп (аналогично searchScope).
Маппинг атрибутов пользователя
Позволяет настроить соответствие между атрибутами пользователя LDAP и полями пользователя в системе:
- userId — атрибут для идентификатора пользователя (по умолчанию
uid). - login — атрибут для логина пользователя (по умолчанию
uid). - email — атрибут для адреса электронной почты пользователя (по умолчанию
mail). - firstName — атрибут для имени пользователя (по умолчанию
givenName). - lastName — атрибут для фамилии пользователя (по умолчанию
sn).
Маппинг атрибутов группы
Позволяет настроить соответствие между атрибутами групп LDAP и полями групп в системе:
- groupId — атрибут для идентификатора группы (по умолчанию
dn). - title — атрибут для названия группы (по умолчанию
cn).
Маппинг ролей на группы LDAP
Позволяет настроить соответствие между ролями в DataLens и группами LDAP.
Алгоритм синхронизации групп и ролей:
- Выполняется поиск групп пользователя в LDAP.
- Для каждой группы выполняется поиск в
roleToGroupIdпо идентификатору группы (аттрибуту изgroupAttributes). При нахождении группы вroleToGroupId, пользователю будет назначена соответствующая роль.
Например:
roleToGroupId: {
'datalens.admin': 'cn=datalensadmin,ou=groups,dc=example,dc=org',
'datalens.creator': 'cn=datalenscreator,ou=groups,dc=example,dc=org',
'datalens.visitor': 'cn=datalensvisitor,ou=groups,dc=example,dc=org',
}
Где:
'cn=datalensadmin,ou=groups,dc=example,dc=org','cn=datalenscreator,ou=groups,dc=example,dc=org','cn=datalensvisitor,ou=groups,dc=example,dc=org'— идентификаторы групп и база для поиска (ou=groups,dc=example,dc=org) в LDAP.'datalens.admin','datalens.creator','datalens.visitor'— роли в DataLens.
Так, если пользователь состоит в группе cn=datalensadmin, ему будет назначена соответствующая роль — datalens.admin.
Дополнительные настройки
- syncUserRoles — при значении
true(по умолчанию), роли пользователя будут синхронизироваться при каждом входе. - syncUserGroups — при значении
true(по умолчанию), группы пользователя будут синхронизироваться при каждом входе.
Особенности синхронизации ролей и групп
Синхронизация групп и ролей пользователя происходит в момент входа пользователя в систему. Если пользователь состоит в группе, указанной в конфигурации, ему будет назначена соответствующая роль, а также группа будет заведена в DataLens и будет доступна в правах доступа. Если пользователь не состоит в группе, ему будет назначена роль по умолчанию. Если групп больше, чем 100, то синхронизация будет пропущена. Если нужно синхронизировать больше групп, то необходимо настроить периодическую синхронизацию групп с помощью скрипта синхронизации.