Интеграция Grafana с Hashicorp Vault
Если вы управляете своими секретами с помощью Hashicorp Vault, вы можете использовать их для конфигурации и провижининга.
Note
Доступно в Grafana Enterprise.
Note
Если ваша Grafana настроена для высокой доступности, мы советуем не использовать динамические секреты для файлов провижининга. Каждый экземпляр Grafana отвечает за продление собственных аренд (leases). Ваши аренды источников данных могут истечь при остановке одного из серверов Grafana.
Конфигурация
Прежде чем использовать Vault, его нужно активировать, указав URL, метод аутентификации (сейчас поддерживается только token) и токен для вашего сервиса Vault. Grafana автоматически продлевает сервисный токен, если он продлеваемый и настроен с ограниченным сроком жизни.
Если вы используете короткоживущие аренды, вы также можете настроить, как часто и на какой срок Grafana должна продлевать аренду. Мы рекомендуем сохранять значения по умолчанию, если вы не столкнулись с проблемами.
[keystore.vault]
# Location of the Vault server
;url =
# Vault namespace if using Vault with multi-tenancy
;namespace =
# Method for authenticating towards Vault. Vault is inactive if this option is not set
# Possible values: token
;auth_method =
# Secret token to connect to Vault when auth_method is token
;token =
# Time between checking if there are any secrets which needs to be renewed.
;lease_renewal_interval = 5m
# Time until expiration for tokens which are renewed. Should have a value higher than lease_renewal_interval
;lease_renewal_expires_within = 15m
# New duration for renewed tokens. Vault may be configured to ignore this value and impose a stricter limit.
;lease_renewal_increment = 1h
Пример для vault server -dev:
[keystore.vault]
url = http://127.0.0.1:8200 # HTTP should only be used for local testing
auth_method = token
token = s.sAZLyI0r7sFLMPq6MWtoOhAN # replace with your key
Использование расширителя Vault
После настройки Vault необходимо указать в файлах конфигурации или провижининга, которые вы хотите
использовать с Vault. Конфигурация Vault — это расширение подстановки переменных конфигурации, использующее
синтаксис $__vault{<argument>}.
Аргумент Vault состоит из трёх частей, разделённых двоеточием:
- Первая часть задаёт, какой секретный движок следует использовать.
- Вторая часть задаёт, к какому секрету следует обратиться.
- Третья часть задаёт, какое поле этого секрета следует использовать.
Например, если вы поместите секрет Key/Value для администратора Grafana в secret/grafana/admin_defaults,
синтаксис доступа к его полю password будет таким: $__vault{kv:secret/grafana/admin_defaults:password}.
Секретные движки
Vault поддерживает множество секретных движков, представляющих разные способы хранения или генерации секретов по запросу авторизованного пользователя. Grafana поддерживает подмножество из них, наиболее вероятно релевантное для установки Grafana.
Key/Value
Grafana поддерживает движок хранения Vault K/V версии 2, который
используется для хранения и получения произвольных секретов под именем kv.
$__vault{kv:secret/grafana/smtp:username}
Базы данных
Секретные движки баз данных Vault — это семейство секретных движков с похожим синтаксисом, предоставляющих пользователю динамический доступ к базе данных. Их можно использовать как для настройки доступа Grafana к собственной базе данных, так и для провижининга источников данных.
$__vault{database:database/creds/grafana:username}
Примеры
Следующие примеры показывают, как настроить ваши файлы конфигурации или провижининга для получения значений конфигурации из Vault.
Конфигурация
Ниже приведён частичный пример использования Vault для настройки учётных данных электронной почты и базы данных в файле конфигурации Grafana. Дополнительные сведения см. в разделе Конфигурация.
[smtp]
enabled = true
host = $__vault{kv:secret/grafana/smtp:hostname}:587
user = $__vault{kv:secret/grafana/smtp:username}
password = $__vault{kv:secret/grafana/smtp:password}
[database]
type = mysql
host = mysqlhost:3306
name = grafana
user = $__vault{database:database/creds/grafana:username}
password = $__vault{database:database/creds/grafana:password}
Провижининг
Ниже приведён полный пример YAML-файла провижининга, настраивающего источник данных MySQL с использованием секретного движка баз данных Vault. Дополнительные сведения см. в разделе Провижининг.
provisioning/custom.yaml
apiVersion: 1
datasources:
- name: statistics
type: mysql
url: localhost:3306
database: stats
user: $__vault{database:database/creds/ro/stats:username}
secureJsonData:
password: $__vault{database:database/creds/ro/stats:password}