Конфигурация 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.

Алгоритм синхронизации групп и ролей:

  1. Выполняется поиск групп пользователя в LDAP.
  2. Для каждой группы выполняется поиск в 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, то синхронизация будет пропущена. Если нужно синхронизировать больше групп, то необходимо настроить периодическую синхронизацию групп с помощью скрипта синхронизации.

Предыдущая