Настройка LDAP-провайдера федерации

Федерация для окружения Keycloak позволяет настроить доступ к БД PAM и спискам пользователей, которые хранятся в Active Directory или LDAP. После настройки, PAM сможет синхронизировать пользователей и группы LDAP с Keycloak, а также назначать им роли.

Вместо настройки в Keycloak, вы можете настроить федерацию в PAM. Настройка выполняется аналогичным образом, а синхронизация пользователей и сопоставление ролей будут доступны прямо в интерфейсе портала PAM.

Шаг 1. Создание новой федерации в окружении

  1. Авторизуйтесь в Keycloak.

  2. В списке окружений выберите pam и перейдите в раздел User federation.

  3. Нажмите Add new provider и выберите провайдер ldap.

Теперь нужно настроить параметры федерации.

Шаг 2. Настройка параметров федерации

Чтобы настроить параметры провайдера для федерации, в разделе User federation выберите провайдера и заполните параметры вкладок Settings и Mappers.

Вкладка Settings

  1. В блоке General Options:

    • UI display name — укажите ldap-pam.

    • Vendor — выберите Active Directory.

  2. В блоке Connections and authentication settings:

    • Connection URL — укажите адрес DC, на котором работает служба Active Directory в формате ldaps://host:636.

    • Bind DN — укажите полное имя учетной записи, которая будет обращаться в домен.

      Например, "CN=sa-kc,OU=SA,OU=Bizone,DC=dev2,DC=pam,DC=bi,DC=zone".


      Учетная запись sa-kc должна иметь права на чтение пользователей и групп по указанным DN.

    • Bind credentials — укажите пароль учетной записи sa-kc, которая будет обращаться в домен.

    • Остальные параметры оставьте по умолчанию.

  3. Нажмите Test authentication, чтобы проверить соединение.
    Если есть ошибки, проверьте указанные настройки и повторите проверку.

  4. В блоке LDAP searching and updating:

    • Edit mode — выберите UNSYNCED.

    • User DN — укажите путь до OU, в которой хранятся ученые записи пользователей для синхронизации.

    • Остальные параметры оставьте по умолчанию.

  5. В блоке Synchronization settings:

    • Import users — выберите On.

    • Sync Registration — выберите Off.

    • Batch size — оставьте пустым.

    • Periodic full sync — выберите On.

    • Full sync period — укажите "9000".

    • Periodic changed users sync — выберите On.

    • Changed users sync period — укажите "9000".

  6. Нажмите Save. Настройки разделов Kerberos Integration, Cache Settings, Advanced Settings заполнять не нужно.

Пример настройки Settings

Название параметра

Значение параметра

Комментарий

Раздел General Options

UI display name

ldap-pam

Название провайдера в списке провайдеров

Vendor

ad

По умолчанию

Раздел Connections and authentication settings

Connection URL

ldaps://test.pam.bi.zone:636

URL-адрес DC

Enable StartTLS

Off

По умолчанию

Use Truststore SPI

ldapsOnly

По умолчанию

Connection pooling

Off

По умолчанию

Connection timeout (ms)

-

По умолчанию

Bind type

simple

По умолчанию

Bind DN

CN=sa-kc,OU=SA,OU=Bizone,DC=dev2,DC=pam,DC=bi,DC=zone

DN учетной записи, под которой Keycloak будет обращаться к Active Directory. Учетная запись sa-kc должна иметь права на чтение пользователей и групп по указанным DN

Bind credentials

*******

Пароль от учетной записи sa-kc

Раздел LDAP searching and updating

Edit mode

UNSYNCED

Измените значение на UNSYNCED

Users DN

OU=UA,OU=Bizone,DC=dev2,DC=pam,DC=bi,DC=zone

Путь до организационной единицы в которой хранятся ученые записи пользователей для синхронизации

Username LDAP attribute

cn

По умолчанию

RDN LDAP attribute

cn

По умолчанию

UUID LDAP attribute

objectGUID

По умолчанию

User object classes

person, organizationalPerson, user

По умолчанию

User LDAP filter

-

По умолчанию

Подробнее о том, как настраивать фильтры

Search scope

Subtree

По умолчанию

Read timeout (ms)

-

По умолчанию

Pagination

On

По умолчанию

Referral

-

По умолчанию

Раздел Synchronization settings

Import users

On

Измените значение на On

Sync Registrations

Off

По умолчанию

Batch size

2000

По умолчанию 1024

Фактическое значение настройки должно быть больше, чем количество групп

Periodic full sync

On

Измените значение на On

Full sync period (s)

600

Период синхронизации в секундах. По умолчанию 600, что соответствует синхронизации раз в 10 минут

Periodic changed users sync

Off

Измените значение на Off

Changed users sync period (s)

300

Период синхронизации в секундах. По умолчанию 300, что соответствует синхронизации раз в 5 минут

Раздел Kerberos Integration

Allow Kerberos authentication

Off

По умолчанию

Use Kerberos for password authentication

Off

По умолчанию

Раздел Cache Settings

Cache policy

DEFAULT

По умолчанию

Раздел Advanced Settings

Enable the LDAPv3 password modify extended operation

Off

По умолчанию

Validate password policy

Off

По умолчанию

Trust email

Off

По умолчанию

Настройки сохранены, настройте параметры Mappers.

Вкладка Mappers

Предварительная настройка

Перед тем, как настраивать group-mapper:

  1. Создайте родительскую группу, которая будет содержать все импортированные группы.

    Имя родительской группы должно начинаться с Remote-*, например "Remote-AD".

  2. На вкладке Mappers выберите или создайте маппер для групп с типом group-ldap-mapper, например AD.

Настройка мапперов

  1. На блоке Mappers выберите AD.

  2. В открывшемся окне заполните:

    • LDAP Groups DN — укажите путь до OU, где будет выполняться поиск групп пользователей для синхронизации.

    • Preserve Group Inheritance — выберите On.

    • Ingone Missing Groups — выберите On.

    • Membership User LDAP Attribute — укажите "uid"

    • Mode — выберите READ_ONLY.

    • Drop non-existing groups during sync — выберите Off.

    • Groups Path — укажите "/Remote-AD" — родительскую группу из предварительной настройки,

    • Остальные параметры оставьте по умолчанию.

  3. Нажмите Save.

Настройки сохранены, синхронизируйте пользователей и группы.

Пример настройки Mappers

Название параметра

Значение параметра

Комментарий

LDAP Groups DN

OU=Groups,OU=Bizone,DC=dev2,DC=pam,DC=bi,DC=zone

Путь до OU в которой хранятся группы пользователей PAM для синхронизации

Group Name LDAP Attribute

cn

По умолчанию

Group Object Classes

group

По умолчанию

Preserve Group Inheritance

On

Измените значение на On

Ignore Missing Groups

On

Измените значение на On

Membership LDAP Attribute

member

По умолчанию

Membership Attribute Type

DN

По умолчанию

Membership User LDAP Attribute

uid

Измените значение на uid

LDAP Filter

-

По умолчанию

Подробнее о том, как настраивать фильтры

Mode

READ_ONLY

Измените значение на READ_ONLY

User Groups Retrieve Strategy

LOAD_GROUPS_BY_MEMBER_ATTRIBUTE

По умолчанию

Member-Of LDAP Attribute

memberOf

По умолчанию

Mapped Group Attributes

description,sAMAccountType,distinguishedName

По умолчанию

Drop non-existing groups during sync

Off

По умолчанию

Groups Path

/Remote-AD

Укажите родительскую группу

Добавление hardcoded-mapper

Для созданной федерации добавьте в список мапперров hardcoded-mapper с параметрами:

Название параметра

Значение параметра

Name

isremote-mapper

Mapper type

hardcoded-attribute-mapper

User Model Attribute Name

isRemote

Attribute Value

true

Шаг 3. Синхронизация пользователей и групп Active Directory

  1. Перейдите на вкладку Settings.

  2. В правом верхнем углу нажмите Enabled, чтобы включить федерацию.

  3. В списке Action выберите Sync all users. Дождитесь сообщения о том, что синхронизация выполнена успешно.
    Если есть ошибки, проверьте указанные настройки и повторите проверку.

  4. Перейдите на вкладку Mappers.

  5. В списке Action выберите Sync LDAP groups to Keycloack. Дождитесь сообщения о том, что синхронизация выполнена успешно.
    Если есть ошибки, проверьте указанные настройки и повторите проверку.

Группы и пользователи для PAM синхронизированы с Keycloak.

Чтобы просмотреть импортированных пользователей, перейдите в раздел Users и в поле поиска введите "*".

Список всех импортированных групп можно просмотреть в разделе Groups.

Шаг 4. Сопоставление ролей PAM

Список ролей PAM отображается в разделе Realm roles.

Чтобы сопоставить роли PAM с группой AD:

  1. В разделе Groups выберите группу, которой нужно назначить роль.

  2. Перейдите на вкладку Role mapping и нажмите Assign role.

  3. В открывшемся окне отметьте роль, которая соответствует выбранной группе.

  4. Дополнительно отметьте роль user-pam, которая дает возможность подключаться к ресурсу.

  5. Нажмите Assign.

Роли назначены группе пользователей. Повторите операции для остальных групп пользователей.

Шаг 5. Настройка сертификатов для работы с LDAP

  1. Перейдите в директорию с проектом PAM и выполните:

    mkdir -p volumes/keycloak/truststores
  2. Откройте файл docker-compose.yml. В секции volumes сервиса auth ( для версии 2.2 — web-auth) исправьте описание:

    volumes: - terraform_keys:/bpam/volumes/keys:ro - type: bind source: ./volumes/keycloak/truststores target: /opt/keycloak/conf/truststores read_only: true bind: create_host_path: false
  3. В директорию volumes/keycloak/truststores поместите сертификат УЦ для AD и все промежуточные сертификаты из цепочки сертификации, если они есть. Имя файла сертификата должно быть с расширением .pem.

  4. Перезапустите проект:

    docker compose down docker compose up -d

Проверка аутентификации

После окончания настройки перейдите на страницу авторизации и войдите в PAM. Если возникли ошибки, проверьте указанные настройки и роли, исправьте ошибки и повторите вход.