1 CyberArk 配置
本节介绍如何配置 Zabbix 以从 CyberArk Vault CV12 检索密钥。
应按照官方 CyberArk 文档 中的说明安装并配置 vault。
要了解如何在 Zabbix 中配置 TLS,请参见 密钥存储。
数据库凭据
对包含数据库凭据的密钥的访问,需要为每个 Zabbix 组件分别进行配置。
服务器和 proxy
要为 Zabbix 服务器 或 proxy 从 vault 获取数据库凭据,请在配置文件中指定以下配置参数:
Vault- 应使用哪个 vault 提供程序;VaultURL- vault 服务器 HTTP[S] URL;VaultDBPath- 对包含数据库凭据的 vault 密钥的查询,将通过键 "Content" 和 "UserName" 获取这些凭据(仅当未指定 DBUser 和 DBPassword 时,才能使用此选项);VaultTLSCertFile、VaultTLSKeyFile- SSL 证书和密钥文件名;配置这些选项不是强制性的,但强烈建议这样做;VaultPrefix- vault 路径或查询的自定义前缀,具体取决于 vault;如果未指定,将使用最合适的默认值。
Vault、VaultURL、VaultTLSCertFile、VaultTLSKeyFile 和 VaultPrefix 配置参数在 Zabbix 服务器处理密钥 vault 宏时,也会用于 vault 身份验证(Zabbix proxy 也是如此,前提是已配置)。Zabbix 服务器和 proxy 不会打开包含来自 VaultDBPath 的数据库凭据的 vault 密钥宏。
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 配置。