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 Zabbix Server oder Proxy zu konfigurieren, geben Sie die folgenden Konfigurationsparameter in der Konfigurationsdatei an:

  • Vault - welcher Vault-Anbieter verwendet werden soll;
  • VaultToken - Authentifizierungstoken des Vaults (siehe Konfigurationsdatei des Zabbix Server/Proxy für Details);
  • VaultURL - HTTP[S]-URL des Vault-Servers;
  • VaultDBPath - Pfad zum Vault-Secret, das die Datenbankanmeldedaten enthält (diese Option kann nur verwendet werden, wenn DBUser und DBPassword nicht angegeben sind); Zabbix Server oder Proxy ruft die Anmeldedaten über die Schlüssel "password" und "username" ab;
  • VaultPrefix - benutzerdefinierter Präfix für den Vault-Pfad oder die Abfrage, abhängig vom Vault; wenn nicht angegeben, wird der am besten geeignete Standardwert verwendet.

Zabbix Server verwendet die Konfigurationsparameter Vault, VaultToken, VaultURL und VaultPrefix auch für die Vault-Authentifizierung beim Verarbeiten von Vault-Secret-Makros.

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

Zabbix Server oder Proxy unterstützen automatische Verlängerungen von Service-Tokens und periodische Service-Tokens. Wenn Zabbix erkennt, dass ein Token verlängerbar ist, wird es automatisch weiter verlängert, bis die maximale TTL des Tokens erreicht ist oder, im Fall von periodischen Service-Tokens, unbegrenzt.

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

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

  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.