Настройка LDAP-провайдера федерации
Федерация для окружения Keycloak позволяет настроить доступ к БД PAM и спискам пользователей, которые хранятся в Active Directory или LDAP. После настройки, PAM сможет синхронизировать пользователей и группы LDAP с Keycloak, а также назначать им роли.
Вместо настройки в Keycloak, вы можете настроить федерацию в PAM. Настройка выполняется аналогичным образом, а синхронизация пользователей и сопоставление ролей будут доступны прямо в интерфейсе портала PAM.
Шаг 1. Создание новой федерации в окружении
Авторизуйтесь в Keycloak.
В списке окружений выберите pam и перейдите в раздел User federation.
Нажмите Add new provider и выберите провайдер ldap.
Теперь нужно настроить параметры федерации.
Шаг 2. Настройка параметров федерации
Чтобы настроить параметры провайдера для федерации, в разделе User federation выберите провайдера и заполните параметры вкладок Settings и Mappers.
Вкладка Settings
В блоке General Options:
UI display name — укажите ldap-pam.
Vendor — выберите Active Directory.
В блоке 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, которая будет обращаться в домен.
Остальные параметры оставьте по умолчанию.
Нажмите Test authentication, чтобы проверить соединение.
Если есть ошибки, проверьте указанные настройки и повторите проверку.В блоке LDAP searching and updating:
Edit mode — выберите UNSYNCED.
User DN — укажите путь до OU, в которой хранятся ученые записи пользователей для синхронизации.
Остальные параметры оставьте по умолчанию.
В блоке 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".
Нажмите 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:
Создайте родительскую группу, которая будет содержать все импортированные группы.
Имя родительской группы должно начинаться с Remote-*, например "Remote-AD".
На вкладке Mappers выберите или создайте маппер для групп с типом group-ldap-mapper, например AD.
Настройка мапперов
На блоке Mappers выберите AD.
В открывшемся окне заполните:
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" — родительскую группу из предварительной настройки,
Остальные параметры оставьте по умолчанию.
Нажмите 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
Перейдите на вкладку Settings.
В правом верхнем углу нажмите Enabled, чтобы включить федерацию.
В списке Action выберите Sync all users. Дождитесь сообщения о том, что синхронизация выполнена успешно.
Если есть ошибки, проверьте указанные настройки и повторите проверку.Перейдите на вкладку Mappers.
В списке Action выберите Sync LDAP groups to Keycloack. Дождитесь сообщения о том, что синхронизация выполнена успешно.
Если есть ошибки, проверьте указанные настройки и повторите проверку.
Группы и пользователи для PAM синхронизированы с Keycloak.
Чтобы просмотреть импортированных пользователей, перейдите в раздел Users и в поле поиска введите "*".
Список всех импортированных групп можно просмотреть в разделе Groups.
Шаг 4. Сопоставление ролей PAM
Список ролей PAM отображается в разделе Realm roles.
Чтобы сопоставить роли PAM с группой AD:
В разделе Groups выберите группу, которой нужно назначить роль.
Перейдите на вкладку Role mapping и нажмите Assign role.
В открывшемся окне отметьте роль, которая соответствует выбранной группе.
Дополнительно отметьте роль user-pam, которая дает возможность подключаться к ресурсу.
Нажмите Assign.
Роли назначены группе пользователей. Повторите операции для остальных групп пользователей.
Шаг 5. Настройка сертификатов для работы с LDAP
Перейдите в директорию с проектом PAM и выполните:
mkdir -p volumes/keycloak/truststoresОткройте файл
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В директорию
volumes/keycloak/truststoresпоместите сертификат УЦ для AD и все промежуточные сертификаты из цепочки сертификации, если они есть. Имя файла сертификата должно быть с расширением.pem.Перезапустите проект:
docker compose down docker compose up -d
Проверка аутентификации
После окончания настройки перейдите на страницу авторизации и войдите в PAM. Если возникли ошибки, проверьте указанные настройки и роли, исправьте ошибки и повторите вход.