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 Datenbank-Zugangsdaten

Um ein Secret mit Datenbank-Zugangsdaten 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-Provider verwendet werden soll;
  • VaultToken - Vault-Authentifizierungs-Token (siehe Zabbix-Server-/Proxy-Konfigurationsdatei für Details);
  • VaultURL - HTTP[S]-URL des Vault-Servers;
  • VaultDBPath - Pfad zum Vault-Secret, das die Datenbank-Zugangsdaten enthält (diese Option kann nur verwendet werden, wenn DBUser und DBPassword nicht angegeben sind); Zabbix Server oder Proxy ruft die Zugangsdaten ü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.

Die Konfigurationsparameter Vault, VaultToken, VaultURL und VaultPrefix werden auch für die Vault-Authentifizierung verwendet, wenn Secret-Vault-Makros vom Zabbix Server verarbeitet werden (und vom Zabbix Proxy, falls konfiguriert). Zabbix Server und Proxys öffnen keine Vault-Secret-Makros, die Datenbank-Zugangsdaten aus VaultDBPath enthalten.

Die Verwendung unterschiedlicher Tokens für verschiedene Proxys wird dringend empfohlen.

Zabbix Server und Zabbix Proxy lesen die Vault-bezogenen Konfigurationsparameter beim Start aus zabbix_server.conf bzw. zabbix_proxy.conf. Zusätzlich lesen Zabbix Server und Zabbix Proxy beim Start einmalig die Umgebungsvariable VAULT_TOKEN und setzen sie anschließend zurück, damit sie über geforkte Skripte nicht verfügbar ist; es ist ein Fehler, wenn sowohl VaultToken als auch VAULT_TOKEN einen Wert enthalten.

Beispiel

  1. Geben Sie in zabbix_server.conf die folgenden Parameter an:
Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
  1. 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 neue Secrets mit den Schlüsseln username und password unter dem Einhängepunkt "secret/" und dem Pfad "zabbix/database" ab.
vault kv put -mount=secret zabbix/database username=zabbix password=<password>

# Testen Sie, dass das Secret erfolgreich hinzugefügt wurde.
vault kv get secret/zabbix/database

# Testen Sie abschließend mit Curl; beachten Sie, dass "data" nach dem Einhängepunkt und "/v1" vor dem Einhängepunkt 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
  1. Als Ergebnis ruft der Zabbix Server die folgenden Zugangsdaten 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 Frontend-Installation oder durch Aktualisierung der Frontend-Konfigurationsdatei (zabbix.conf.php).

Wenn die Vault-Anmeldedaten seit der vorherigen Frontend-Installation geändert wurden, führen Sie die Frontend-Installation erneut aus oder aktualisieren Sie zabbix.conf.php. Siehe auch: Vorhandene Konfiguration aktualisieren.

Während der Frontend-Installation 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 wird, 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 Authentifizierungs-Token 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 Benutzermakro-Werten

Um HashiCorp Vault zum Speichern von Benutzermakro-Werten vom Typ Vault secret zu verwenden, stellen Sie sicher, dass:

Der Zabbix Server (und der Zabbix Proxy, falls konfiguriert) benötigen Zugriff auf Makrowerte vom Typ Vault secret aus dem Vault. Das Zabbix Frontend benötigt keinen solchen Zugriff.

Der Makrowert sollte einen Referenzpfad enthalten (als path:key, zum Beispiel macros:password). Das bei der Konfiguration von Zabbix Server/Proxy angegebene Authentifizierungs-Token (über den Parameter VaultToken) muss schreibgeschützten Zugriff auf diesen Pfad gewähren.

Ausführliche 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

  1. Fügen Sie in Zabbix ein Benutzermakro {$PASSWORD} vom Typ „Vault secret“ mit dem Wert macros:password hinzu.

  1. 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
  1. 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:

  1. Aktualisieren Sie die Parameter der Zabbix-Server- oder Proxy-Konfigurationsdatei wie im Abschnitt Datenbankzugangsdaten beschrieben.

  2. 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/';
  1. 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.