集成 Grafana 和 Hashicorp Vault
如果你使用 Hashicorp Vault 管理你的密钥,你可以将它们用于配置和配置供应。
注意
在 Grafana Enterprise 中可用。
注意
如果你已将 Grafana 设置为高可用性,则建议不要对配置文件使用动态密钥。每个 Grafana 实例负责续订自己的租约。当你的一个 Grafana 服务器关闭时,你的数据源租约可能会过期。
配置
在使用 Vault 之前,你需要通过提供 URL、身份验证方法(目前仅支持 token)以及你的 Vault 服务的 token 来激活它。如果服务 token 是可续订的且设置了有限的生命周期,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 的参数包含三个部分,用冒号分隔
- 第一部分指定应使用哪个 Secrets Engine。
- 第二部分指定应访问哪个 secret。
- 第三部分指定应使用该 secret 的哪个字段。
例如,如果你将 Grafana 管理员用户的 Key/Value secret 放置在 secret/grafana/admin_defaults 中,访问其 password 字段的语法将是 $__vault{kv:secret/grafana/admin_defaults:password}
。
Secrets Engine
Vault 支持许多 Secrets Engine,它们代表了授权用户请求时存储或生成 secrets 的不同方法。Grafana 支持其中的一部分,这些部分最可能与 Grafana 安装相关。
Key/Value
Grafana 支持 Vault 的 K/V version 2 存储引擎,用于存储和检索任意 secret,表示为 kv
。
$__vault{kv:secret/grafana/smtp:username}
数据库
Vault 数据库 Secrets Engine 是一个共享相似语法并授予用户动态访问数据库的 Secrets Engine 系列。你可以将其用于设置 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 示例,演示了如何使用 Vault 的数据库 Secrets Engine 设置 MySQL 数据源。有关更多信息,请参阅配置供应。
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}