Auto Unseal в HashiCorp Vault
Сборка HashiCorp Vault
Даная сборка позволяет использовать Key Management Service в качестве доверенного сервиса для шифрования секретов. Реализуется это через механизм Auto Unseal
Из этого руководства вы узнаете как настроить механизм Auto Unseal для работы с KMS.
Чтобы настроить Auto Unseal:
Подготовьте облако к работе
-
Скачайте последнюю версию docker-образа, используйте команду:
docker pull cr.yandex/yc/vault
-
Выберите один из способов аутентификации запросов Vault к KMS. Аутентифицироваться можно через:
Сервисный аккаунт, привязанный к ВМПроизвольный сервисный аккаунтАккаунт на Яндексе или федеративный аккаунтДля аутентификации будет использоваться Yandex Identity and Access Management-токен, автоматически извлекаемый из метаданных ВМ. Подробнее об этом читайте в разделе Работа с Yandex Cloud изнутри виртуальной машины.
Совет
Этот вариант наиболее предпочтительный с точки зрения безопасности. При настройке с использованием сервисного аккаунта, привязанного к ВМ, указание учетных данных не требуется.
Для аутентификации будет использован авторизованный ключ. Подробнее о том, как работать с авторизованным ключом читайте в разделе Получить IAM-токен с помощью CLI.
Для аутентификации будет использован OAuth-токен или Identity and Access Management-токен.
Совет
Этот вариант самый нежелательный с точки зрения безопасности. Рекомендуется использовать только для тестирования.
-
Создайте отдельный Key Management Service-ключ для Vault (рекомендуется).
-
Предоставьте доступ к ключу только пользователю или сервисному аккаунту, который будет использоваться для аутентификации запросов Vault в KMS. Vault при взаимодействии с KMS выполняет только операции шифрования и расшифрования, поэтому роли
kms.keys.encrypterDecrypter
будет достаточно.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входят:
- плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud);
- плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud);
- плата за количество активных версий KMS-ключа и число выполненных криптографических операций (см. тарифы Yandex Virtual Private Cloud).
Настройте Auto Unseal
Для настройки Auto Unseal внесите изменения в конфигурационный файл
Важно
Если Vault уже проинициализирован, изменять конфигурацию необходимо в рамках процедуры миграции
-
В блоке seal
укажите значение"yandexcloudkms"
. -
Добавьте параметр
kms_key_id
с идентификатором KMS-ключа для шифрования. -
Аутентифицируйтесь одним из способов:
Сервисный аккаунт, привязанный к ВМПроизвольный сервисный аккаунтАккаунт на Яндексе или федеративный аккаунтПривяжите сервисный аккаунт к ВМ в соответствии с инструкцией.
В значении параметра
service_account_key_file
укажите путь к файлу с авторизованным ключом сервисного аккаунта.Если вы используете аккаунт на Яндекс, то в значении параметра
oauth_token
укажите OAuth-токен. Для федеративного аккаунта укажите IAM-токен. -
Измените конфигурацию в рамках процедуры миграции
, соответствующей используемой версии Vault.
Примечание
Для задания значений параметров вместо конфигурационного файла можно использовать переменные окружения:
- переменной
YANDEXCLOUD_KMS_KEY_ID
соответствует параметрkms_key_id
файла конфигурации; - переменной
YANDEXCLOUD_SERVICE_ACCOUNT_KEY_FILE
— параметрservice_account_key_file
; - переменной
YANDEXCLOUD_OAUTH_TOKEN
— параметрoauth_token
.
Значения из переменных окружения имеют приоритет над значениями из конфигурационного файла.
Примеры конфигурации
...
seal "yandexcloudkms" {
kms_key_id = "<идентификатор_KMS-ключа>"
}
...
...
seal "yandexcloudkms" {
kms_key_id = "<идентификатор_KMS-ключа>"
service_account_key_file = "<путь_к_JSON-файлу>"
}
...
Где service_account_key_file
— путь к JSON-файлу с авторизованным ключом.
...
seal "yandexcloudkms" {
kms_key_id = "<идентификатор_KMS-ключа>"
oauth_token = "<токен_пользователя>"
}
...
Ротация ключей
При шифровании master-ключа Vault KMS-ключом Vault дополнительно сохраняет версию ключа, которой он был зашифрован.
При расшифровании master-ключа Vault (при рестарте Vault) сохраненная версия KMS-ключа, на которой зашифрован master-ключ Vault, сравнивается с primary-версией KMS-ключа. Если версии различаются, происходит перешифрование master-ключа Vault новой primary-версией KMS-ключа.
Таким образом перешифрование master-ключа Vault можно осуществлять ротацией ключа в KMS. Ротация ключа в Key Management Service приведет к автоматическому перешифрованию master-ключа Vault во время следующего рестарта Vault.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
- удалите ВМ, если вы создавали ее для запуска Vault;
- удалите статический публичный IP-адрес, если вы его зарезервировали;
- удалите Key Management Service-ключ.