Es posible almacenar información confidencial en secreto en HashiCorp Vault KV Secrets Engine - Versión 2. Los secretos se pueden guardar para:
Zabbix proporciona acceso de solo lectura a los secretos en Vault, suponiendo que los secretos son manejados por otra persona.
Es posible almacenar valores de macros de usuario en secreto en Vault.
Un valor "Secreto de Vault" de una macro de usuario contiene una ruta de referencia (como 'ruta:clave', por ejemplo "secret/zabbix:contraseña").
Los siguientes comandos se pueden utilizar para establecer el valor de la ruta mencionado en el ejemplo:
# 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 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 pruebe 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
El valor secreto es recuperado por el servidor Zabbix en cada actualización de datos de configuración y se almacena en la caché de configuración. El token de autenticación para un acceso de solo lectura a las rutas de referencia se proporcionará en la configuración del servidor (parámetro 'VaultToken'). Si el valor de la macro no se puede recuperar correctamente, la métrica correspondiente que usa el valor dejará de ser compatible.
También es posible activar la actualización de valores secretos desde Vault, usando una opción de línea de comando 'secrets_reload'.
El proxy Zabbix nunca se comunica con Vault para obtener secretos que no sean credenciales de la base de datos. Los valores secretos en el proxy Zabbix se recuperan del servidor Zabbix en cada configuración sincronizada y almacenada en la caché de configuración de la misma manera que en el servidor Zabbix.
Eso significa que un proxy Zabbix no puede iniciar la recopilación de datos después de reiniciar hasta que reciba la actualización de datos de configuración del servidor Zabbix por primera vez. El cifrado debe estar habilitado entre el servidor Zabbix y el proxy; de lo contrario, se registra un mensaje de advertencia del servidor.
Es posible almacenar las credenciales de la base de datos utilizadas por el servidor Zabbix, proxies y frontend de forma secreta en Vault:
Las credenciales de la base de datos recuperadas de Vault serán almacenadas en caché por la Interfaz. Tenga en cuenta que el directorio de archivos temporales del sistema de archivos se utiliza para el almacenamiento en caché de credenciales de base de datos en la interfaz. Puede usar la constante ZBX_DATA_CACHE_TTL para controlar la frecuencia con la que se actualiza/invalida la caché de datos.
Los siguientes comandos se pueden utilizar para establecer los valores de la ruta mencionados en el ejemplo:
# 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 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 get secret/zabbix/database
# Pruebe que el secreto se haya agregado correctamente
vault kv get secret/zabbix/database
# Finalmente pruebe 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
Para el servidor/proxy Zabbix se han agregado nuevos parámetros de configuración para la autenticación Vault y recuperación de credenciales de base de datos:
El servidor Zabbix y el proxy Zabbix leen al inicio la configuración relacionada con Vault de los parámetros de zabbix_server.conf y zabbix_proxy.conf.
El servidor Zabbix y el proxy Zabbix leerán adicionalmente la variable de entorno "VAULT_TOKEN" una vez durante el inicio y la desinicializan para que no esté disponible a través de scripts bifurcados; es un error si ambos VaultToken y VAULT_TOKEN contienen valores.
La barra diagonal y los dos puntos son símbolos reservados. La barra inclinada sólo se puede utilizar para separar el punto de montaje de la ruta (por ejemplo, secret/zabbix donde el punto de montaje es "secret" y "zabbix" es la ruta) y, en caso de macros de Vault, los dos puntos solo se pueden usar para separar la ruta de la clave. Es posible codificar URL "/" y ":" si es necesario crear un punto de montaje con un nombre separado por una barra diagonal (por ejemplo, foo/bar/zabbix donde el punto de montaje es "foo/bar" y la ruta es "zabbix" como "foo%2Fbar/zabbix") y si el nombre del punto de montaje o la ruta deben contener colon.
Se debe agregar el certificado firmado por una autoridad certificadora (CA) al almacén de CA predeterminado. Alternativamente, se puede crear una ubicación de almacenamiento de CA personalizada utilizando el parámetro de configuración SSLCALocation; tenga en cuenta que en este caso, el directorio de certificados debe prepararse utilizando la utilidad c_rehash de openssl, por ejemplo configure SSLCALocation y copie "ca.pem" dentro de ese directorio, luego ejecute el siguiente comando: