可以将一些敏感信息安全地存储在HashiCorp Vault KV Secrets Engine - 版本2中。可以保存以下内容的密钥:
Zabbix提供对Vault中密钥的只读访问,假设密钥由其他人管理。
可以将用户宏值秘密存储在Vault中.
用户宏的"配置" 值包含一个引用路径(格式为'path:key',例如"secret/zabbix:password").
可以使用以下命令为示例中提到的路径设置值:
# Enable "secret/" mount point if not already enabled, note that "kv-v2" must be used
vault secrets enable -path=secret/ kv-v2
# 在挂载点"secret/"和路径"secret/zabbix"下添加带有password键的新密钥
vault kv put secret/zabbix password=<password>
# 测试密钥是否成功添加
vault kv get secret/zabbix
# 最后使用Curl测试,注意"data"需要在挂载点后手动添加,且在挂载点前添加"/v1",另请参阅--capath参数
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix
密钥值会在每次配置数据刷新时由Zabbix server获取,并存储在configuration cache中. 必须先在服务器配置('VaultToken'参数)中提供对引用路径的只读访问认证令牌. 如果无法成功获取宏值,使用该值的相应监控项将变为不支持状态.
也可以使用'secrets_reload'命令行 运行时控制 来触发从Vault刷新密钥值.
Zabbix proxy永远不会与Vault通信以get除数据库凭据外的任何密钥. Zabbix proxy上的密钥值会在每次配置同步时从Zabbix server获取,并以与Zabbix server相同的方式存储在配置缓存中.
这意味着Zabbix proxy在重启后无法开始数据收集,直到它首次从Zabbix server接收update的配置数据. 必须在Zabbix server和proxy之间启用加密;否则服务器会记录警告消息.
支持将Zabbix server、proxies及前端使用的数据库凭证安全存储在Vault中:
用于获取数据库凭证的Vault相关参数可配置
optionally entered in the frontend installation wizard.
从Vault获取的数据库凭证将由前端进行缓存。需注意前端使用文件系统临时file目录作为数据库凭证缓存位置。可通过ZBX_DATA_CACHE_TTLconstant参数控制数据缓存的刷新/失效频率。
对于server/proxy可使用VaultDBPath配置参数
to specify the path from where credentials for database will be retrieved by keys 'password' and 'username' (for example: secret/zabbix/database).
以下命令可用于设置示例中提及路径的对应值:
# Enable "secret/" mount point if not already enabled, note that "kv-v2" must be used
vault secrets enable -path=secret/ kv-v2
# 在挂载点"secret/"和路径"secret/zabbix/database"下新增包含username和password键的密钥
vault kv put secret/zabbix/database username=zabbix password=<password>
# 测试密钥是否成功添加
vault kv get secret/zabbix/database
# 最后使用Curl测试,注意需在挂载点后手动添加"data"并在挂载点前添加"/v1",另见--capath参数
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database
针对Zabbix server/proxy新增了以下Vault认证及数据库凭据获取的配置参数:
VaultURL - Vault服务器的HTTP[S]地址
VaultDBPath - 用于获取数据库凭据的Vault路径
retrieved by keys 'password' and 'username' (for example: secret/zabbix/database)
Zabbix server和Zabbix proxy在启动时会从zabbix_server.conf和zabbix_proxy.conf读取Vault相关配置参数。
Zabbix server和Zabbix proxy在启动时会额外读取一次"VAULT_TOKEN"环境变量并立即清除该变量,以防止其通过fork脚本泄露;若同时设置了VaultToken和VAULT_TOKEN将会报错。
斜杠(/)和冒号(:)是保留字符。斜杠仅可用于分隔挂载点与路径(例如secret/zabbix中"secret"是挂载点,"zabbix"是路径);在Vault宏中,冒号仅可用于分隔路径与键名。如需create包含斜杠的挂载点名称(例如foo/bar/zabbix中挂载点为"foo/bar",路径为"zabbix",应表示为"foo%2Fbar/zabbix"),或当挂载点名称/路径需要包含冒号时,可对"/"和":"进行URL编码。
由证书颁发机构(CA)签发的证书应添加到默认CA存储中。或者,可以使用SSLCALocation配置参数指定自定义CA存储位置;请注意,在这种情况下,必须使用openssl c_rehash工具准备证书目录,例如在该目录中配置SSLCALocation和copy "ca.pem"文件,然后run以下命令:
c_rehash .