Как работает Vault со стороны сервера
Хранилище, первичный доступ распечатывания
После запуска службы хранилище находится в запечатанном состоянии. Для распечатки нужно ввести все части ключа распечатки, эти части делятся между администраторами, в настраиваемой пропорции, пример, 4 части для админов и 2 для успешной распечатки. Вспоминается фрагменты из фильма, где громадную дверь, в хранилище, открывают несколько хранителей своими ключами. Алгоритм шаринга секрета называется Шамир (Shamir’s Secret Sharing- SSS), кстати он же Шамир, в аббревиатуре RSA алгоритма аутоинтефикации, используемой в https — SSL и VPN — IPSec.
Доступ с секретам и управление настройками
Удобный доступ предоставляется через интерфейсы CLI, API, Web UI, последний по умолчанию выключен в целях укрепления безопасности, включение одной строкой в конфиге службы Vault. В итоге я тестировал через API используя Powershell.
Администратор выдает и обеспечивает инфраструктуру.
Жизненный цикл одиночного сервера Vault (владелец админ)
Запуск службы Vault
Распечатывание сейфа Unseal — master key
Генерируем root token или используем уже имеющий токен с правами
Используя root token настраиваем сервер, правим KV, делаем политики
Жизненный цикл хранилища секретов (владелец админ)
Создание хранилища ключ-значение KV, выбираем какой будет Path
Заполнение KV секретами — например логин пароль, то что будет хранится.
Создание политики доступа к секретам, которую можно привязать к новому токену.
Жизненный цикл выдачи токена (владелец админ)
Создаем новый токен привязанный к политике.
Выдаем этот токен пользователю и путь к секрету.
Админ не сохраняет токен у себя
Жизненный цикл использования токена (владелец пользователь)
Пользователь получивший путь и токен, прописывает их в конфиге приложении.
Приложение использует эти данные для доступа секрету — логин и пароль.
Токен неуклонно автоматически уменьшает свой TTL и сам погибает, обратно воскресить его нельзя, только запросить выдать новый. Если токен сделан для приложения как продлеваемый, у него можно продлевает TTL, по мере использования.
Зная accessor токена можно мониторить токен, не имя доступа к его секрету и оповещать об истечении его, если это было оговорено с пользователем.
Токен отозван, или истек TTL
Хранилище поменяло путь или его удалили.
Restart , stop службы переводит хранилище в Seal запечатанный режим. Reload службы не приводит в Seal mode, можно использовать в работе с логами.
Какие есть риски Vault
— у нас есть один Администратор, он уволился и сообщил только root token vault, новый админ перезапустил одиночный сервер (то есть закрыл большую дверь хранилища), теперь всё, ставим новый сервер и вспоминаем все пароли, которые он хранил. Ключи распечатки (master keys unseal) — это основные, составные ключи. Root token ключи можно сгенерировать в любое время имея master keys unseal. Например можно было поступить так unseal key1- у админа, key2- у руководителя ИТ, для распечатки хранилища задать как 1 ключ, тогда и передавать пароль при увольнении не нужно.
— Удобно на первоначальном этапе использовать Root token, потом нужно его отозвать. Потерять Root Token не страшно, даже полезно для безопасности. Если что его можно всегда сделать, собравшись на троих, по Шамиру.
— При отзыве токена, все выданные им токены, тоже перестанут работать. Можно обойти создавая с параметром -orphan
— Все токены, кроме root, автоматически истекают, сделать их вечными нельзя. Единственное, что можно сделать это продлевать на еще срок.
— Если вы сделает токен с ttl=12h и renewable=true, это не означает , что его можно будет продлевать вечно, для этого нужно делать с параметром period=12h
— При включённом логировании, если Vault не может сделать запись логов. Все стопится.
— Vault HA Raft при 3 нодах допустим выход только 1 ноды. при 5 нодах выход 2.
Дополнительный ссылки
Что такое алгоритм Шамир Wiki
Что такое HA протокол Raft — Wiki
https://www.vaultproject.io/docs/concepts/integrated-storage
https://www.vaultproject.io/docs/concepts/ha
Концепция распечатывания Vault https://www.vaultproject.io/docs/concepts/seal
Смена ключей хранилища опционально
Логика -https://www.vaultproject.io/docs/commands/operator/rekey)
Пример — https://learn.hashicorp.com/tutorials/vault/rekeying-and-rotating
Варианты использования Vault
— режим DEV, только для тестирование работы Vault — быстрый старт чтобы попробовать разработчику
— один узел запускаем для теста с полным циклом работы, для админа
— Прод, режим HA Cluster, для повышения отказоустойчивости в Vault есть режим высокой доступности доступный при свободной лицензии.