Установка Hashicorp Vault. Debian 12.

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

Nicko

Добавить комментарий