Движки секретов и пути

Как Vault из одного KV вырастает в платформу: движки секретов монтируются по путям, как плагины.

Secrets engine (движок секретов) — подключаемый компонент Vault, отвечающий за определённый тип секретов (KV, БД, PKI, transit и т.д.) и смонтированный по своему пути.

Vault — не монолит, а набор движков. KV хранит статику, database генерирует креды БД, transit шифрует, pki выдаёт сертификаты. Каждый движок монтируется по пути и работает независимо от других.

Монтирование по путям

Когда вы монтируете движок, вы выбираете путь-префикс. Дальше все операции этого движка живут под этим префиксом:

# смонтировать KV v2 на пути secret/
vault secrets enable -path=secret -version=2 kv

# отдельный KV для другой команды
vault secrets enable -path=team-billing kv-v2

# движок БД
vault secrets enable database

# transit
vault secrets enable transit

Префикс пути произволен. Можно смонтировать один и тот же тип движка несколько раз на разные пути — например, отдельный KV на каждую команду для изоляции.

Перечисление движков

vault secrets list
Path           Type       Description
----           ----       -----------
secret/        kv         key/value v2
database/      database   dynamic db creds
transit/       transit    encryption as a service
sys/           system     internal

Почему всё — это путь

Единая модель путей — фундамент Vault. Прочитать секрет — это чтение пути secret/data/x. Сгенерировать креды БД — чтение database/creds/role. Зашифровать — запись в transit/encrypt/key. Благодаря этому система прав тоже описывается путями: политика просто перечисляет, какие операции на каких путях разрешены. Не нужно учить отдельный язык прав для каждого движка.

vault/
  secret/      <- KV v2 (статика)
    data/myapp/db
  database/    <- динамические креды
    creds/readonly
  transit/     <- шифрование
    encrypt/orders-key
  pki/         <- сертификаты
    issue/web-role
  auth/        <- методы аутентификации
    approle/login

Как работает под капотом

Каждый смонтированный движок — изолированный экземпляр со своими данными в storage под своим префиксом. Размонтирование (vault secrets disable) удаляет ВСЕ секреты этого движка и отзывает выданные им динамические креды. Поэтому путь монтирования — это ещё и граница изоляции и жизненного цикла.

Системный движок sys/

Особый путь sys/ — это управление самим Vault: политики, аудит, монтирование, статус seal. Технически это тоже «движок», доступ к которому регулируется политиками, поэтому администрирование Vault подчиняется тем же правилам, что и работа с секретами.

Частые ошибки

  • Размонтировать движок «чтобы почистить» — это стирает все его секреты и отзывает динамические креды.
  • Монтировать всё на один путь — теряется изоляция между командами/средами.
  • Забывать про sys/ в политиках админов — без прав на sys/ нельзя управлять Vault.

Итог

  • Движки секретов — модули по типам (KV, database, transit, pki), монтируемые по путям.
  • Один тип можно смонтировать многократно на разные пути для изоляции.
  • Единая модель путей объединяет работу с секретами и систему прав; sys/ управляет самим Vault.
Проверьте себя
1. Что такое secrets engine в Vault?
AТолько хранилище паролей
BПодключаемый компонент под конкретный тип секретов, смонтированный по пути
CВнешняя база данных
DМетод аутентификации
2. Что произойдёт при размонтировании движка секретов?
AНичего, данные сохранятся
BБудут удалены все его секреты и отозваны выданные динамические креды
CДвижок перейдёт в read-only
DVault запечатается
3. Зачем нужна единая модель «всё — это путь»?
AЧтобы ускорить диск
BЧтобы и операции, и права описывались одинаково — через пути
CЧтобы запретить несколько движков
DЭто требование storage backend