Управление LDAP

Администраторы платформы могут добавлять, обновлять и удалять LDAP-сервисы на платформе.

Содержание

Обзор LDAP

LDAP (Lightweight Directory Access Protocol) — это зрелый, гибкий и хорошо поддерживаемый стандартный механизм взаимодействия с директориями. Он организует данные в иерархическую древовидную структуру для хранения информации о пользователях и организациях предприятия, преимущественно используется для реализации единого входа (SSO).

NOTE

Ключевые особенности LDAP:

  • Обеспечивает связь между клиентами и LDAP-серверами
  • Поддерживает операции хранения, извлечения и поиска данных
  • Обеспечивает возможности аутентификации клиентов
  • Способствует интеграции с другими системами

Для получения дополнительной информации обратитесь к официальной документации LDAP.

Поддерживаемые типы LDAP

OpenLDAP

OpenLDAP — это реализация LDAP с открытым исходным кодом. Если в вашей организации используется open-source LDAP для аутентификации пользователей, вы можете настроить платформу для взаимодействия с LDAP-сервисом, добавив LDAP и настроив соответствующие параметры.

NOTE

Интеграция OpenLDAP:

  • Обеспечивает аутентификацию пользователей LDAP на платформе
  • Поддерживает стандартные протоколы LDAP
  • Обеспечивает гибкое управление пользователями

Для получения дополнительной информации об OpenLDAP обратитесь к официальной документации OpenLDAP.

Active Directory

Active Directory — это LDAP-основанное программное обеспечение Microsoft для предоставления служб хранения каталогов в системах Windows. Если в вашей организации используется Microsoft Active Directory для управления пользователями, вы можете настроить платформу для взаимодействия с сервисом Active Directory.

NOTE

Интеграция Active Directory:

  • Обеспечивает аутентификацию пользователей AD на платформе
  • Поддерживает интеграцию с доменами Windows
  • Обеспечивает управление пользователями корпоративного уровня

Терминология LDAP

Общие термины OpenLDAP

ТерминОписаниеПример
dc (Domain Component)Компонент доменаdc=example,dc=com
ou (Organizational Unit)Организационная единицаou=People,dc=example,dc=com
cn (Common Name)Общее имяcn=admin,dc=example,dc=com
uid (User ID)Идентификатор пользователяuid=example
objectClass (Object Class)Класс объектаobjectClass=inetOrgPerson
mail (Mail)Электронная почтаmail=example@126.com
givenName (Given Name)ИмяgivenName=xq
sn (Surname)Фамилияsn=ren
objectClass: groupOfNamesГруппа пользователейobjectClass: groupOfNames
member (Member)Атрибут участника группыmember=cn=admin,dc=example,dc=com
memberOfАтрибут членства в группеmemberOf=cn=users,dc=example,dc=com

Общие термины Active Directory

ТерминОписаниеПример
dc (Domain Component)Компонент доменаdc=example,dc=com
ou (Organizational Unit)Организационная единицаou=People,dc=example,dc=com
cn (Common Name)Общее имяcn=admin,dc=example,dc=com
sAMAccountName/userPrincipalNameИдентификатор пользователяuserPrincipalName=example или sAMAccountName=example
objectClass: userКласс объекта пользователя ADobjectClass=user
mail (Mail)Электронная почтаmail=example@126.com
displayNameОтображаемое имяdisplayName=example
givenName (Given Name)ИмяgivenName=xq
sn (Surname)Фамилияsn=ren
objectClass: groupГруппа пользователейobjectClass: group
member (Member)Атрибут участника группыmember=CN=Admin,DC=example,DC=com
memberOfАтрибут членства в группеmemberOf=CN=Users,DC=example,DC=com

Добавление LDAP

TIP

После успешной интеграции LDAP:

  • Пользователи могут входить на платформу с использованием своих корпоративных учетных записей
  • Множественное добавление одного и того же LDAP перезапишет ранее синхронизированных пользователей

Предварительные требования

Перед добавлением LDAP подготовьте следующую информацию:

  • Адрес LDAP-сервера
  • Имя пользователя администратора
  • Пароль администратора
  • Другие необходимые параметры конфигурации

Шаги

  1. В левой навигационной панели нажмите Users > IDPs
  2. Нажмите Add LDAP
  3. Настройте следующие параметры:

Основная информация

ПараметрОписание
Server AddressАдрес доступа к LDAP-серверу (например, 192.168.156.141:31758)
UsernameDN администратора LDAP (например, cn=admin,dc=example,dc=com)
PasswordПароль учетной записи администратора LDAP
Login Box Username PromptСообщение-приглашение для ввода имени пользователя (например, "Пожалуйста, введите ваше имя пользователя")

Настройки поиска

NOTE

Назначение настроек поиска:

  • Соответствие LDAP-записям пользователей по заданным условиям
  • Извлечение ключевых атрибутов пользователей и групп
  • Отображение атрибутов LDAP на атрибуты пользователей платформы
ПараметрОписание
Object TypeObjectClass для пользователей:
- OpenLDAP: inetOrgPerson
- Active Directory: organizationalPerson
- Группы: posixGroup
Login FieldАтрибут, используемый в качестве имени пользователя для входа:
- OpenLDAP: mail (адрес электронной почты)
- Active Directory: userPrincipalName
Filter ConditionsУсловия фильтра LDAP для фильтрации пользователей/групп
Пример: (&(cn=John*)(givenName=*xq*))
Search Starting PointБазовый DN для поиска пользователей/групп (например, dc=example,dc=org)
Search ScopeОбласть поиска:
- sub: весь поддерево каталога
- one: один уровень ниже начальной точки
Login AttributeУникальный идентификатор пользователя:
- OpenLDAP: uid
- Active Directory: distinguishedName
Name AttributeАтрибут имени объекта (по умолчанию: cn)
Email AttributeАтрибут электронной почты:
- OpenLDAP: mail
- Active Directory: userPrincipalName
Group Member AttributeИдентификатор участника группы (по умолчанию: uid)
Group AttributeАтрибут связи с группой пользователей (по умолчанию: memberuid)
  1. В разделе IDP Service Configuration Validation:

    • Введите действительное имя пользователя и пароль LDAP-аккаунта
    • Имя пользователя должно совпадать с настройкой Login Field
    • Нажмите для проверки конфигурации
  2. (Опционально) Настройте LDAP Auto-Sync Policy:

    • Включите переключатель Auto-Sync Users
    • Установите правила синхронизации
    • Используйте онлайн-инструмент для проверки выражений CRON
  3. Нажмите Add

NOTE

После добавления LDAP:

  • Пользователи могут входить до синхронизации
  • Информация о пользователях синхронизируется автоматически при первом входе
  • Автоматическая синхронизация происходит согласно настроенным правилам

Примеры конфигурации LDAP

Конфигурация LDAP-коннектора

Ниже приведён пример настройки LDAP-коннектора:

apiVersion: dex.coreos.com/v1
kind: Connector
id: ldap        # Connector ID
name: ldap      # Connector display name
type: ldap      # Connector type is LDAP
metadata:
  name: ldap
  namespace: cpaas-system
spec:
  config:
    # LDAP server address and port
    host: ldap.example.com:636                         
    # DN and password for the service account used by the connector.
    # This DN is used to search for users and groups.
    bindDN: uid=serviceaccount,cn=users,dc=example,dc=com 
    # Service account password, required when creating a connector.
    bindPW: password                         

    # Login account prompt. For example, username
    usernamePrompt: SSO Username
    
    # User search configuration
    userSearch:
      # Start searching from the base DN
      baseDN: cn=users,dc=example,dc=com
      # LDAP query statement, used to search for users.
      # For example: "(&(objectClass=person)(uid=<username>))"
      filter: (&(objectClass=organizationalPerson))

      # The following fields are direct mappings of user entry attributes.
      # User ID attribute
      idAttr: uid
      # Required. Attribute to map to email                     
      emailAttr: mail
      # Required. Attribute to map to username
      nameAttr: cn
      # Login username attribute
      # Filter condition will be converted to "(<attr>=<username>)", such as (uid=example).
      username: uid

      # Extended attributes
      # phoneAttr: phone

    # Group search configuration  
    groupSearch:
      # Start searching from the base DN
      baseDN: cn=groups,dc=freeipa,dc=example,dc=com
      # Group filter condition
      # "(&(objectClass=group)(member=<user uid>))".
      filter: "(objectClass=group)"
      # User group matching field
      # Group attribute
      groupAttr: member
      # User group member attribute
      userAttr: uid
      # 组显示名称
      nameAttr: cn

Примеры фильтров пользователей

# 1. Базовый фильтр: Найти всех пользователей
(&(objectClass=person))

# 2. Комбинация нескольких условий: Найти пользователей в конкретном отделе
(&(objectClass=person)(departmentNumber=1000))

# 3. Найти активных пользователей (Active Directory)
(&(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

# 4. Найти пользователей с определённым доменом электронной почты
(&(objectClass=person)(mail=*@example.com))

# 5. Найти участников конкретной группы
(&(objectClass=person)(memberOf=cn=developers,ou=groups,dc=example,dc=com))

# 6. Найти недавно вошедших пользователей (Active Directory)
(&(objectClass=user)(lastLogon>=20240101000000.0Z))

# 7. Исключить системные аккаунты
(&(objectClass=person)(!(uid=admin))(!(uid=system)))

# 8. Найти пользователей с определённым атрибутом
(&(objectClass=person)(mobile=*))

# 9. Найти пользователей в нескольких отделах
(&(objectClass=person)(|(ou=IT)(ou=HR)(ou=Finance)))

# 10. Пример сложной комбинации условий
(&
  (objectClass=person)
  (|(department=IT)(department=Engineering))
  (!(title=Intern))
  (manager=cn=John Doe,ou=People,dc=example,dc=com)
)

Примеры конфигурации поиска групп

# 1. Базовый фильтр: Найти все группы
(objectClass=groupOfNames)

# 2. Найти группы с определённым префиксом
(&(objectClass=groupOfNames)(cn=dev-*))

# 3. Найти непустые группы
(&(objectClass=groupOfNames)(member=*))

# 4. Найти группы с определённым участником
(&(objectClass=groupOfNames)(member=uid=john,ou=People,dc=example,dc=com))

# 5. Найти вложенные группы (Active Directory)
(&(objectClass=group)(|(groupType=-2147483646)(groupType=-2147483644)))

# 6. Найти группы с определённым описанием
(&(objectClass=groupOfNames)(description=*admin*))

# 7. Исключить системные группы
(&(objectClass=groupOfNames)(!(cn=system*)))

# 8. Найти группы с определёнными участниками
(&(objectClass=groupOfNames)(|(cn=admins)(cn=developers)(cn=operators)))

# 9. Найти группы в конкретном OU
(&(objectClass=groupOfNames)(ou=IT))

# 10. Пример сложной комбинации условий
(&
  (objectClass=groupOfNames)
  (|(cn=prod-*)(cn=dev-*))
  (!(cn=deprecated-*))
  (owner=cn=admin,dc=example,dc=com)
)

Примеры операторов AND(&) и OR(|) в LDAP-фильтрах

# Оператор AND (&) - все условия должны быть выполнены
# Синтаксис: (&(condition1)(condition2)(condition3)...)

# Пример AND с несколькими атрибутами
(&
  (objectClass=person)
  (mail=*@example.com)
  (title=Engineer)
  (manager=*)
)

# Оператор OR (|) - должно быть выполнено хотя бы одно условие
# Синтаксис: (|(condition1)(condition2)(condition3)...)

# Пример OR с несколькими атрибутами
(|
  (department=IT)
  (department=HR)
  (department=Finance)
)

# Комбинирование AND и OR
(&
  (objectClass=person)
  (|
    (department=IT)
    (department=R&D)
  )
  (employeeType=FullTime)
)

# Сложная комбинация условий
(&
  (objectClass=person)
  (|
    (&
      (department=IT)
      (title=*Engineer*)
    )
    (&
      (department=R&D)
      (title=*Developer*)
    )
  )
  (!(status=Inactive))
  (|(manager=*)(isManager=TRUE))
)

Синхронизация пользователей LDAP

После успешной синхронизации пользователей LDAP на платформу вы можете просмотреть синхронизированных пользователей в списке пользователей.

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

Примечания:

  • Новые пользователи, добавленные в LDAP, интегрированный с платформой, могут войти на платформу до выполнения операции синхронизации пользователей. После успешного входа их информация автоматически синхронизируется с платформой.

  • Пользователи, удалённые из LDAP, после синхронизации получат статус Invalid.

  • По умолчанию срок действия вновь синхронизированных пользователей — Постоянный.

  • Синхронизированные пользователи с тем же именем, что и существующие пользователи (локальные или IDP), автоматически связываются. Их права и срок действия будут соответствовать существующим пользователям. Они могут входить на платформу, используя метод входа, соответствующий их источнику.

Порядок действий

  1. В левой навигационной панели нажмите Users > IDPs.

  2. Нажмите на имя LDAP, для которого хотите выполнить ручную синхронизацию.

  3. В правом верхнем углу нажмите Actions > Sync user.

  4. Нажмите Sync.

    Примечания: Если вы вручную закроете диалоговое окно синхронизации, появится диалог подтверждения закрытия. После закрытия диалога система продолжит синхронизацию пользователей. Если вы остаетесь на странице списка пользователей, получите обратную связь о результате синхронизации. Если покинете страницу списка пользователей, результат синхронизации не будет получен.

Соответствующие операции

Вы можете нажать на справа на странице списка или нажать Actions в правом верхнем углу на странице деталей, чтобы при необходимости обновить или удалить LDAP.

ОперацияОписание
Обновить LDAPОбновить конфигурацию добавленного LDAP или LDAP Auto-Sync Policy.

Примечание: После обновления LDAP пользователи, синхронизированные с платформой через этот LDAP, также будут обновлены. Пользователи, удалённые из LDAP, станут недействительными в списке пользователей платформы. Для очистки мусорных данных выполните операцию очистки недействительных пользователей.
Удалить LDAPПосле удаления LDAP все пользователи, синхронизированные с платформой через этот LDAP, получат статус Invalid (связь между пользователями и ролями сохраняется), и они не смогут войти на платформу. После повторной интеграции необходимо повторно выполнить синхронизацию для активации пользователей.

Совет: После удаления IDP, если необходимо удалить пользователей и группы пользователей, синхронизированные с платформой через LDAP, установите флажок Clean IDP Users and User Groups под окном подтверждения.