Использование Vault#
Подключение Vault (внутренний и внешний)#
В проекте поддерживаются два сценария:
- Внутренний Vault: контейнер
orchestrator-vaultв текущем docker-compose. - Внешний Vault: отдельный Vault-сервер/кластер вне compose.
Ниже порядок одинаковый: сначала env, потом запуск, затем миграция/проверка.
Общие требования к .env#
Минимум должны быть заданы:
VAULT_ADDR=http://<vault-host>:8200
VAULT_TOKEN=<token-с-правами-на-kv>
ORCHESTRATOR_ENCRYPTION_KEY=<ваш-ключ-шифрования>
Требования:
VAULT_ADDR- должен быть доступен из контейнераorchestrator.VAULT_TOKEN- токен с правамиcreate/read/update/delete/listдляkv/*.ORCHESTRATOR_ENCRYPTION_KEY- обязателен для rollback/шифрования.- В Vault должен быть mount
kv/как KV v2.
Вариант 1: внутренний Vault (через docker compose profile)#
1. Настройте .env#
VAULT_ADDR=http://orchestrator-vault:8200
VAULT_TOKEN=root-token
ORCHESTRATOR_ENCRYPTION_KEY=change_me
2. Запустите сервисы с профилем vault#
# MariaDB + Vault
docker compose --profile mariadb --profile vault up -d
# или PostgreSQL + Vault
docker compose --profile pg --profile vault up -d
3. Инициализируйте и распечатайте (unseal) Vault#
docker compose exec orchestrator-vault sh
# внутри контейнера
vault operator init
vault operator unseal
exit
Если kv/ не появился, включите вручную как KV v2:
docker compose exec orchestrator-vault sh
# внутри контейнера
export VAULT_TOKEN='ваш-root-token'
vault secrets list -detailed
vault secrets enable -path=kv -version=2 kv
vault secrets list -detailed
exit
4. Перезапустите backend#
docker compose restart orchestrator
Вариант 2: внешний Vault (отдельный сервер/кластер)#
1. Настройте .env#
VAULT_ADDR=https://vault.company.local:8200
VAULT_TOKEN=s.xxxxxxxx
ORCHESTRATOR_ENCRYPTION_KEY=change_me
2. Подготовьте внешний Vault (один раз)#
Vault должен быть initialized и unsealed.
Проверка/включение kv/ как KV v2:
export VAULT_ADDR='https://vault.company.local:8200'
export VAULT_TOKEN='s.xxxxxxxx'
vault secrets list -detailed
vault secrets enable -path=kv -version=2 kv
vault secrets list -detailed
3. Запустите/перезапустите Orchestrator#
# выберите нужную конфигурацию
make copy_local_compose
# запуск
make up
# если orchestrator уже запущен и изменили только .env
docker compose restart orchestrator
Миграция и проверка (для обоих вариантов)#
1. Проверьте логи Orchestrator#
docker compose logs -f orchestrator
Не должно быть ошибок:
Vault is not availableVAULT_TOKEN environment variable is required
2. Миграция секретов в Vault#
docker compose exec orchestrator php backend/bin/vault-migrate.php
Ожидаемо:
- в БД пароли заменяются на
VAULT_MIGRATED; - секреты пишутся в Vault по пути
kv/orchestrator/....
3. Rollback из Vault в БД (опционально)#
# Вариант 1: напрямую
docker compose exec orchestrator php backend/bin/vault-rollback.php
# Вариант 2: через Makefile
make vault-rollback
Rollback возвращает значения из Vault в БД и шифрует их через ORCHESTRATOR_ENCRYPTION_KEY.
Частые проблемы#
| Проблема | Причина | Что сделать |
|---|---|---|
Vault is not available |
контейнер orchestrator не может достучаться до VAULT_ADDR |
проверьте DNS/маршрутизацию/порт 8200 из сети Docker |
VAULT_TOKEN environment variable is required |
не задан VAULT_TOKEN в .env |
заполните VAULT_TOKEN и перезапустите orchestrator |
| Ошибки 403 от Vault | токен без нужных policy | выдайте policy с правами на kv/* |
| Ошибки при чтении/записи секретов | kv/ включен как v1 |
переключите mount kv/ на KV v2 |