1 CyberArk 配置

本节介绍如何配置 Zabbix 以从 CyberArk Vault CV12 检索密钥。

应按照官方 CyberArk 文档 中的说明安装并配置 vault。

要了解如何在 Zabbix 中配置 TLS,请参见 密钥存储。

数据库凭据

需要为每个 Zabbix 组件分别配置对包含数据库凭据的机密信息的访问权限。

服务器和 proxy

要从保管库中获取 Zabbix 服务器或 proxy 的数据库凭据,请在配置文件中指定以下配置参数:

  • Vault - 应使用哪个保管库提供程序;
  • VaultURL - 保管库服务器的 HTTP(S) URL;
  • VaultDBPath - 包含数据库凭据的保管库机密信息的查询路径,系统将通过键 "Content" 和 "UserName" 获取凭据(仅当未指定 DBUser 和 DBPassword 时,才能使用此选项);
  • VaultTLSCertFile、VaultTLSKeyFile - SSL 证书和密钥文件名;设置这些选项不是强制性的,但强烈建议设置;
  • VaultPrefix - 根据保管库的不同,为保管库路径或查询指定自定义前缀;如果未指定,将使用最合适的默认值。

Vault、VaultURL、VaultTLSCertFile、VaultTLSKeyFile 和 VaultPrefix 配置参数还用于 Zabbix 服务器处理机密保管库宏时的保管库身份验证(如果已配置,Zabbix proxy 也会使用这些参数)。Zabbix 服务器和 proxy 不会展开包含来自 VaultDBPath 的数据库凭据的机密保管库宏。

Zabbix 服务器和 Zabbix proxy 会在启动时从 zabbix_server.conf 和 zabbix_proxy.conf 文件中读取与保管库相关的配置参数。

示例
  1. 在 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?
  1. 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
  1. 保管库响应将包含键 "Content" 和 "UserName":
{
    "Content": <password>,
    "UserName": <username>,
    "Address": <address>,
    "Database": <Database>,
    "PasswordChangeInProcess":<PasswordChangeInProcess>
}
  1. 因此,Zabbix 将使用以下凭据进行数据库身份验证:
  • 用户名:<username>
  • 密码:<password>

前端

要从 vault 获取 Zabbix 前端的数据库凭据,请在前端安装期间指定以下参数。

  1. 在配置数据库连接步骤中,将凭据存储于参数设置为“CyberArk Vault”。

  1. 然后,填写其他参数:
参数 必填 默认值 描述
Vault API 端点 是 https://localhost:1858 指定用于连接 vault 的 URL,格式为 scheme://host:port
Vault 前缀 否 /AIMWebService/api/Accounts? 为 vault 路径或查询提供自定义前缀。如果未指定,则使用默认值。
Vault 密钥查询字符串 是 指定应从何处检索数据库凭据的查询。
示例:AppID=foo&Query=Safe=bar;Object=buzz
Vault 证书 否 选中复选框后,将显示其他参数,可用于配置客户端身份验证。虽然此参数是可选的,但强烈建议启用它,以便与 CyberArk Vault 通信。
SSL 证书文件 否 conf/certs/cyberark-cert.pem SSL 证书文件的路径。文件必须采用 PEM 格式。
如果证书文件还包含私钥,请将 SSL 密钥文件参数留空。
SSL 密钥文件 否 conf/certs/cyberark-key.pem 用于客户端身份验证的 SSL 私钥文件名称。文件必须采用 PEM 格式。

用户宏值

要使用 CyberArk Vault 存储 Vault secret 用户宏值,请确保:

Zabbix 服务器(以及 Zabbix proxy,如果已配置)需要能够从 vault 访问 Vault secret 宏值。 Zabbix 前端不需要此类访问。

宏值应包含一个查询(格式为 query:key)。

有关 Zabbix 如何处理宏值的详细信息,请参见 Vault secret macros。

查询语法

冒号符号(":")被保留用于分隔查询和键。

如果查询本身包含斜杠或冒号,这些符号应进行URL编码(斜杠"/"编码为"%2F",冒号":"编码为"%3A")。

示例

  1. 在 Zabbix 中,添加一个类型为 Vault secret 的用户宏 {$PASSWORD},其值为 AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content

  1. 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
  1. vault 的响应将包含键 "Content":
{
    "Content": <password>,
    "UserName": <username>,
    "Address": <address>,
    "Database" :<Database>,
    "PasswordChangeInProcess":<PasswordChangeInProcess>
}
  1. 因此,Zabbix 会将宏 {$PASSWORD} 解析为值 - <password>

更新现有配置

要更新用于从 CyberArk Vault 检索密钥的现有配置:

  1. 按照 数据库凭据 部分中的说明,更新 Zabbix 服务器或 proxy 配置文件参数。

  2. 按照 前端 部分中的说明,重新配置 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']             = '';
  1. 如有必要,按照 用户宏值 部分中的说明配置用户宏。

要更新用于从 HashiCorp Vault 检索密钥的现有配置,请参见 HashiCorp 配置。