Установка HashiCorp Vault с поддержкой Key Management Service
HashiCorp Vault — инструмент с открытым исходным кодом, который обеспечивает безопасное хранение и доступ к различным секретам (паролям, сертификатам, токенам).
Образ приложения содержит предустановленную сборку HashiCorp Vault, которая при помощи Yandex Key Management Service дополнительно поддерживает Auto Unseal. Сборка подготовлена на основе HashiCorp Vault соответствующей версии.
Чтобы установить HashiCorp Vault:
Создание сервисного аккаунта и ключей
Для работы HashiCorp Vault требуется:
- Сервисный аккаунт с ролью
kms.keys.encrypterDecrypter
. - Авторизованный ключ.
- Симметричный ключ шифрования.
-
yc iam service-account create --name vault-kms
-
Создайте авторизованный ключ для сервисного аккаунта и сохраните его в файл
authorized-key.json
:yc iam key create \ --service-account-name vault-kms \ --output authorized-key.json
-
Создайте симметричный ключ Key Management Service:
yc kms symmetric-key create \ --name example-key \ --default-algorithm aes-256 \ --rotation-period 24h
Сохраните идентификатор ключа (
id
) — он понадобится при установке приложения. -
Назначьте роль
kms.keys.encrypterDecrypter
ключу Key Management Service:yc resource-manager folder add-access-binding \ --id <идентификатор каталога> \ --service-account-name vault-kms \ --role kms.keys.encrypterDecrypter
Идентификатор каталога можно получить со списком каталогов.
Установка с помощью Yandex Cloud Marketplace
- Перейдите на страницу каталога и выберите сервис Managed Service for Kubernetes.
- Нажмите на имя нужного кластера и выберите вкладку Marketplace.
- В разделе Доступные для установки приложения выберите HashiCorp Vault с поддержкой Key Management Service и нажмите кнопку Использовать.
- Задайте настройки приложения:
- Пространство имен — выберите пространство имен или создайте новое.
- Название приложения — укажите название приложения.
- Ключ сервисной учетной записи для Vault — скопируйте в это поле содержимое файла
authorized-key.json
. - ID ключа KMS для Vault — укажите полученный ранее идентификатор ключа Key Management Service.
- Нажмите кнопку Установить.
Установка с помощью Helm-чарта
-
Установите менеджер пакетов Helm версии не ниже 3.7.0.
-
Для установки Helm-чарта с HashiCorp Vault выполните команду:
export HELM_EXPERIMENTAL_OCI=1 && \ cat authorized-key.json | helm registry login cr.yandex --username 'json_key' --password-stdin && \ helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/vault/chart/vault \ --version <версия Helm-чарта> \ --untar && \ helm install \ --namespace <пространство имен> \ --create-namespace \ --set-file yandexKmsAuthJson=authorized-key.json \ hashicorp ./vault/
Актуальную версию Helm-чарта можно посмотреть на странице приложения.
Эта команда также создаст новое пространство имен, необходимое для работы HashiCorp Vault.
Инициализация хранилища
После установки HashiCorp Vault необходимо инициализировать один из его серверов. Процесс инициализации генерирует учетные данные, необходимые для распечатывания (unseal) всех серверов хранилища.
Примечание
При инициализации выполнять операцию unseal
не нужно — образ приложения интегрирован с Key Management Service.
Подробнее см. на странице Auto Unseal и в документации HashiCorp Vault.
Чтобы инициализировать хранилище:
-
Убедитесь, что приложение перешло в состояние
Running
и имеет0/1
готовых подов:kubectl get pods --selector='app.kubernetes.io/name=vault'
Результат:
NAME READY STATUS RESTARTS AGE <имя пода vault> 0/1 Running 0 58s
-
Выполните инициализацию хранилища:
kubectl exec \ --stdin=true \ --tty=true <имя пода vault> \ -- vault operator init
Результат:
Recovery Key 1: ulbugw4IKttmCCPprF6JwmUCyx1YfieCQPQiI2S0VV9o Recovery Key 2: S0kcValC6qSfEI4WJBovSbJWZntBUwtTrtisSIcS3n0e Recovery Key 3: t44ZRqbzLZNzfChinZNzLCNnwvFN/R52vbDq/UueHPPg ... Recovery key initialized with 5 key shares and a key threshold of 3. Please securely distribute the key shares printed above.
-
Повторно запросите список подов приложения и убедитесь, что готов один под:
kubectl get pods --selector='app.kubernetes.io/name=vault'
Результат:
NAME READY STATUS RESTARTS AGE vault-yckms-k8s-0 1/1 Running 0 5m