Ответ
LDAP (Lightweight Directory Access Protocol) — это открытый, отраслевой стандартный протокол прикладного уровня для доступа и управления службами каталогов. В контексте DevOps и инфраструктурной безопасности LDAP (чаще в виде его реализации — OpenLDAP или Microsoft Active Directory) используется как централизованная система управления идентификацией и доступом (IAM) для пользователей и сервисов.
Основные концепции:
- DIT (Directory Information Tree): Иерархия записей, подобная файловой системе (например,
dc=mycompany,dc=com). - Entry (Запись): Объект в дереве, например, пользователь (
uid=jdoe), группа (cn=developers) или сервис. - Attribute (Атрибут): Пара "ключ-значение" в записи (
mail,uidNumber,sshPublicKey). - Bind (Привязка): Операция аутентификации (входа) в каталог.
Практическое применение в DevOps-стеке:
- Аутентификация на Linux-серверах: Интеграция через
sssdилиpam_ldap. Позволяет инженерам входить на все серверы с помощью корпоративных учётных данных, а не отдельных SSH-ключей. - Управление доступом в инструментах:
- Kubernetes: Плагин
dexилиgangwayмогут использовать LDAP для аутентификации пользователей в кластере, связывая группы LDAP с Kubernetes RBACClusterRoleBinding. - CI/CD (Jenkins, GitLab): Настройка LDAP-авторизации для управления доступом к пайплайнам и репозиториям.
- Мониторинг (Grafana): Настройка входа для команды.
- Виртуализация (vCenter): Централизованное управление правами администраторов.
- Kubernetes: Плагин
- Хранение SSH-ключей: Атрибут
sshPublicKeyв LDAP может использоваться для централизованного распространения ключей на серверы.
Пример поиска пользователя с помощью ldapsearch:
# Анонимный поиск (если разрешён) для нахождения DN пользователя
ldapsearch -x -H ldaps://ldap.mycompany.com -b "ou=people,dc=mycompany,dc=com" "(uid=jdoe)"
# Аутентифицированный поиск для получения чувствительных данных
ldapsearch -x -H ldaps://ldap.mycompany.com -D "uid=svc_account,ou=services,dc=mycompany,dc=com" -W -b "ou=people,dc=mycompany,dc=com" "(uid=jdoe)" mail displayName
Интеграция с Linux (PAM): В файле /etc/sssd/sssd.conf настраивается домен LDAP, что позволяет использовать команды типа getent passwd jdoe или id jdoe для проверки пользователей и групп из центрального каталога. Это критически важно для соблюдения принципа least privilege и быстрого онбординга/офбординга сотрудников в инфраструктуре.