2 Configuración de HashiCorp

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 oficial de HashiCorp.

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

Credenciales de base de datos

El acceso a un secreto con credenciales de base de datos se configura para cada componente de Zabbix por separado.

Servidor y servidores proxy

Para obtener las credenciales de la base de datos del almacén para 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 la bóveda que contiene las credenciales de la base de datos; El servidor o proxy de Zabbix recuperará las credenciales mediante las claves "contraseña" y "nombre de usuario".

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

El servidor Zabbix y el proxy Zabbix leen los parámetros de configuración relacionados con la bóveda de zabbix_server.conf y zabbix_proxy.conf al inicio. Además, el servidor Zabbix y el proxy Zabbix leerán la variable de entorno VAULT_TOKEN una vez durante el inicio y la desactivará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.

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=secret/zabbix/database
  1. Ejecute los siguientes comandos CLI para crear el secreto requerido en el almacén:
# Habilite el punto de montaje "secreto/" si aún no está habilitado; tenga en cuenta que se debe utilizar "kv-v2".
       $ vault secrets enable -path=secret/ kv-v2
       
       # Coloque nuevos secretos con claves de nombre de usuario y contraseña en el punto de montaje "secret/" y la ruta "secret/zabbix/database".
       $ vault kv put secret/zabbix/database username=zabbix password=<password>
       
       # Pruebe que el secreto se haya agregado correctamente.
       $ vault kv get secret/zabbix/database
       
       # Finalmente prueba con Curl; tenga en cuenta que los "datos" deben 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:
  • Nombre de usuario: zabbix
  • Contraseña: <contraseña>

Interfaz

Para obtener las credenciales de la base de datos de la bóveda para la interfaz de Zabbix, especifique los siguientes parámetros durante la instalación de la interfaz.

  1. En el paso Configurar conexión de base de datos, establezca el parámetro Almacenar credenciales en en "HashiCorp Vault".

  1. Luego, complete los parámetros adicionales:
Parámetro Obligatorio Valor predeterminado Descripción
Punto final de API de Vault https://localhost:8200 Especifique la URL para conectarse a la bóveda en el formato scheme://host:port
Ruta secreta de la bóveda no Una ruta al secreto desde donde se recuperarán las credenciales de la base de datos mediante las claves "contraseña" y "nombre de usuario".
Ejemplo: secret/zabbix/database
Token de autenticación de 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 cómo crear tokens y políticas de bóveda.

Valores de macro de usuario

Para utilizar HashiCorp Vault para almacenar valores de macro de usuario Vault secret, asegúrese de que:

Solo el servidor Zabbix requiere acceso a los valores de macro Vault secret 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, secret/zabbix:contraseña). 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 "secret" 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} de tipo "Vault secret" y con el valor secret/zabbix:password

  1. Ejecute los siguientes comandos CLI para crear el secreto requerido en el almacén:
# Habilite el punto de montaje "secreto/" si aún no está habilitado; tenga en cuenta que se debe utilizar "kv-v2".
       vault secrets enable -path=secret/ kv-v2
       
       # Coloque un nuevo secreto con contraseña clave en el punto de montaje "secret/" y la ruta "secret/zabbix".
       vault kv put secret/zabbix password=<contraseña>
       
       # Pruebe que el secreto se haya agregado correctamente.
       vault kv get secret/zabbix
       
       # Finalmente prueba con Curl; tenga en cuenta que los "datos" deben 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: <contraseña>

Actualizar la configuración existente

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

  1. Actualice los parámetros del servidor Zabbix o del archivo de configuración del proxy como se describe en la sección Credenciales de base de datos.

  2. Actualice la configuración de la conexión de base de datos reconfigurando la interfaz de Zabbix y especificando los parámetros requeridos como se describe en la sección Frontend. 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 frontend (zabbix.conf.php):

$DB['VAULT'] = 'HashiCorp';
       $DB['VAULT_URL'] = 'https://localhost:8200';
       $DB['VAULT_DB_PATH']= 'secret/zabbix/database';
       $DB['VAULT_TOKEN'] = '<mitoken>';
       $DB['VAULT_CERT_FILE'] = '';
       $DB['VAULT_KEY_FILE'] = '';
  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 CyberArk Vault, consulte configuración de CyberArk.