Esta sección explica cómo configurar Zabbix para recuperar secretos de HashiCorp Vault KV Secrets Engine - Versión 2.
La bóveda debe implementarse y configurarse como se describe en la [documentación de HashiCorp] oficial (https://www.vaultproject.io/docs/secrets/kv/kv-v2).
Para obtener información sobre cómo configurar TLS en Zabbix, consulte Almacenamiento de secretos.
Para recuperar correctamente un secreto con credenciales de base de datos, es necesario configurar ambos:
Para configurar el servidor o proxy de Zabbix, especifique los siguientes parámetros de configuración en el archivo de configuración:
Vault
: qué proveedor de vault debe utilizarse;VaultToken
: token de autenticación de vault (consulte el archivo de configuración del servidor/proxy de Zabbix para más detalles);VaultURL
: URL HTTP[S] del servidor de vault;VaultDBPath
: ruta al secreto de vault que contiene las credenciales de la base de datos (esta opción solo puede usarse si no se especifican DBUser y DBPassword); el servidor o proxy de Zabbix recuperará las credenciales mediante las claves "password" y "username";VaultPrefix
: prefijo personalizado para la ruta o consulta de vault, dependiendo del vault; si no se especifica, se utilizará el valor predeterminado más adecuado.El servidor de Zabbix también utiliza los parámetros de configuración Vault
, VaultToken
, VaultURL
y VaultPrefix
para la autenticación de vault al procesar macros de secretos de vault.
El servidor y el proxy de Zabbix leen los parámetros de configuración relacionados con vault de zabbix_server.conf y zabbix_proxy.conf al iniciar. Además, el servidor y el proxy de Zabbix leerán la variable de entorno VAULT_TOKEN
una vez durante el inicio y la eliminarán para que no esté disponible a través de scripts bifurcados; es un error si ambos parámetros VaultToken
y VAULT_TOKEN
contienen un valor.
El servidor o proxy de Zabbix admite la renovación automática de tokens de servicio y tokens de servicio periódicos. Si Zabbix detecta que un token es renovable, continuará renovándolo automáticamente hasta que se alcance el TTL máximo del token o, en el caso de tokens de servicio periódicos, indefinidamente.
Ejemplo
Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
# Habilite el punto de montaje "secret/" si aún no está habilitado; tenga en cuenta que se debe usar "kv-v2".
vault secrets enable -path=secret/ kv-v2
# Ingrese nuevos secretos con las claves username y password bajo el punto de montaje "secret/" y la ruta "zabbix/database".
vault kv put -mount=secret zabbix/database username=zabbix password=<password>
# Pruebe que el secreto se haya agregado correctamente.
vault kv get secret/zabbix/database
# Finalmente, pruebe con Curl; tenga en cuenta que "data" debe agregarse manualmente después del punto de montaje y "/v1" antes del punto de montaje, también vea el parámetro --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database
La interfaz web de Zabbix se puede configurar para recuperar las credenciales de la base de datos desde el vault ya sea durante la instalación de la interfaz web o actualizando el archivo de configuración de la interfaz web (zabbix.conf.php
).
Si las credenciales del vault han cambiado desde la instalación anterior de la interfaz web, vuelva a ejecutar la instalación de la interfaz web o actualice zabbix.conf.php
. Consulte también: Actualizar la configuración existente.
Durante la instalación de la interfaz web los parámetros de configuración deben especificarse en el paso Configurar conexión a la BD:
Parámetro | Obligatorio | Valor por defecto | Descripción |
---|---|---|---|
Punto final de la API de Vault | sí | https://localhost:8200 | Especifique la URL para conectarse al vault en el formato esquema://host:puerto |
Prefijo de Vault | no | /v1/secret/data/ | Proporcione un prefijo personalizado para la ruta o consulta del vault. Si no se especifica, se utiliza el valor por defecto. Ejemplo: /v1/secret/data/zabbix/ |
Ruta secreta de Vault | no | Una ruta al secreto desde donde se recuperarán las credenciales para la base de datos mediante las claves "password" y "username". Ejemplo: database |
|
Token de autenticación de Vault | no | Proporcione un token de autenticación para acceso de solo lectura a la ruta secreta. Consulte la documentación de HashiCorp para obtener información sobre la creación de tokens y políticas de vault. |
Para utilizar HashiCorp Vault para almacenar valores de macros de usuario Vault secret, asegúrese de que:
Solo el servidor Zabbix requiere acceso a los valores de macro Vault secret desde el vault. Otros componentes de Zabbix (proxy, frontend) no necesitan dicho acceso.
El valor de la macro debe contener una ruta de referencia (como ruta:clave
, por ejemplo, macros:password
). El token de autenticación especificado durante la configuración del servidor Zabbix (mediante el parámetro VaultToken
) debe proporcionar acceso de solo lectura a esta ruta.
Consulte Macros de secreto de Vault para obtener información detallada sobre el procesamiento de valores de macros por parte de Zabbix.
Sintaxis de ruta
Los símbolos de barra diagonal ("/") y dos puntos (":") están reservados.
Una barra diagonal solo se puede utilizar para separar un punto de montaje de una ruta (por ejemplo, secret/zabbix donde el punto de montaje es "secreto" y la ruta es "zabbix"). En el caso de las macros de Vault, los dos puntos solo se pueden utilizar para separar una ruta/consulta de una clave.
Es posible codificar en URL los símbolos de barra diagonal y dos puntos si es necesario crear un punto de montaje con el nombre separado por una barra diagonal (por ejemplo, foo/bar/zabbix, donde el punto de montaje es " foo/bar" y la ruta es "zabbix", se puede codificar como "foo%2Fbar/zabbix") y si el nombre del punto de montaje o la ruta deben contener dos puntos.
Ejemplo
macros:password
# Habilite el punto de montaje "secret/" si aún no está habilitado; tenga en cuenta que se debe usar "kv-v2".
vault secrets enable -path=secret/ kv-v2
# Coloque un nuevo secreto con la clave "password" bajo el punto de montaje "secret/" y la ruta "zabbix/macros".
vault kv put -mount=secret zabbix/macros password=<contraseña>
# Pruebe que el secreto se haya agregado correctamente.
vault kv get secret/zabbix/macros
# Finalmente, pruebe con Curl; tenga en cuenta que "data" debe agregarse manualmente después del punto de montaje y "/v1" antes del punto de montaje, también vea el parámetro --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/macros
Para actualizar una configuración existente para recuperar secretos de un HashiCorp Vault:
Actualice los parámetros del archivo de configuración del servidor o proxy de Zabbix como se describe en la sección Credenciales de base de datos.
Actualice la configuración de conexión a la base de datos reconfigurando el frontend de Zabbix y especificando los parámetros requeridos como se describe en la sección Frontend. Para reconfigurar el frontend de Zabbix, abra la URL de configuración del frontend en el navegador:
Alternativamente, estos parámetros pueden establecerse en el archivo de configuración del frontend (zabbix.conf.php):
$DB['VAULT'] = 'HashiCorp';
$DB['VAULT_URL'] = 'https://localhost:8200';
$DB['VAULT_DB_PATH'] = 'database';
$DB['VAULT_TOKEN'] = '<mytoken>';
$DB['VAULT_CERT_FILE'] = '';
$DB['VAULT_KEY_FILE'] = '';
$DB['VAULT_PREFIX'] = '/v1/secret/data/zabbix/';
Para actualizar una configuración existente para recuperar secretos de un CyberArk Vault, consulte Configuración de CyberArk.