HashiCorp Vault с поддержкой Yandex KMS
HashiCorp Vault — инструмент с открытым исходным кодом, который обеспечивает безопасное хранение и доступ к различным секретам, таким как пароли, сертификаты, токены. Образ содержит предустановленную сборку HashiCorp Vault с дополнительной поддержкой Auto Unseal при помощи Yandex Key Management Service. Сборка подготовлена на основе HashiCorp Vault 1.21.4.
- Создайте сервисный аккаунт, необходимый для работы HashiCorp Vault:
yc iam service-account create --name vault-kms
- Создайте авторизованный ключ для сервисного аккаунта и сохраните его в файл
authorized-key.json:
yc iam key create \
--service-account-name vault-kms \
--output authorized-key.json
- Создайте ключ Yandex Key Management Service:
yc kms symmetric-key create \
--name example-key \
--default-algorithm aes-256 \
--rotation-period 24h
Сохраните идентификатор ключа (id) — он понадобится при установке приложения.
- Назначьте сервисному аккаунту роль
kms.keys.encrypterDecrypterна ключ Yandex Key Management Service:
yc kms symmetric-key add-access-binding \
--name example-key \
--service-account-name vault-kms \
--role kms.keys.encrypterDecrypter
- Задайте настройки приложения:
- Пространство имен — создайте новое пространство имен (например,
hashicorp-vault-space). Если вы оставите пространство имен по умолчанию, HashiCorp Vault может работать некорректно. - Название приложения — укажите название приложения.
- Ключ сервисного аккаунта — скопируйте в это поле содержимое файла
authorized-key.json. - Идентификатор ключа KMS — укажите полученный ранее идентификатор ключа Yandex Key Management Service.
-
Нажмите кнопку Установить.
-
Убедитесь, что приложение перешло в состояние
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 4: af4PRlm3VdXRzEHoDpYEnSgbwj4oc4zLCwkJG36cOUER
Recovery Key 5: rw9LXcyGEhoO4y4O5IA32IwiDS2t76zd52eiVqfpu+b6
Initial Root Token: s.4ddyD9kkIKVrslVBQBX1I5Pq
Success! Vault is initialized
Recovery key initialized with 5 key shares and a key threshold of 3. Please
securely distribute the key shares printed above.
При инициализации хранилища выполнять операцию unseal не нужно. Подробнее см. на странице Auto Unseal и в документации HashiCorp Vault.
- Повторно запросите список подов приложения и убедитесь, что готов один под:
kubectl get pods --selector='app.kubernetes.io/name=vault'
Ожидаемый результат выполнения команды:
NAME READY STATUS RESTARTS AGE
vault-yckms-k8s-0 1/1 Running 0 1h
Служба технической поддержки Yandex Cloud отвечает на запросы 24 часа в сутки, 7 дней в неделю. Доступные виды запросов и срок их обработки зависят от тарифного плана. Подключить платную поддержку можно в консоли управления. Подробнее о порядке оказания технической поддержки. Вы также можете воспользоваться помощью сообщества.
| Helm-чарт | Версия | Pull-команда | Документация |
|---|---|---|---|
| yandex-cloud/vault-yckms-k8s/charts/vault | 0.32.0-yckms | Открыть |
| Docker-образ | Версия | Pull-команда |
|---|---|---|
| yandex-cloud/vault-yckms-k8s/vault-k8s1782847025242901704277741014033486556250053195550 | 1.7.2 | |
| yandex-cloud/vault-yckms-k8s/vault1782847025242901704277741014033486556250053195550 | 1.21.4_yckms | |
| yandex-cloud/vault-yckms-k8s/vault1782847025242901704277741014033486556250053195550 | 1.21.4_yckms | |
| yandex-cloud/vault-yckms-k8s/vault-csi-provider1782847025242901704277741014033486556250053195550 | 1.7.0 |