Установка Hashicorp Vault. Debian 12.
Установка из репозитория не проходит по причине блокировки региона РФ, поэтому «хитрым» способом скачиваю бинарник со страницы https://developer.hashicorp.com/vault/install
И производим ниже следующие действия.
Создаю каталог для размещения бинарника:
# mkdir -p /opt/hashicorp/vault
Файл vault из скачанного архива помещаю в в каталог /opt/hashicorp/vault .
Делаю его исполняемым:
# chmod +x /opt/hashicorp/vault/vault
Создаю отдельного системного пользователя и директории для данных и конфигурации:
# useradd --system --home /etc/vault.d --shell /bin/false vault # mkdir -p /etc/vault.d # mkdir -p /var/lib/vault/data # chown -R vault:vault /etc/vault.d # chown -R vault:vault /var/lib/vault/data
Файлы конфигурации будут храниться в /etc/vault.d , данные — в /var/lib/vault/data .
Создаю файл конфигурации:
# touch /etc/vault.d/vault.hcl
Задаю права на файл конфигурации:
# chown vault:vault /etc/vault.d/vault.hcl # chmod 640 /etc/vault.d/vault.hcl
В файл /etc/vault.d/vault.hcl помещаю следующее:
storage "file" {
path = "/var/lib/vault/data"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = 1 # Смените на 0 и настройте TLS в production!
}
api_addr = "http://127.0.0.1:8200"
cluster_addr = "https://127.0.0.1:8201"
ui = true
Создаю файл службы /etc/systemd/system/vault.service:
# touch /etc/systemd/system/vault.service
[Unit] Description="HashiCorp Vault - A tool for managing secrets" Documentation=https://vaultproject.io Requires=network-online.target After=network-online.target ConditionFileNotEmpty=/etc/vault.d/vault.hcl [Service] User=vault Group=vault ProtectSystem=full ProtectHome=read-only PrivateTmp=yes PrivateDevices=yes SecureBits=keep-caps AmbientCapabilities=CAP_IPC_LOCK Capabilities=CAP_IPC_LOCK+ep CapabilityBoundingSet=CAP_IPC_LOCK NoNewPrivileges=yes ExecStart=/opt/hashicorp/vault/vault server -config=/etc/vault.d/vault.hcl ExecReload=/bin/kill --signal HUP $MAINPID KillMode=process KillSignal=SIGINT Restart=on-failure RestartSec=5 TimeoutStopSec=30 StartLimitInterval=60 StartLimitBurst=3 LimitNOFILE=65536 LimitMEMLOCK=infinity [Install] WantedBy=multi-user.target
Vault использует вызов mlock для предотвращения сброса секретов из оперативной памяти на диск (в swap). Даю бинарнику Vault необходимые права:
# setcap cap_ipc_lock=+ep /usr/local/bin/vault
Запуск демона:
# systemctl daemon-reload # systemctl enable vault # systemctl start vault
Проверка статуса демона:
# systemctl status vault
После запуска службы Vault будет находиться в заблокированном состоянии (sealed). Для начала работы потребуется выполнить инициализацию. Один и тот же экземпляр нельзя инициализировать дважды, поэтому этот шаг выполняется строго один раз для каждого сервера:
# export VAULT_ADDR='http://127.0.0.1:8200' # vault operator init
Команда сгенерирует несколько строк — это мастер-ключ, который делится на несколько частей (Unseal Keys) по алгоритму Шамира, и один токен root-доступа. По умолчанию создаётся пять ключей, из которых нужны любые три для разблокировки. Ключи и токен требуется сохранить в надёжное место — они потребуются для последующей настройки.
Статус сервера Vault проверяется командой:
# vault status
На экран будет выведена подобная информация:
Key Value --- ----- Seal Type shamir Initialized true Sealed true Total Shares 5 Threshold 3 Unseal Progress 0/3 Unseal Nonce n/a Version 2.1.0 Build Date 2026-08-31T13:29:27Z Storage Type file HA Enabled false
Добавить комментарий