Механизмы секретов — это компоненты, которые хранят, генерируют или шифруют данные. Механизмы секретов чрезвычайно гибки, поэтому удобнее всего описывать их с точки зрения выполняемых функций. Механизм секретов получает некоторый набор данных, выполняет над ними определённые действия и возвращает результат.

Одни механизмы секретов просто хранят и читают данные — например, плагин K/V. Другие подключаются к внешним сервисам и генерируют динамические учётные данные по запросу. Третьи предоставляют шифрование как услугу, генерацию TOTP-кодов, сертификаты и многое другое.

Механизмы секретов подключаются по определённому пути в Stronghold. Когда в Stronghold поступает запрос, маршрутизатор автоматически перенаправляет всё, что совпадает с префиксом маршрута, в соответствующий механизм секретов. Таким образом, каждый механизм секретов определяет собственные пути и свойства. Для пользователя механизмы секретов работают аналогично виртуальной файловой системе, поддерживая операции чтения, записи и удаления.

Жизненный цикл механизма секретов

Большинство механизмов секретов можно включить, отключить, настроить и переместить через CLI или API.

  • enable — включает механизм секретов по указанному пути. За некоторыми исключениями, механизмы секретов можно включать по нескольким путям. Каждый механизм изолирован в рамках своего пути. По умолчанию они подключаются по пути, совпадающему с их типом (например, kv подключается по пути kv/).

Учёт регистра: Путь, по которому подключаются механизмы секретов, чувствителен к регистру. Например, механизм секретов KV, подключённый по пути kv/ и KV/, рассматривается как два отдельных экземпляра KV.

  • disable — отключает существующий механизм секретов. При отключении механизма все его секреты отзываются (если это поддерживается), а все данные, хранящиеся для этого механизма в физическом хранилище, удаляются.

  • move — перемещает путь существующего механизма секретов. В процессе перемещения все секреты отзываются, поскольку сроки аренды секретов привязаны к пути их создания. Данные конфигурации механизма сохраняются при перемещении.

  • tune — настраивает глобальную конфигурацию механизма секретов, например значения TTL.

После подключения механизма секретов можно взаимодействовать с ним непосредственно по его пути согласно его собственному API. Используйте команду d8 stronghold path-help, чтобы узнать, какие пути поддерживаются.

Обратите внимание, что точки монтирования в Stronghold не могут конфликтовать между собой. Из этого следуют два важных ограничения. Во-первых, нельзя создать монтирование с префиксом, совпадающим с уже существующим монтированием. Во-вторых, нельзя создать точку монтирования с именем, являющимся префиксом существующего монтирования. Например, монтирования foo/bar и foo/baz могут сосуществовать, тогда как foo и foo/baz — нет.

Барьерное представление

Механизмы секретов получают барьерное представление настроенного физического хранилища Stronghold. Это аналогично механизму chroot.

При подключении механизма секретов генерируется случайный UUID, который становится корневым каталогом данных этого механизма. При каждой записи механизма в физическое хранилище путь предваряется папкой с этим UUID. Поскольку слой хранилища Stronghold не поддерживает относительный доступ (например, ../), подключённый механизм секретов не может получить доступ к данным других механизмов.

Это важная функция безопасности Stronghold — даже вредоносный механизм не сможет получить доступ к данным любого другого механизма.