
Разработка безопасного программного обеспечения — одна из самых распространенных тем, связанных с ИБ, в 2026 году. Вокруг нее мы все чаще слышим слова «управление секретами», «безопасная доставка секретов» и т.д. Мы уже писали практическую статью тут, но, как показывает практика, системы управления секретами не крутятся только вокруг key-value значений или динамических секретов для database. Я Руслан Гайфутдинов, ведущий пресейл-инженер системы управления секретами StarVault в Orion soft. В этой статье предлагаю рассмотреть еще один (не забытый, а, скорее, не известный) механизм секретов LDAP.
Для начала предлагаю разделить понятия. В StarVault есть два совершенно разных способа работы с LDAP, и их легко перепутать:
Метод аутентификации LDAP — позволяет пользователям входить в StarVault , используя свои LDAP-учетные данные. StarVault проверяет пароль через LDAP и выдает токен;
Метод аутентификации LDAP — позволяет пользователям входить в StarVault , используя свои LDAP-учетные данные. StarVault проверяет пароль через LDAP и выдает токен;
Движок секретов LDAP — StarVault сам управляет паролями LDAP-пользователей: автоматически ротирует их по расписанию и выдает приложениям актуальные credentials.
Движок секретов LDAP — StarVault сам управляет паролями LDAP-пользователей: автоматически ротирует их по расписанию и выдает приложениям актуальные credentials.
Эта статья про второй сценарий. Движок секретов LDAP превращает StarVault в централизованную систему управления паролями учетных записей в каталоге — будь то FreeIPA, Active Directory или любой другой LDAP-сервер.
Зачем это нужно
Типичная проблема в инфраструктуре: есть сервисные учетные записи в LDAP (например, системы мониторинга, gitlab, vpn, почты и т.д), пароли от которых прописаны в конфигах, переменных окружения или вообще «живут» только в голове администратора. Это создает риски:
Пароль не меняется годами — если утечет, злоумышленник получает долгосрочный доступ;
Пароль не меняется годами — если утечет, злоумышленник получает долгосрочный доступ;
Несколько команд знают один и тот же пароль — при увольнении сотрудника его нужно менять везде;
Несколько команд знают один и тот же пароль — при увольнении сотрудника его нужно менять везде;
Нет аудита — непонятно, кто и когда использовал учетную запись.
Нет аудита — непонятно, кто и когда использовал учетную запись.
Движок секретов LDAP решает эти проблемы: система управления секретами берет на себя ротацию паролей по расписанию, а приложения запрашивают актуальный пароль через API перед каждым использованием.
Архитектура решения
StarVault подключается к LDAP под служебной учеткой (binddn) и меняет пароль целевого пользователя. При следующем обращении приложения StarVault возвращает уже новый пароль.
Шаг 1. Включение движка
Флаг path=ldap задает путь, по которому будет смонтирован движок. Можно использовать любой путь, например, -path=ipa-prod или -path=ad-secrets — это удобно, если нужно подключить несколько LDAP-серверов (или, например, у вас есть еще AD).
После выполнения команды StarVault регистрирует новый движок и открывает пространство путей ldap/* для операций с секретами.
Шаг 2. Настройка подключения к LDAP
Разберем каждый параметр:
url
ldap://ipa.demo.pre:389
Адрес LDAP-сервера. Для шифрования используйте ldaps:// на порту 636
binddn
uid=admin,cn=users,...
DN служебной учетки, от имени которой StarVault будет менять пароли. Должна иметь права на изменение userPassword
bindpass
<ваш_пароль>
Пароль служебной учетки. Хранится в зашифрованном виде внутри StarVault
userdn
cn=users,cn=accounts,...
Базовый DN для поиска пользователей
userattr
uid
Атрибут, по которому идентифицируется пользователь (в AD обычно sAMAccountName)
Важно: binddn должен иметь право изменять пароли целевых пользователей, но не обязательно быть полным администратором. Следуйте принципу минимальных привилегий — создайте отдельную служебную учетку с делегированными правами только на userPassword.
Шаг 3. Создание статической роли
Статическая роль (static-role) — это привязка между StarVault и конкретным пользователем в LDAP. В отличие от динамических учеток для механизма секретов database (которые создаются и удаляются на лету), статическая роль управляет уже существующим пользователем.
Параметры:
полный DN пользователя
Точный идентификатор записи в каталоге
username
ldap-user
Имя пользователя (по атрибуту userattr из конфига)
rotation_period
Как часто StarVault будет менять пароль. Поддерживаются единицы: s, m, h
Имя роли в пути ( ldap-user после static-role/ ) — произвольное. Можно называть по назначению: ldap/static-role/backup-agent, ldap/static-role/monitoring-user. То есть не обязательно привязываться к учетной записи пользователя.
Что происходит сразу после создания роли: StarVault немедленно генерирует новый пароль для пользователя и устанавливает его в LDAP. Старый пароль перестает работать. Таймер ротации запускается с этого момента.
Шаг 4. Чтение актуальных credentials
Поля вывода:
password — текущий актуальный пароль пользователя в LDAP;
password — текущий актуальный пароль пользователя в LDAP;
last_password — предыдущий пароль (на случай если смена еще не применилась повсюду). При первой ротации показывает n/a;
last_password — предыдущий пароль (на случай если смена еще не применилась повсюду). При первой ротации показывает n/a;
last_vault_rotation — время последней смены пароля;
last_vault_rotation — время последней смены пароля;
ttl — сколько времени осталось до следующей ротации.
ttl — сколько времени осталось до следующей ротации.
Приложения должны запрашивать пароль через этот endpoint перед каждым подключением к LDAP, а не кэшировать его надолго.
Шаг 5. Вход в StarVault под управляемым пользователем
Если для ldap-user также настроен метод аутентификации LDAP (отдельная настройка), можно войти в StarVault под этим пользователем:
Здесь важно понимать разделение ответственности:
Движок секретов LDAP управляет паролем пользователя в LDAP-каталоге;
Движок секретов LDAP управляет паролем пользователя в LDAP-каталоге;
Метод аутентификации LDAP использует этот пароль для входа в StarVault.
Метод аутентификации LDAP использует этот пароль для входа в StarVault.
Это именно тот сценарий, где оба механизма работают вместе: StarVault ротирует пароль, а LDAP-аутентификация в StarVault автоматически использует актуальный пароль, поскольку проверка идет против живого LDAP-сервера.
Ротация паролей: как это работает изнутри
Пароли генерируются криптографически стойким генератором. Длина по умолчанию — 64 символа (как видно в примере вывода).
Права доступа (Policies)
Для того чтобы приложение могло читать credentials, ему нужна политика StarVault:
Движок секретов LDAP в StarVault переводит управление сервисными учетками из ручного режима в автоматический. Вместо статических паролей в конфигах — динамически ротируемые credentials с централизованным аудитом и контролем доступа через политики StarVault.