Облачная платформаEvolution

Управление конфиденциальными данными с помощью HashiCorp Vault


Система HashiCorp Vault используется для безопасного хранения и управления конфиденциальными данными: токенами, паролями, API-ключами, SSL-сертификатами.

Для работы используется функция seal, при которой все содержимое зашифровывается с помощью симметричного ключа шифрования в vault-файл, а ключ удаляется из памяти.

Чтобы снова получить доступ к данным, нужно «распечатать» хранилище одним из способов: ввести требуемые ключевые доли вручную или воспользоваться автоматическим режимом Autounseal.

Режим Autounseal

С помощью режима Autounseal vault-файл может восстанавливать ключи и автоматически «распечатываться». Ключ шифрования или токен, дающий к нему доступ, всегда хранится отдельно от самого vault‑файла, чтобы при перезапуске он не был утерян.

Чтобы «распечатать» vault-файл с помощью симметричного ключа шифрования Key Management:

  1. Выпустите API-ключ.

    При заполнении параметров API-ключа в поле Сервисы выберите Key Management.

  2. Получите projectId вашего проекта.

    Чтобы скопировать ID проекта:

    1. В верхней панели меню раскройте список всех проектов.

    2. В строке с проектом нажмите Кнопка с изображением трех вертикальных точек и выберите Скопировать ID проекта.

      ID будет скопирован в буфер обмена.

    Просмотреть и скопировать ID любого проекта можно также в разделе Администрирование, на вкладке Каталоги и проекты.

  3. В конфигурационный 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_pathprojectId вашего проекта.

    • disable_renewal — параметр отключения ротации токена. Рекомендуется указать true.

      Примечание

      При установленном значении false vault будет пытаться обновить токен. Эта операция не поддерживается, поэтому ротация не выполнится, а в логах vault появится сообщение об ошибке. Это шататная ситуация, никаких дополнительных действий предпринимать не нужно.

  4. Запустите 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 fetch
    core: vault is unsealed
    core: unsealed with stored key
    core: post-unseal setup complete