1 CyberArk 配置
本节介绍如何配置 Zabbix 以从 CyberArk Vault CV12 检索密钥。
应按照官方 CyberArk 文档 中的说明安装并配置 vault。
要了解如何在 Zabbix 中配置 TLS,请参见 密钥存储。
数据库凭据
对数据库凭据的 secret 的访问是为每个 Zabbix 组件分别配置的。
服务器和 proxy
要从 vault 中为 Zabbix server 或 proxy 获取数据库凭据,请在配置文件中指定以下配置参数:
Vault- 应使用的 vault 提供程序;VaultURL- vault 服务器 HTTP[S] URL;VaultDBPath- 指向包含数据库凭据的 vault secret 的查询,该凭据将通过键 "Content" 和 "UserName" 获取(仅当未指定 DBUser 和 DBPassword 时才能使用此选项);VaultTLSCertFile,VaultTLSKeyFile- SSL 证书和密钥文件名;配置这些选项不是必须的,但强烈建议设置;VaultPrefix- 根据 vault 的不同,为 vault 路径或查询指定自定义前缀;如果未指定,将使用最合适的默认值。
Vault、VaultURL、VaultTLSCertFile、VaultTLSKeyFile 和 VaultPrefix 配置参数也用于 Zabbix 服务器在处理 secret vault 宏时进行 vault 身份验证(如果已配置,Zabbix proxy 也会使用)。Zabbix 服务器和 proxy 不会打开包含来自 VaultDBPath 的数据库凭据的 vault secret 宏。
Zabbix 服务器和 Zabbix proxy 在启动时会从 zabbix_server.conf 和 zabbix_proxy.conf 文件中读取与 vault 相关的配置参数。
示例
- 在 zabbix_server.conf 中,指定以下参数:
Vault=CyberArk
VaultURL=https://127.0.0.1:1858
VaultDBPath=AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix_server_database
VaultTLSCertFile=cert.pem
VaultTLSKeyFile=key.pem
VaultPrefix=/AIMWebService/api/Accounts?
- Zabbix 将向保管库发送以下 API 请求:
curl \
--header "Content-Type: application/json" \
--cert cert.pem \
--key key.pem \
https://127.0.0.1:1858/AIMWebService/api/Accounts?AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix_server_database
- 保管库响应将包含键 "Content" 和 "UserName":
{
"Content": <password>,
"UserName": <username>,
"Address": <address>,
"Database": <Database>,
"PasswordChangeInProcess":<PasswordChangeInProcess>
}
- 因此,Zabbix 将使用以下凭据进行数据库身份验证:
- 用户名:<username>
- 密码:<password>
前端
为了从保险库获取Zabbix前端的数据库凭据,在前端安装期间,请指定以下参数。
- 在配置数据库连接步骤中,将存储凭据于参数设置为 "CyberArk Vault"。

- 然后,填写以下额外的参数:
| 参数 | 必填项 | 默认值 | 描述 |
|---|---|---|---|
| Vault API endpoint(保险库API端点) | 是 | https://localhost:1858 | 指定连接到保险库的URL,格式为 scheme://host:port |
| Vault prefix(保险库前缀) | 否 | /AIMWebService/api/Accounts? | 提供用于保险库路径或查询的自定义前缀。如果未指定,则使用默认值。 |
| Vault secret query string(保险库秘密查询字符串) | 是 | 指定从哪里检索数据库凭据的查询。 例如: AppID=foo&Query=Safe=bar;Object=buzz |
|
| Vault certificates(保险库证书) | 否 | 勾选此复选框后,将显示额外的参数,允许配置客户端认证。虽然此参数是可选的,但强烈建议在与CyberArk Vault通信时启用它。 | |
| SSL证书文件 | 否 | conf/certs/cyberark-cert.pem | SSL证书文件的路径。文件必须是PEM格式。 如果证书文件同时包含私钥,请将SSL密钥文件参数留空。 |
| SSL密钥文件 | 否 | conf/certs/cyberark-key.pem | 用于客户端认证的SSL私钥文件名称。文件必须是PEM格式。 |
这些参数将允许Zabbix前端从保险库获取数据库凭据。
用户宏值
要使用 CyberArk Vault 存储 Vault secret 用户宏值,请确保:
- Zabbix 服务器已配置为可与 CyberArk Vault 配合使用;
- 管理 → 常规 → 其他中的 Vault provider 参数已设置为“CyberArk Vault”。

Zabbix 服务器(以及 Zabbix proxy,如果已配置)需要能够从 vault 访问 Vault secret 宏值。 Zabbix 前端不需要此类访问。
宏值应包含一个查询(格式为 query:key)。
有关 Zabbix 如何处理宏值的详细信息,请参见 Vault secret macros。
查询语法
冒号符号(":")被保留用于分隔查询和键。
如果查询本身包含斜杠或冒号,这些符号应进行URL编码(斜杠"/"编码为"%2F",冒号":"编码为"%3A")。
示例
- 在 Zabbix 中,添加一个类型为 Vault secret 的用户宏 {$PASSWORD},其值为
AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content

- Zabbix 将向 vault 发送以下 API 请求:
curl \
--header "Content-Type: application/json" \
--cert cert.pem \
--key key.pem \
https://127.0.0.1:1858/AIMWebService/api/Accounts?AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix_server_database
- vault 的响应将包含键 "Content":
{
"Content": <password>,
"UserName": <username>,
"Address": <address>,
"Database" :<Database>,
"PasswordChangeInProcess":<PasswordChangeInProcess>
}
- 因此,Zabbix 会将宏 {$PASSWORD} 解析为值 - <password>
更新现有配置
要更新用于从 CyberArk Vault 检索密钥的现有配置:
-
按照 数据库凭据 部分中的说明,更新 Zabbix 服务器或 proxy 配置文件参数。
-
按照 前端 部分中的说明,重新配置 Zabbix 前端 并指定所需参数,以更新数据库连接设置。 要重新配置 Zabbix 前端,请在浏览器中打开前端设置 URL:
- 对于 Apache:http://<server_ip_or_name>/zabbix/setup.php
- 对于 Nginx:http://<server_ip_or_name>/setup.php
或者,也可以在前端配置文件(zabbix.conf.php)中设置这些参数:
$DB['VAULT'] = 'CyberArk';
$DB['VAULT_URL'] = 'https://127.0.0.1:1858';
$DB['VAULT_DB_PATH'] = 'AppID=foo&Query=Safe=bar;Object=buzz';
$DB['VAULT_TOKEN'] = '';
$DB['VAULT_CERT_FILE'] = 'conf/certs/cyberark-cert.pem';
$DB['VAULT_KEY_FILE'] = 'conf/certs/cyberark-key.pem';
$DB['VAULT_PREFIX'] = '';
- 如有必要,按照 用户宏值 部分中的说明配置用户宏。
要更新用于从 HashiCorp Vault 检索密钥的现有配置,请参见 HashiCorp 配置。