Установка и настройка Hashicorp Vault на Linux Ubuntu/Debian/CentOS Время чтения: 3 мин. 244 просмотров Vault — это система управления секретами от HashiCorp, предназначенная для безопасного хранения, выдачи и контроля доступа к чувствительным данным: паролям, токенам, сертификатам и ключам шифрования. Она помогает централизованно управлять секретами в инфраструктуре, обеспечивая их надёжную защиту и гибкую политику доступа. В этой статье мы рассмотрим установку Vault, его начальную настройку и подключение HTTPS для безопасного взаимодействия. Подготовительные работы Все команды выполняются под пользователем root. Установка зависимостей Обновляем списки пакетов: apt update Устанавливаем зависимости: apt install -y wget unzip net-tools apt-transport-https Настройка времени Для корректной работы Vault важно, чтобы на сервере были правильно настроены время и часовой пояс, проверите работает ли синхронизация времени через timedatectl или установите chrony. Настройка брандмауэра Для работы Vault требуются следующие порты:https – 8200/TCP;http – 8201/TCP. Установка Vault Vault разработан на языке Go, готовые бинарные пакеты доступны для популярных Unix- и Linux-дистрибутивов на официальном сайте. К сожалению из России доступ к пакетам заблокирован, поэтому установить Vault через репозитории не получится.Поэтому ставить Vault будем из заранее скомпилированного бинарного файла, сам файл будет скачивать с зеркала яндекса.Задаём переменную с версией Vault: VAULT_VERSION="1.19.3" Скачиваем архив с бинарником: wget https://hashicorp-releases.yandexcloud.net/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip Распаковываем архив: unzip vault_${VAULT_VERSION}_linux_amd64.zip Переносим распакованный файл в bin: mv vault /usr/local/bin/ Проверяем работоспособность: vault --version Должна быть версия которую скачивали, например: Vault v1.19.3 (a2de3bb7bcf4a073cbb8724863a5a88d3c2f83da), built 2025-04-29T10:34:52Z Настройка автодополнения Чтобы при нажатии TAB отображались доступные команды Vault, необходимо настроить автодополнение.Настраиваем автодополнения: vault -autocomplete-install complete -C /usr/local/bin/vault vault Создание конфигурационных файлов Создаём каталоги для работы Vault: mkdir /etc/vault.d mkdir -p /opt/vault/data mkdir -p /opt/vault/ssl Создаём конфигурационный файл: nano /etc/vault.d/config.hcl Вносим в конфигурационный файл следующие данные: # Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: BUSL-1.1 # Full configuration options can be found at https://developer.hashicorp.com/vault/docs/configuration ui = true #mlock = true #disable_mlock = true storage "file" { path = "/opt/vault/data" } #storage "consul" { # address = "127.0.0.1:8500" # path = "vault" #} # HTTP listener listener "tcp" { address = "0.0.0.0:8201" tls_disable = 1 } # HTTPS listener #listener "tcp" { # address = "0.0.0.0:8200" # tls_cert_file = "/opt/vault/ssl/tls.crt" # tls_key_file = "/opt/vault/ssl/tls.key" #} # Enterprise license_path # This will be required for enterprise as of v1.8 #license_path = "/etc/vault.d/vault.hclic" # Example AWS KMS auto unseal #seal "awskms" { # region = "us-east-1" # kms_key_id = "REPLACE-ME" #} # Example HSM auto unseal #seal "pkcs11" { # lib = "/usr/vault/lib/libCryptoki2_64.so" # slot = "0" # pin = "AAAA-BBBB-CCCC-DDDD" # key_label = "vault-hsm-key" # hmac_key_label = "vault-hsm-hmac-key" #} Создаём файл с переменными окружения: touch /etc/vault.d/vault.env Добавляем в файл с переменными адрес, по которому Vault будет доступен для API-запросов: echo "export VAULT_ADDR=http://127.0.0.1:8201" > /etc/vault.d/vault.env Подключаем переменные в окружение пользователя: source /etc/vault.d/vault.env Создание пользователя Создаём пользователя из под которого будет работать Vault: useradd --system --home /etc/vault --shell /bin/false vault Устанавливаем созданного пользователя владельцем каталогов: chown -R vault:vault /etc/vault /opt/vault Создание сервиса systemd Создаём файл сервиса: nano /etc/systemd/system/vault.service И вставляем следующее: [Unit] Description="HashiCorp Vault - A tool for managing secrets" Documentation=https://www.vaultproject.io/docs/ Requires=network-online.target After=network-online.target ConditionFileNotEmpty=/etc/vault.d/config.hcl [Service] User=vault Group=vault ProtectSystem=full ProtectHome=read-only PrivateTmp=yes PrivateDevices=yes SecureBits=keep-caps AmbientCapabilities=CAP_IPC_LOCK NoNewPrivileges=yes ExecStart=/usr/local/bin/vault server -config=/etc/vault.d/config.hcl ExecReload=/bin/kill --signal HUP KillMode=process KillSignal=SIGINT Restart=on-failure RestartSec=5 TimeoutStopSec=30 StartLimitBurst=3 LimitNOFILE=65536 [Install] WantedBy=multi-user.target Перезагружает конфигурацию systemd: systemctl daemon-reload Добавляем сервис в автозагрузку и запускаем: systemctl enable --now vault Проверяем состояние сервиса: systemctl status vault Проверяем состояние vault: vault status На этом установка Vault завершена, переходим к настройка. Настройка Vault Инициализация Выполняем инициализацию: vault operator init > /etc/vault.d/init.file При инициализации были сгенерированы Unseal Key и Initial Root Token, которые необходимы для разблокировки хранилища и аутентификации при каждой перезагрузке Vault.Выводим ключи: cat /etc/vault.d/init.file Открываем веб-интерфейс Vault по адресу: http//:IPSERVER:8201/uiи начинаем вводите Unseal Key, достаточно ввести 3 любых из 5 ключей: Авторизуемся с помощью Initial Root Token: После чего попадаем на главную страницу. В целях безопасности следует распределить Unseal Keys между несколькими доверенными участниками команды и удалить файл init.file Настройка SSL При установке Vault был использован протокол HTTP, что не соответствует требованиям безопасности. Настроим работу по HTTPS.Открываем файл config.hcl: nano /etc/vault.d/config.hcl Раскомментируем HTTPS конфигурацию: listener "tcp" { address = "0.0.0.0:8200" tls_cert_file = "/opt/vault/ssl/tls.crt" tls_key_file = "/opt/vault/ssl/tls.key" } И закомментируем HTTP конфигурацию: #listener "tcp" { # address = "0.0.0.0:8201" # tls_disable = 1 #} Открываем файл vault.env: nano /etc/vault.d/vault.env Меняем значение переменной VAULT_ADDR: export VAULT_ADDR=https://DNS_SERVER:8200 * где, DNS_SERVER — это DNS-имя вашего сервера, для которого был сгенерирован SSL-сертификат. Обновляем переменные окружения: source /etc/vault.d/vault.env Скопируйте сертификат и приватный ключ в директорию /opt/vault/ssl. Перезагружаем Vault: systemctl restart vault Теперь открываем веб-интерфейс по адресу https//:DNS_SERVER:8200 и заново вводим Unseal Key. Метки:CentOSLinuxUbuntuVault