Skip to main content

Установка 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).

Ссылки