2 HashiCorp-Konfiguration
Übersicht
In diesem Abschnitt wird erläutert, wie Zabbix für das Abrufen von Geheimnissen aus der HashiCorp Vault KV Secrets Engine – Version 2 konfiguriert wird.
Der Vault sollte wie in der offiziellen HashiCorp-Dokumentation beschrieben bereitgestellt und konfiguriert werden.
Informationen zur Konfiguration von TLS in Zabbix finden Sie unter Speicherung von Geheimnissen.
Abrufen von Datenbankanmeldedaten
Um ein Secret mit Datenbankanmeldedaten erfolgreich abzurufen, müssen beide Komponenten konfiguriert werden:
- Zabbix Server/Proxy
- Zabbix Frontend
Server/Proxy
Um den Zabbix Server oder Proxy zu konfigurieren, geben Sie die folgenden Konfigurationsparameter in der Konfigurationsdatei an:
Vault– welcher Vault-Anbieter verwendet werden soll.VaultToken– Vault-Authentifizierungstoken (Details finden Sie in der Konfigurationsdatei des Zabbix Servers/Proxy).VaultURL– HTTP(S)-URL des Vault-Servers.VaultDBPath– Pfad zum Vault-Secret mit den Datenbankanmeldedaten (diese Option kann nur verwendet werden, wenn DBUser und DBPassword nicht angegeben sind). Der Zabbix Server oder Proxy ruft die Anmeldedaten über die Schlüssel „password“ und „username“ ab.VaultPrefix– benutzerdefiniertes Präfix für den Vault-Pfad oder die Abfrage, abhängig vom Vault; wenn nicht angegeben, wird der am besten geeignete Standardwert verwendet. Beachten Sie, dass das Präfix mit/beginnen und enden muss.
Der Zabbix Server verwendet die Konfigurationsparameter Vault, VaultToken, VaultURL und VaultPrefix auch für die Vault-Authentifizierung bei der Verarbeitung von Vault-Secret-Makros.
Der Zabbix Server und der Zabbix Proxy lesen die Vault-bezogenen Konfigurationsparameter beim Start aus zabbix_server.conf und zabbix_proxy.conf.
Zusätzlich lesen der Zabbix Server und der Zabbix Proxy die Umgebungsvariable VAULT_TOKEN einmalig beim Start ein und setzen sie zurück, sodass sie über geforkte Skripte nicht verfügbar ist. Es ist ein Fehler, wenn sowohl der Parameter VaultToken als auch VAULT_TOKEN einen Wert enthalten.
Der Zabbix Server oder Proxy unterstützt die automatische Erneuerung von Service-Tokens und periodischen Service-Tokens. Wenn Zabbix erkennt, dass ein Token erneuerbar ist, wird es automatisch weiter erneuert, bis die maximale TTL des Tokens erreicht ist oder – im Fall periodischer Service-Tokens – unbegrenzt.
Beispiel
- Konfigurieren Sie die Parameter des Zabbix Servers.
Verwenden Sie die Beispielwerte für Token, Rollen-ID oder Secret-ID aus der Dokumentation nicht in Produktionsumgebungen.
- Wenn Sie die Umgebungsvariable
VAULT_TOKENverwenden, geben Sie die folgenden Parameter in der Konfigurationsdatei des Servers (zabbix_server.conf) an und setzen Sie die Variable:
Vault=HashiCorp
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
Setzen Sie die Umgebungsvariable VAULT_TOKEN für den Zabbix Server, bevor er gestartet wird:
export VAULT_TOKEN=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
zabbix_server -c /etc/zabbix/zabbix_server.conf
- Wenn Sie den Parameter
VaultTokenverwenden, geben Sie die folgenden Parameter in der Konfigurationsdatei des Zabbix Servers an:
Wenn Sie den Parameter VaultToken verwenden, wird das Token im Klartext in der Konfigurationsdatei gespeichert.
Setzen Sie die Dateiberechtigungen auf 0600, damit nur der Benutzer, unter dem der Zabbix Server oder Proxy ausgeführt wird, die Datei lesen kann.
Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
- Wenn Sie den Parameter
VaultAppRoleIDverwenden, geben Sie die folgenden Parameter in der Konfigurationsdatei des Zabbix Servers an:
Wenn Sie den Parameter VaultAppSecretID verwenden, wird die Secret-ID im Klartext in der Konfigurationsdatei gespeichert.
Setzen Sie die Dateiberechtigungen auf 0600, damit nur der Benutzer, unter dem der Zabbix Server oder Proxy ausgeführt wird, die Datei lesen kann.
Vault=HashiCorp
VaultAppRoleID=6f1567f1-538d-7d70-e8e4-5d3e59471b2e
VaultAppSecretID=89dac8b1-f7d6-96a7-2ecf-f94d2de3d6f1
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
- Führen Sie die folgenden CLI-Befehle aus, um das erforderliche Secret im Vault zu erstellen:
# Aktivieren Sie den Mount Point "secret/", falls er noch nicht aktiviert ist; beachten Sie, dass "kv-v2" verwendet werden muss.
vault secrets enable -path=secret/ kv-v2
# Legen Sie neue Secrets mit den Schlüsseln username und password unter dem Mount Point "secret/" und dem Pfad "zabbix/database" ab.
vault kv put -mount=secret zabbix/database username=zabbix password=<password>
# Testen Sie, ob das Secret erfolgreich hinzugefügt wurde.
vault kv get secret/zabbix/database
# Testen Sie abschließend mit Curl; beachten Sie, dass "data" nach dem Mount Point und "/v1" vor dem Mount Point manuell hinzugefügt werden müssen; siehe auch den Parameter --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database
- Als Ergebnis ruft der Zabbix Server die folgenden Anmeldedaten für die Datenbankauthentifizierung ab:
- Benutzername: zabbix
- Passwort: <password>
Frontend
Das Zabbix Frontend kann so konfiguriert werden, dass es Datenbank-Anmeldedaten aus dem Vault abruft,
entweder während der Installation des Frontends oder durch Aktualisierung der
Frontend-Konfigurationsdatei (zabbix.conf.php).
Wenn die Vault-Anmeldedaten seit der vorherigen Installation des Frontends geändert wurden, führen Sie die Installation des Frontends erneut aus
oder aktualisieren Sie zabbix.conf.php. Siehe auch: Vorhandene Konfiguration aktualisieren.
Während der Installation des Frontends müssen die Konfigurationsparameter im Schritt Configure DB Connection angegeben werden:

- Setzen Sie den Parameter Store credentials in auf „HashiCorp Vault“.
- Geben Sie die Verbindungsparameter an:
| Parameter | Pflichtfeld | Standardwert | Beschreibung |
|---|---|---|---|
| Vault API endpoint | ja | https://localhost:8200 | Geben Sie die URL für die Verbindung zum Vault im Format scheme://host:port an. |
| Vault prefix | nein | /v1/secret/data/ | Geben Sie ein benutzerdefiniertes Präfix für den Vault-Pfad oder die Abfrage an. Wenn nichts angegeben ist, wird der Standardwert verwendet. Beispiel: /v1/secret/data/zabbix/ |
| Vault secret path | nein | Ein Pfad zum Secret, aus dem die Anmeldedaten für die Datenbank über die Schlüssel „password“ und „username“ abgerufen werden sollen. Beispiel: database |
|
| Vault authentication token | nein | Geben Sie ein Authentifizierungstoken für den schreibgeschützten Zugriff auf den Secret-Pfad an. Informationen zum Erstellen von Tokens und Vault-Richtlinien finden Sie in der HashiCorp-Dokumentation. |
Abrufen von Benutzer-Makrowerten
Um HashiCorp Vault zum Speichern von Vault secret Benutzer-Makrowerten zu verwenden, stellen Sie sicher, dass:
- der Zabbix Server konfiguriert ist, um mit HashiCorp Vault zu arbeiten;
- der Parameter Vault provider unter Administration → General → Other auf "HashiCorp Vault" gesetzt ist (Standard).

Nur der Zabbix Server benötigt Zugriff auf Vault secret Makrowerte aus dem Vault. Andere Zabbix-Komponenten (Proxy, Frontend) benötigen keinen solchen Zugriff.
Der Makrowert sollte einen Referenzpfad enthalten (als path:key, zum Beispiel macros:password).
Das bei der Zabbix-Server-Konfiguration angegebene Authentifizierungstoken (über den Parameter VaultToken) muss Lesezugriff auf diesen Pfad gewähren.
Weitere Informationen zur Verarbeitung von Makrowerten durch Zabbix finden Sie unter Vault secret macros.
Pfadsyntax
Die Symbole Schrägstrich ("/") und Doppelpunkt (":") sind reserviert.
Ein Schrägstrich kann nur verwendet werden, um einen Einhängepunkt von einem Pfad zu trennen (z. B. secret/zabbix, wobei der Einhängepunkt „secret“ und der Pfad „zabbix“ ist). Im Fall von Vault-Makros kann ein Doppelpunkt nur verwendet werden, um einen Pfad/eine Abfrage von einem Schlüssel zu trennen.
Es ist möglich, die Symbole Schrägstrich und Doppelpunkt URL-zu-kodieren, wenn ein Einhängepunkt mit einem Namen erstellt werden muss, der durch einen Schrägstrich getrennt ist (z. B. foo/bar/zabbix, wobei der Einhängepunkt „foo/bar“ und der Pfad „zabbix“ ist, kann als „foo%2Fbar/zabbix“ kodiert werden), und wenn ein Einhängepunktname oder Pfad einen Doppelpunkt enthalten muss.
Beispiel
- Fügen Sie in Zabbix ein Benutzermakro {$PASSWORD} vom Typ „Vault secret“ mit dem Wert
macros:passwordhinzu.

- Führen Sie die folgenden CLI-Befehle aus, um das erforderliche Secret im Vault zu erstellen:
# Aktivieren Sie den Einhängepunkt "secret/", falls er noch nicht aktiviert ist; beachten Sie, dass "kv-v2" verwendet werden muss.
vault secrets enable -path=secret/ kv-v2
# Legen Sie ein neues Secret mit dem Schlüssel "password" unter dem Einhängepunkt "secret/" und dem Pfad "zabbix/macros" ab.
vault kv put -mount=secret zabbix/macros password=<password>
# Testen Sie, dass das Secret erfolgreich hinzugefügt wurde.
vault kv get secret/zabbix/macros
# Testen Sie abschließend mit Curl; beachten Sie, dass "data" nach dem Einhängepunkt und "/v1" vor dem Einhängepunkt manuell hinzugefügt werden muss; siehe auch den Parameter --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/macros
- Als Ergebnis löst Zabbix das Makro {$PASSWORD} in den Wert <password> auf.
Aktualisierung einer bestehenden Konfiguration
Um eine bestehende Konfiguration zum Abrufen von Geheimnissen aus einem HashiCorp Vault zu aktualisieren:
-
Aktualisieren Sie die Parameter der Zabbix-Server- oder Proxy-Konfigurationsdatei wie im Abschnitt Datenbankzugangsdaten beschrieben.
-
Aktualisieren Sie die DB-Verbindungseinstellungen, indem Sie das Zabbix Frontend neu konfigurieren und die erforderlichen Parameter wie im Abschnitt Frontend beschrieben angeben. Um das Zabbix Frontend neu zu konfigurieren, öffnen Sie die Frontend-Setup-URL im Browser:
- für Apache: http://<server_ip_or_name>/zabbix/setup.php
- für Nginx: http://<server_ip_or_name>/setup.php
Alternativ können diese Parameter in der Frontend-Konfigurationsdatei (zabbix.conf.php) festgelegt werden:
$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/';
- Konfigurieren Sie bei Bedarf Benutzermakros wie im Abschnitt Werte von Benutzermakros beschrieben.
Um eine bestehende Konfiguration zum Abrufen von Geheimnissen aus einem CyberArk Vault zu aktualisieren, siehe CyberArk-Konfiguration.