Перейти к основному содержимому

Установка HashiCorp Vault на Ubuntu

В этом руководстве описано, как установить и настроить HashiCorp Vault на сервере Ubuntu 24.04 LTS. Vault централизует управление секретами (ключи API, пароли, сертификаты TLS) безопасным образом.

Современные приложения зависят от секретов: ключи API, пароли БД, сертификаты TLS, ключи шифрования. Хранить их в коде или в открытом виде — риск. Vault обеспечивает безопасное хранение, динамическую выдачу учётных данных, шифрование как сервис и детальный контроль доступа.

Заказать сервер​

Для размещения экземпляра Vault HostMyServers предлагает несколько подходящих вариантов:

Предварительные требования​

  • SSH-доступ от root или пользователя с sudo
  • Система Ubuntu 24.04 LTS 64 бит
  • DNS-запись A, указывающая на IP сервера (для Let's Encrypt)
  • Доступны порты 8200 (HTTPS Vault) и 80 (Certbot, временно)

Требуемая конфигурация​

КомпонентМинимумРекомендуется
ОЗУ512 МБ1–2 ГБ
CPU1 ядро2 ядра
Хранилище5 ГБ10 ГБ
Сеть100 Мбит/с1 Гбит/с
Порт по умолчанию

Vault прослушивает порт 8200 по HTTPS. Веб-интерфейс и API используют этот порт.

Подключение к серверу​

Подключитесь по SSH к серверу Ubuntu (порт 22 по умолчанию или свой порт / PEM-ключ):

ssh пользователь@ip_адрес_сервера

Обновление системы​

Обновите список пакетов перед установкой Vault:

sudo apt update
sudo apt upgrade -y

Установка Vault из репозитория HashiCorp​

HashiCorp предоставляет официальный APT-репозиторий для установки последней стабильной версии Vault. Установите необходимые пакеты, добавьте GPG-ключ и репозиторий HashiCorp, затем выполните:

sudo apt update
sudo apt install -y vault

Проверка: vault --version. Опционально: vault -autocomplete-install и exec $SHELL.

Настройка брандмауэра​

Откройте порты 8200 и 80, перезагрузите UFW. Порт 80 нужен временно для Certbot.

Сертификаты TLS с Let's Encrypt​

Установите Certbot, получите сертификат для вашего домена (например, vault.ваш-домен.com), скопируйте fullchain.pem и privkey.pem в /opt/vault/tls/, назначьте владельца vault:vault и права 600. Создайте скрипт в /etc/letsencrypt/renewal-hooks/deploy/vault.sh для обновления сертификатов и перезагрузки Vault.

Замените домен

Замените vault.ваш-домен.com на ваш реальный домен во всех командах и файлах.

Конфигурация Vault для производства​

Сделайте резервную копию /etc/vault.d/vault.hcl, затем создайте конфигурацию с ui = true, storage "file" (path /opt/vault/data), listener "tcp" на 0.0.0.0:8200 с путями к cert.pem и key.pem, api_addr и cluster_addr с вашим доменом. Включите и перезапустите сервис: sudo systemctl enable vault, sudo systemctl restart vault.

Переменные окружения для CLI​

echo 'export VAULT_ADDR="https://vault.ваш-домен.com:8200"' >> ~/.bashrc
source ~/.bashrc

Проверка: vault status (до инициализации: Initialized: false, Sealed: true).

Инициализация и разгерметизация (unseal)​

Vault стартует в запечатанном состоянии. При инициализации создаются мастер-ключ, 5 ключей разгерметизации (нужны 3 из 5 по Shamir) и root token.

Сохраните ключи

Ключи разгерметизации и root token показываются один раз. Храните их в безопасных местах. Без них данные недоступны.

Выполните vault operator init, сохраните 5 ключей и Initial Root Token. Затем трижды выполните vault operator unseal, вставляя по одному ключу. После успеха: Sealed: false. Войдите: vault login (введите root token).

Доступ к веб-интерфейсу​

Откройте в браузере https://vault.ваш-домен.com:8200, выберите метод Token, введите root token.

Полезные команды​

КомандаОписание
vault statusСтатус Vault
vault operator unsealВвести ключ разгерметизации
vault loginВойти по токену
sudo systemctl status vaultСтатус сервиса
sudo systemctl restart vaultПерезапуск Vault

Структура файлов​

ПутьОписание
/etc/vault.d/vault.hclФайл конфигурации
/opt/vault/data/Данные Vault (зашифрованы)
/opt/vault/tls/Сертификат и ключ TLS

Устранение неполадок​

  • Сервис не стартует: проверьте логи journalctl -u vault.service, права на /opt/vault, синтаксис конфига.
  • Ошибка TLS: проверьте наличие и права на cert.pem и key.pem, тест certbot renew --dry-run.
  • Vault снова запечатан после перезагрузки: снова введите 3 ключа через vault operator unseal. Для автоматизации см. документацию Vault (auto-unseal).

Ссылки​