Prod-режим: init и unseal на практике
Поднимаем Vault «по-взрослому»: с конфигом, ручной инициализацией и распечатыванием.
Prod-режим — запуск Vault с явным конфигом storage и listener, требующий ручной инициализации и распечатывания перед работой.
В отличие от dev, здесь Vault стартует пустым и запечатанным. Это правильное состояние: вы сами контролируете, где хранятся данные и кто держит ключи.
Шаг 1. Конфиг и запуск
Создаём vault.hcl с хранилищем Raft и listener'ом:
storage "raft" {
path = "/opt/vault/data"
node_id = "vault-1"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_cert_file = "/etc/vault/tls/cert.pem"
tls_key_file = "/etc/vault/tls/key.pem"
}
api_addr = "https://vault-1.internal:8200"
cluster_addr = "https://vault-1.internal:8201"
ui = true
vault server -config=/etc/vault/vault.hcl
Шаг 2. Инициализация
Свежий Vault не инициализирован. Команда operator init создаёт мастер-ключ, разбивает его по схеме Шамира и выдаёт root-токен:
export VAULT_ADDR='https://vault-1.internal:8200'
vault operator init -key-shares=5 -key-threshold=3
Сохраните вывод — пять unseal-ключей и root-токен показываются единственный раз.
Шаг 3. Распечатывание
Сразу после init Vault запечатан. Вводим три части ключа:
vault operator unseal # часть 1
vault operator unseal # часть 2
vault operator unseal # часть 3
vault status # Sealed: false
Шаг 4. Первый вход
vault login # вставляем initial root token
Теперь Vault готов. Но прежде чем работать, опытный администратор создаёт обычные admin-учётки и отзывает initial root token — о чём в разделе про токены.
Как работает под капотом
Init — необратимая операция: Vault помечает себя как инициализированный в storage и больше не примет init. Если запустить второй узел кластера Raft, его не инициализируют заново — он присоединяется к существующему и наследует уже созданный мастер-ключ. Распечатывать при этом нужно каждый узел (или настроить авто-unseal).
Частые ошибки
- Потерять вывод init — без unseal-ключей запечатанный Vault не открыть, данные потеряны.
- Оставить initial root token активным надолго — это всемогущий доступ.
- Забыть, что каждый рестарт требует unseal — без авто-unseal сервис не поднимется сам.
- Запустить без TLS — секреты пойдут по сети открыто.
Итог
- Prod-Vault стартует пустым и запечатанным, с явным конфигом storage и listener.
operator initодин раз создаёт ключи и root-токен;operator unsealраспечатывает.- Initial root token используют для начальной настройки и затем отзывают.