2 Configuración de HashiCorp

Descripción general

Esta sección explica cómo configurar Zabbix para recuperar secretos desde HashiCorp Vault KV Secrets Engine - Versión 2.

El vault debe implementarse y configurarse como se describe en la documentación oficial de HashiCorp.

Para obtener información sobre cómo configurar TLS en Zabbix, consulte Almacenamiento de secretos.

Recuperación de credenciales de base de datos

Para recuperar correctamente un secreto con credenciales de base de datos, es necesario configurar ambos:

  • Zabbix server/proxy
  • Zabbix frontend
Server/proxy

Para configurar Zabbix server o proxy, 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 del vault (consulte el archivo de configuración de Zabbix server/proxy para obtener más detalles);
  • VaultURL - URL HTTP[S] del servidor vault;
  • VaultDBPath - ruta al secreto del vault que contiene las credenciales de base de datos (esta opción solo puede utilizarse si DBUser y DBPassword no están especificados); Zabbix server o proxy recuperará las credenciales mediante las claves "password" y "username";
  • VaultPrefix - prefijo personalizado para la ruta o consulta del vault, según el vault; si no se especifica, se utilizará el valor predeterminado más adecuado.

Zabbix server también utiliza los parámetros de configuración Vault, VaultToken, VaultURL y VaultPrefix para la autenticación con vault al procesar macros de secretos de vault.

Zabbix server y Zabbix proxy leen los parámetros de configuración relacionados con vault desde zabbix_server.conf y zabbix_proxy.conf al iniciarse. Además, Zabbix server y Zabbix proxy leerán la variable de entorno VAULT_TOKEN una sola vez durante el inicio y la eliminarán para que no esté disponible a través de scripts bifurcados; se considera un error si tanto VaultToken como VAULT_TOKEN contienen un valor.

Zabbix server o proxy admiten renovaciones automáticas de tokens de servicio y tokens de servicio periódicos. Si Zabbix detecta que un token es renovable, seguirá renovándolo automáticamente hasta que se alcance el TTL máximo del token o, en el caso de los tokens de servicio periódicos, indefinidamente.

Ejemplo

  1. En zabbix_server.conf, especifique los siguientes parámetros:
Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
  1. Ejecute los siguientes comandos CLI para crear el secreto requerido en el vault:
# 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 añadido correctamente.
vault kv get secret/zabbix/database

# Finalmente, pruebe con Curl; tenga en cuenta que "data" debe añadirse 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
  1. Como resultado, el servidor Zabbix recuperará las siguientes credenciales para la autenticación de la base de datos:
  • Usuario: zabbix
  • Contraseña: <password>
Frontend

El frontend de Zabbix puede configurarse para recuperar las credenciales de la base de datos desde el vault, ya sea durante la instalación del frontend o actualizando el archivo de configuración del frontend (zabbix.conf.php).

Si las credenciales del vault han cambiado desde la instalación anterior del frontend, vuelva a ejecutar la instalación del frontend o actualice zabbix.conf.php. Véase también: Actualización de la configuración existente.

Durante la instalación del frontend, los parámetros de configuración deben especificarse en el paso Configure DB Connection:

  • Establezca el parámetro Store credentials in en "HashiCorp Vault".
  • Especifique los parámetros de conexión:
Parámetro Obligatorio Valor predeterminado Descripción
Vault API endpoint yes https://localhost:8200 Especifique la URL para conectarse al vault en el formato scheme://host:port
Vault prefix no /v1/secret/data/ Proporcione un prefijo personalizado para la ruta o consulta del vault. Si no se especifica, se utiliza el valor predeterminado.
Ejemplo: /v1/secret/data/zabbix/
Vault secret path no Una ruta al secreto desde la que se recuperarán las credenciales de la base de datos mediante las claves "password" y "username".
Ejemplo: database
Vault authentication token no Proporcione un token de autenticación para acceso de solo lectura a la ruta del secreto.
Consulte la documentación de HashiCorp para obtener información sobre la creación de tokens y políticas de vault.

Recuperación de valores de macros de usuario

Para usar HashiCorp Vault para almacenar valores de macros de usuario de Vault secret, asegúrese de que:

Solo Zabbix server requiere acceso a los valores de macros de 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 path:key, por ejemplo, macros:password). El token de autenticación especificado durante la configuración de Zabbix server (mediante el parámetro VaultToken) debe proporcionar acceso de solo lectura a esta ruta.

Consulte Vault secret macros para obtener información detallada sobre el procesamiento de valores de macros por parte de Zabbix.

Sintaxis de ruta

Los símbolos barra diagonal ("/") y dos puntos (":") están reservados.

Una barra diagonal solo puede usarse para separar un punto de montaje de una ruta (por ejemplo, secret/zabbix donde el punto de montaje es "secret" y la ruta es "zabbix"). En el caso de las macros de Vault, los dos puntos solo pueden usarse 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 un nombre que esté separado por una barra diagonal (por ejemplo, foo/bar/zabbix, donde el punto de montaje es "foo/bar" y la ruta es "zabbix", puede codificarse como "foo%2Fbar/zabbix") y si un nombre de punto de montaje o ruta necesita contener dos puntos.

Ejemplo

  1. En Zabbix, agregue una macro de usuario {$PASSWORD} de tipo "Secreto de Vault" y con el valor macros:password

  1. Ejecute los siguientes comandos CLI para crear el secreto requerido en el vault:
# 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 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=<password>

# 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
  1. Como resultado, Zabbix resolverá la macro {$PASSWORD} al valor: <password>

Actualización de la configuración existente

Para actualizar una configuración existente para recuperar secretos de un HashiCorp Vault:

  1. 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.

  2. 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:

  • para Apache: http://<server_ip_or_name>/zabbix/setup.php
  • para Nginx: http://<server_ip_or_name>/setup.php

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/';
  1. Configure las macros de usuario como se describe en la sección Valores de macro de usuario, si es necesario.

Para actualizar una configuración existente para recuperar secretos de un CyberArk Vault, consulte Configuración de CyberArk.