2 HashiCorp-configuratie

Deze sectie legt uit hoe Zabbix geconfigureerd kan worden om geheimen op te halen uit de HashiCorp Vault KV Secrets Engine - Versie 2.

De vault moet ingezet en geconfigureerd zijn zoals beschreven staat in de officiële HashiCorp-documentatie.

Voor meer informatie over het configureren van TLS in Zabbix, zie Opslag van geheimen.

Databasegegevens

Toegang tot een geheim met databasegegevens is apart geconfigureerd voor elke afzonderlijke Zabbix-component.

Server en proxies

Om databasegegevens vanuit de vault op te halen voor Zabbix server of proxy, specificeer je de volgende configuratieparameters in het configuratiebestand:

  • Vault - welke vault-provider gebruikt moet worden;
  • VaultToken - vault-authenticatietoken (zie het configuratiebestand van Zabbix server/proxy voor details);
  • VaultURL - URL van de vault-server via HTTP[S];
  • VaultDBPath - pad naar het vault-geheim met databasegegevens; Zabbix-server of proxy zal de referenties ophalen met de sleutels "password" en "username".

De Zabbix-server gebruikt ook de Vault, VaultToken en VaultURL configuratieparameters voor vault-authenticatie bij het verwerken van vault-geheimmacro's.

Zowel de Zabbix-server als de Zabbix-proxy lezen de met de vault verband houdende configuratieparameters uit zabbix_server.conf en zabbix_proxy.conf bij het opstarten. Bovendien zullen de Zabbix-server en Zabbix-proxy de VAULT_TOKEN-omgevingsvariabele één keer lezen tijdens het opstarten en deze unsetten zodat deze niet beschikbaar zou zijn via geforkte scripts; het is een fout als zowel VaultToken als VAULT_TOKEN parameters een waarde bevatten.

Voorbeeld
  1. In zabbix_server.conf specificeer je de volgende parameters:
Vault=HashiCorp
       VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
       VaultURL=https://127.0.0.1:8200
       VaultDBPath=secret/zabbix/database
  1. Voer de volgende CLI-commando's uit om het vereiste geheim in de vault aan te maken:
# "secret/" koppelingspunt inschakelen indien nog niet ingeschakeld; let op dat "kv-v2" gebruikt moet worden.
       $ vault secrets enable -path=secret/ kv-v2
       
       # Nieuwe geheimen met sleutels "username" en "password" plaatsen onder koppelingspunt "secret/" en pad "secret/zabbix/database".
       $ vault kv put secret/zabbix/database username=zabbix password=<password>
       
       # Test dat het geheim succesvol is toegevoegd.
       $ vault kv get secret/zabbix/database
       
       # Test tot slot met Curl; let op dat "data" handmatig moet worden toegevoegd na het koppelingspunt en "/v1" voor het koppelingspunt, zie ook de parameter --capath.
       $ curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database
  1. Als resultaat zal de Zabbix-server de volgende referenties ophalen voor database-authenticatie:
  • Gebruikersnaam: zabbix
  • Wachtwoord: <password>

Frontend

Om databasegegevens vanuit de vault op te halen voor de Zabbix-frontend, specificeer je de volgende parameters tijdens de installatie van de frontend.

  1. Bij de stap Configure DB Connection, stel de parameter Store credentials in in op "HashiCorp Vault".

  1. Vul vervolgens de aanvullende parameters in:
Parameter Verplicht Standaardwaarde Omschrijving
Vault API-eindpunt ja https://localhost:8200 Specificeer de URL voor het verbinden met de vault in het formaat scheme://host:port
Vault-geheimpad nee Een pad naar het geheim waaruit referenties voor de database opgehaald dienen te worden met de sleutels "password" en "username".
Voorbeeld: secret/zabbix/database
Vault authenticatietoken nee Voorzie een authenticatietoken voor alleen-lezen toegang tot het geheimpad.
Zie de HashiCorp-documentatie voor informatie over het maken van tokens en vault-policies.

Waarden van gebruikersmacro's

Om HashiCorp Vault te gebruiken voor het opslaan van waarden van gebruikersmacro's voor Vault-geheimen, zorg ervoor dat:

Alleen de Zabbix-server heeft toegang nodig tot waarden van Vault-geheimen via gebruikersmacro's uit de vault. Andere Zabbix-componenten (proxy, frontend) hebben deze toegang niet nodig.

De macrowaarde moet een verwijzingspad bevatten (als pad:sleutel, bijvoorbeeld secret/zabbix:wachtwoord). Het authenticatietoken dat tijdens de configuratie van de Zabbix-server is gespecificeerd (via de parameter VaultToken) moet alleen-lezen toegang bieden tot dit pad.

Zie Macro's voor geheime gegevens voor gedetailleerde informatie over de verwerking van macrowaarden door Zabbix.

Syntax voor paden

De symbolen schuine streep ("/") en dubbele punt (":") zijn gereserveerd.

Een schuine streep kan alleen gebruikt worden om een koppelingspunt van een pad te scheiden (bijvoorbeeld secret/zabbix waarbij het koppelingspunt "secret" is en het pad "zabbix" is). In het geval van Vault-macro's kan een dubbele punt alleen gebruikt worden om een pad/query te scheiden van een sleutel.

Het is mogelijk om de schuine streep- en dubbele punt-symbolen URL-gecodeerd te gebruiken als er behoefte is aan het creëren van een koppelingspunt met de naam die gescheiden wordt door een schuine streep (bijvoorbeeld foo/bar/zabbix, waarbij het koppelingspunt "foo/bar" is en het pad "zabbix" is, kan gecodeerd worden als "foo%2Fbar/zabbix") en als een koppelingspunt-naam of pad een dubbele punt moet bevatten.

Voorbeeld

  1. Voeg in Zabbix een gebruikersmacro {$PASSWORD} toe van het type "Vault-geheim" en met de waarde secret/zabbix:wachtwoord

  1. Voer de volgende CLI-commando's uit om het vereiste geheim in de vault aan te maken:
# "secret/" koppelingspunt inschakelen indien nog niet ingeschakeld; let op dat "kv-v2" gebruikt moet worden.
       vault secrets enable -path=secret/ kv-v2
       
       # Nieuw geheim met sleutel wachtwoord plaatsen onder koppelingspunt "secret/" en pad "secret/zabbix".
       vault kv put secret/zabbix wachtwoord=<wachtwoord>
       
       # Test dat het geheim succesvol is toegevoegd.
       vault kv get secret/zabbix
       
       # Test tot slot met Curl; let op dat "data" handmatig moet worden toegevoegd na het koppelingspunt en "/v1" voor het koppelingspunt, zie ook de parameter --capath.
       curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix
  1. Als resultaat zal Zabbix de macro {$PASSWORD} oplossen naar de waarde: <wachtwoord>

Bestaande configuratie bijwerken

Om een bestaande configuratie bij te werken voor het ophalen van geheimen uit een HashiCorp Vault:

  1. Werk de parameters in het configuratiebestand van de Zabbix-server of proxy bij zoals beschreven in de sectie Databasegegevens.

  2. Werk de DB-verbindinginstellingen bij door Zabbix frontend opnieuw te configureren en de vereiste parameters op te geven zoals beschreven in de sectie Frontend. Om Zabbix frontend opnieuw te configureren, open je de frontend setup-URL in de browser:

  • voor Apache: http://<server_ip_of_naam>/zabbix/setup.php
  • voor Nginx: http://<server_ip_of_naam>/setup.php

Als alternatief kunnen deze parameters worden ingesteld in het configuratiebestand van de frontend (zabbix.conf.php):

$DB['VAULT']                    = 'HashiCorp';
       $DB['VAULT_URL']                = 'https://localhost:8200';
       $DB['VAULT_DB_PATH']            = 'secret/zabbix/database';
       $DB['VAULT_TOKEN']              = '<mijntoken>';
       $DB['VAULT_CERT_FILE']          = '';
       $DB['VAULT_KEY_FILE']           = '';
  1. Configureer gebruikersmacro's zoals beschreven in de sectie Waarden van gebruikersmacro's, indien nodig.

Om een bestaande configuratie bij te werken voor het ophalen van geheimen uit een CyberArk Vault, zie CyberArk-configuratie.