Система HashiCorp Vault используется для безопасного хранения и управления конфиденциальными данными: токенами, паролями, API-ключами, SSL-сертификатами.
Для работы используется функция seal, при которой все содержимое зашифровывается с помощью симметричного ключа шифрования в vault-файл, а ключ удаляется из памяти.
Чтобы снова получить доступ к данным, нужно «распечатать» хранилище одним из способов: ввести требуемые ключевые доли вручную или воспользоваться автоматическим режимом Autounseal.
С помощью режима Autounseal vault-файл может восстанавливать ключи и автоматически «распечатываться». Ключ шифрования или токен, дающий к нему доступ, всегда хранится отдельно от самого vault‑файла, чтобы при перезапуске он не был утерян.
Чтобы «распечатать» vault-файл с помощью симметричного ключа шифрования Key Management:
При заполнении параметров API-ключа в поле Сервисы выберите Key Management.
Получите projectId вашего проекта.
Чтобы скопировать ID проекта:
В верхней панели меню раскройте список всех проектов.
В строке с проектом нажмите и выберите Скопировать ID проекта.
ID будет скопирован в буфер обмена.
Просмотреть и скопировать ID любого проекта можно также в разделе Администрирование, на вкладке Каталоги и проекты.
В конфигурационный vault.hcl добавьте информацию по Autounseal:
seal "transit" {address = "https://kms.api.cloud.ru"token = "j8eAMouA15uA0VHPZeicNWa7SL.i7uOAouA15uA0VHPYioaSQt4KN"key_name = "autounseal"mount_path = "496e40f7-cc4b-4fa4-b42a-8cd2c9360716/"tls_skip_verify = "true"disable_renewal = "true"}
Где:
address — адрес Key Management. Укажите https://kms.api.cloud.ru.
token — API-ключ, выпущенный в Cloud.ru для vault.
key_name — имя ключа, которое vault будет подставлять в URL.
Если ключ отсутствует, Key Management автоматически сгенерирует его и разместит в своем хранилище. Ключ будет доступен для операций, но изменять его не рекомендуется.
mount_path — projectId вашего проекта.
disable_renewal — параметр отключения ротации токена. Рекомендуется указать true.
При установленном значении false vault будет пытаться обновить токен. Эта операция не поддерживается, поэтому ротация не выполнится, а в логах vault появится сообщение об ошибке. Это шататная ситуация, никаких дополнительных действий предпринимать не нужно.
Запустите vault.
При запуске vault в Docker выполните команду инициализации Autonseal:
docker exec -e VAULT_ADDR=http://127.0.0.1:8200 vault vault operator init \-recovery-shares=5 \-recovery-threshold=3
При перезапуске vault считается успешно «распечатанным», когда в логах появятся следующие записи:
core: stored unseal keys are supported, attempting fetchcore: vault is unsealedcore: unsealed with stored keycore: post-unseal setup complete