Имеется возможность хранения некоторой конфиденциальной информации в HashiCorp Vault KV Secrets Engine - Версии 2. Секреты можно сохранять для:
Zabbix обеспечивает доступ только на чтение к секретам в Хранилище, предполагается, что секретами управляет кто-то другой.
В Хранилище можно скрытно хранить значения пользовательских макросов.
Значение пользовательского макроса «Секрет Хранилища» содержит ссылочный путь (в виде 'путь:ключ', например «secret/zabbix:password»).
Чтобы задать значение пути упомянутого в примере, можно использовать следующие команды:
# Включите точку монтирования "secret/", если она еще не включена, обратите внимание, что нужно использовать "kv-v2"
vault secrets enable -path=secret/ kv-v2
# Поместите новый секрет с ключом password в точку монтирования "secret/" и путь "secret/zabbix"
vault kv put secret/zabbix password=<пароль>
# Проверьте, что секрет успешно добавлен
vault kv get secret/zabbix
# Наконец, проверьте с помощью Curl, обратите внимание, что необходимо добавить вручную "data" после точки монтирования и "/v1" перед точкой монтирования, также смотрите параметр --capath
$ curl --header "X-Vault-Token: <ТокенХранилища>" https://127.0.0.1:8200/v1/secret/data/zabbix
Секретное значение извлекается сервером Zabbix при каждом обновлении данных конфигурации и хранится в кэше конфигурации. Токен аутентификации для доступа только на чтение к ссылочным путям должен быть указан в конфигурации сервера (параметр VaultToken). Если значение макроса не удаётся получить успешно, элемент данных, использующий это значение, станет неподдерживаемым.
Также можно инициировать обновление секретных значений из Хранилища при помощи опции командной строки 'secrets_reload'.
Zabbix прокси никогда не связывается с Хранилищем для получения каких-либо секретов, кроме учётных данных базы данных. Zabbix прокси получает секретные значения от Zabbix сервера при каждой синхронизации конфигурации и сохраняет их в кэше конфигурации так же, как и Zabbix сервер.
Это означает, что Zabbix прокси не может начать сбор данных после перезапуска, пока не получит первое обновление данных конфигурации от Zabbix сервера. Между Zabbix сервером и прокси должно быть включено шифрование; в противном случае в журнал вносится сообщение с предупреждением сервера.
Поддерживается секретное хранение в Хранилище учётных данных базы данных, используемых Zabbix сервером, прокси и веб-интерфейсом:
Учётные данные базы данных, полученные из Хранилища, будут внесены в кэш веб-интерфейса. Обратите внимание, что для кэширования учётных данных базы данных используется директория временных файлов файловой системы. Вы можете использовать определение ZBX_DATA_CACHE_TTL для контроля того, как часто кэш данных обновляется / аннулируется.
Можно использовать следующие команды, чтобы задать значения для пути, который упоминается в примере:
# Включите точку монтирования "secret/", если она еще не включена, обратите внимание, что необходимо использовать "kv-v2"
vault secrets enable -path=secret/ kv-v2
# Поместите новые секреты с ключами username и password в точку монтирования "secret/" и путь "secret/zabbix/database"
vault kv put secret/zabbix/database username=zabbix password=<пароль>
# Проверьте, что секрет успешно добавлен
vault kv get secret/zabbix/database
# Наконец, проверьте с помощью Curl, обратите внимание, что необходимо вручную добавить "data" после точки монтирования и «/v1» перед точкой монтирования, также смотрите параметр --capath
curl --header "X-Vault-Token: <ТокенХранилища>" https://127.0.0.1:8200/v1/secret/data/zabbix/database
Zabbix серверу / прокси добавлены новые параметры конфигурации для аутентификации Хранилища и получения учётных данных базы данных:
Zabbix сервер и Zabbix прокси читают параметры конфигурации, связанные с Vault, из zabbix_server.conf и zabbix_proxy.conf при запуске.
Zabbix сервер и Zabbix прокси дополнительно считывают переменную среды "VAULT_TOKEN" один раз во время запуска и удаляют её, чтобы она не была доступна через порождаемые (этими процессами) скрипты; это будет ошибкой, если оба параметра VaultToken и VAULT_TOKEN будут содержать значение.
Прямая косая черта и двоеточие являются зарезервированными символами. Прямую косую черту можно использовать только для отделения точки монтирования от пути (например, secret/zabbix где точка монтирования - "secret", а "zabbix" - путь) и, в случае макросов Хранилища, двоеточие можно использовать только для отделения пути от ключа. Возможно использовать URL-кодирование "/" и ":", если необходимо создать точку монтирования с именем, разделенным прямой косой чертой (например, foo/bar/zabbix где точка монтирования - "foo/bar" и путь - "zabbix", в виде "foo%2Fbar/zabbix") и если имя точки монтирования или путь должны содержать двоеточие.
Сертификат, подписанный центром сертификации (CA), нужно добавить в хранилище ЦС по умолчанию. В качестве альтернативы можно указать собственное расположение хранилища центров сертификации в параметре конфигурации SSLCALocation; обратите внимание, что в этом случае директория сертификатов должна быть подготовлена при помощи openssl утилиты c_rehash; например, настройте SSLCALocation и скопируйте "ca.pem" внутрь этой директории, а затем выполните следующую команду: