leafleafleafDocy banner shape 01Docy banner shape 02Man illustrationFlower illustration

Установка и настройка Hashicorp Vault на Linux Ubuntu/Debian/CentOS

Время чтения: 3 мин. 247 просмотров

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:

				
					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 ключей:

Ввод ключей разблокировки в процессе инициализации vault
Авторизуемся с помощью Initial Root Token:
Ввод root token в vault

После чего попадаем на главную страницу.

В целях безопасности следует распределить 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.

Leave a Comment

Поделиться этой страницей

Установка и настройка Hashicorp Vault на Linux Ubuntu/Debian/CentOS

Или скопируйте ссылку

СОДЕРЖИМОЕ