CyberArk 配置

本节说明如何配置 Zabbix,以便从 CyberArk Vault CV12 检索密钥。

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

有关在 Zabbix 中配置 TLS 的信息,请参见 密钥存储

数据库凭据

对数据库凭据的 secret 的访问是为每个 Zabbix 组件分别配置的。

服务器和 proxy

要从 vault 中为 Zabbix serverproxy 获取数据库凭据,请在配置文件中指定以下配置参数:

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

VaultVaultURLVaultTLSCertFileVaultTLSKeyFileVaultPrefix 配置参数也用于 Zabbix 服务器在处理 secret vault 宏时进行 vault 身份验证(如果已配置,Zabbix proxy 也会使用)。Zabbix 服务器和 proxy 不会打开包含来自 VaultDBPath 的数据库凭据的 vault secret 宏。

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

示例
  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 将向 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" 和 "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 前端配置文件参数:

$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 配置