Многие знают, что тема создания домена в Linux-инфраструктурах, подобного MS Active Directory, — одна из наиболее сложных в текущей стратегии изменения инфраструктур крупных компаний. Компания Avanpost начала разработку своей службы каталогов задолго до того, как это стало мейнстримом, и первичной нашей целью было создание службы для масштабных Linux-инфраструктур, которая позволила бы централизованно управлять правами администраторов и технологических учетных записей на серверах. Время внесло коррективы в наши планы разработки и позиционирование продукта, но основные архитектурные идеи сохранились с первого концепта. Собственно, ими мы и хотим начать делиться, учитывая множество вопросов, поступающих от действующих и потенциальных клиентов, партнеров и просто интересующихся.
Один из краеугольных камней и первый вопрос к нашему продукту — использование BadgerDB в качестве бэкенда хранения данных каталога. Сегодня один из бэкенд разработчиков Avanpost DS расскажет, как мы «приземлили» LDAP-каталог на KV-хранилище.
Требования к базе данных для LDAP-каталога
Перед погружением в BadgerDB необходимо сформулировать ключевые требования к базе данных, которая будет использоваться в качестве основной для LDAP-каталога. Для этого давайте вспомним, что же такое LDAP.
LDAP (Lightweight Directory Access Protocol) — это протокол для поиска и управления данными в каталогах. Каталоги в этом контексте представляют собой специализированные базы данных, содержащие информацию о различных объектах, таких как пользователи, устройства, группы и другие элементы сети. LDAP применяют при централизованном управлении данными, аутентификации пользователей (например, для входа в системы или приложения), управлении доступом (контроль прав пользователей), хранении контактной информации и интеграции с различными сервисами для упрощения административных задач. LDAP обеспечивает эффективный и безопасный доступ к этой информации.
В LDAP-каталоге данные организованы в иерархическом (древоподобном) виде, что значительно отличается от плоской структуры, используемой в традиционных реляционных базах данных. Это означает, что данные в LDAP хранятся в виде дерева с узлами, и каждый узел может содержать другие узлы (или элементы). Такая организация данных предоставляет удобный способ для их поиска, управления и категоризации.