2 Configuración de HashiCorp

Descripción general

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.

Recuperación de credenciales de la base de datos

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

  • Servidor/proxy Zabbix
  • Interfaz de usuario Zabbix
Servidor/proxy

Para configurar el servidor o proxy Zabbix, especifique los siguientes parámetros de configuración en el archivo de configuración:

  • Vault - qué proveedor de bóveda se debe utilizar;
  • VaultToken - token de autenticación de bóveda (consulte el archivo de configuración del servidor/proxy Zabbix para obtener más detalles);
  • VaultURL - URL HTTP[S] del servidor de bóveda;
  • VaultDBPath - ruta al secreto de bóveda que contiene las credenciales de la base de datos; El servidor o proxy Zabbix recuperará las credenciales mediante las claves "contraseña" y "nombre de usuario";
  • VaultPrefix - prefijo personalizado para la ruta o consulta de la bóveda, según la bóveda; si no se especifica, se utilizará el valor predeterminado más adecuado.

El servidor Zabbix también utiliza los parámetros de configuración Vault, VaultToken, VaultURL y VaultPrefix para la autenticación de la bóveda al procesar macros de secretos de la bóveda.

El servidor Zabbix y el proxy Zabbix leen los parámetros de configuración relacionados con la bóveda desde zabbix_server.conf y zabbix_proxy.conf al iniciarse. Además, el servidor Zabbix y el proxy Zabbix leerán la variable de entorno VAULT_TOKEN una vez durante el inicio y la anularán para que no esté disponible a través de scripts bifurcados; es un error si los parámetros VaultToken y VAULT_TOKEN contienen un valor.

:::noteclassic El servidor Zabbix o el 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 tokens de servicio periódico, de manera indefinida. ::

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 almacén:
# Habilite el punto de montaje "secret/" si aún no está habilitado; tenga en cuenta que se debe utilizar "kv-v2".
       vault secrets enable -path=secret/ kv-v2
       
       # Coloque los nuevos secretos con las claves nombre de usuario y contraseña en 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 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; consulte también 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:
  • Username: zabbix
  • Password: <password>
Interfaz de usuario

La interfaz de usuario de Zabbix se puede configurar para recuperar las credenciales de la base de datos del almacén ya sea durante la instalación de la interfaz de usuario o actualizando el archivo de configuración de la interfaz de usuario (zabbix.conf.php).

Si las credenciales del almacén se han modificado desde la instalación anterior de la interfaz de usuario, vuelva a ejecutar la instalación de la interfaz de usuario o actualice zabbix.conf.php. Consulte también: Actualización de la configuración existente.

Durante la instalación de la interfaz de usuario, los parámetros de configuración se deben especificar en el paso Configurar conexión a la base de datos:

  • Establezca el parámetro Almacenar credenciales en en "Bóveda de HashiCorp".
  • Especifique los parámetros de conexión:
Parámetro Obligatorio Valor predeterminado Descripción
Punto final de la API de la bóveda https://localhost:8200 Especifique la URL para conectarse al almacén en el formato scheme://host:port
Prefijo de almacén no /v1/secret/data/zabbix/ Proporcione un prefijo personalizado para la ruta o consulta del almacén. Si no se especifica, se utiliza el valor predeterminado.
Ruta del secreto de la bóveda no Una ruta al secreto desde donde se recuperarán las credenciales para la base de datos mediante las claves "contraseña" y "nombre de usuario".
Ejemplo: database
Token de autenticación de la bóveda 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 la bóveda.

Recuperación de valores de macro de usuario

Para usar HashiCorp Vault para almacenar valores de macro de usuario secretos de Vault, asegúrese de que:

Solo el servidor Zabbix requiere acceso a los valores de macro secretos de Vault desde la bóveda. 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, zabbix: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 secretas de Vault para obtener información detallada sobre el procesamiento de valores de macro 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

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

  1. Ejecute los siguientes comandos CLI para crear el secreto requerido en la bóveda:
# 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 el nuevo secreto con la contraseña de la clave en el punto de montaje "secret/" y la ruta "zabbix".
       vault kv put -mount=secret zabbix password=<password>
       
       # Pruebe que el secreto se haya agregado correctamente.
       vault kv get secret/zabbix
       
       # 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; consulte también el parámetro --capath.
       curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix
  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 almacén de HashiCorp:

  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 la base de datos.

  2. Actualice la configuración de la conexión a la base de datos reconfigurando la interfaz de Zabbix y especificando los parámetros necesarios como se describe en la sección Interfaz. Para reconfigurar la interfaz de Zabbix, abra la URL de configuración de la interfaz 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 se pueden configurar en el archivo de configuración de la interfaz (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 macros de usuario, si es necesario.

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