HashiCorp-Konfiguration

Übersicht

Dieser Abschnitt erklärt, wie Zabbix so konfiguriert wird, dass Geheimnisse aus der HashiCorp Vault KV Secrets Engine - Version 2 abgerufen werden.

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.

Die Konfigurationsparameter Vault, VaultToken, VaultURL und VaultPrefix werden auch für die Vault-Authentifizierung verwendet, wenn Secret-Vault-Makros durch den Zabbix Server verarbeitet werden (und durch den Zabbix Proxy, falls konfiguriert). Zabbix Server und Proxies öffnen keine Vault-Secret-Makros, die DB-Anmeldedaten aus VaultDBPath enthalten.

Es wird dringend empfohlen, unterschiedliche Tokens für unterschiedliche Proxies zu verwenden.

Zabbix Server und Zabbix Proxy lesen die vault-bezogenen Konfigurationsparameter beim Start aus zabbix_server.conf und zabbix_proxy.conf. Zusätzlich liest Zabbix Server und Zabbix Proxy die Umgebungsvariable VAULT_TOKEN einmal beim Start ein und entfernt sie anschließend, damit sie für per Fork gestartete 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 Mount-Punkt "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-Punkt "secret/" und dem Pfad "zabbix/database" ab.
vault kv put -mount=secret zabbix/database username=zabbix password=<password>

# Prüfen 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-Punkt manuell hinzugefügt werden muss und "/v1" vor dem Mount-Punkt stehen muss; siehe auch den Parameter --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database
  1. Dadurch 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 Datenbankanmeldedaten aus dem Vault abruft, entweder während der Installation des Frontends oder durch Aktualisieren der Frontend-Konfigurationsdatei (zabbix.conf.php).

Wenn sich die Vault-Anmeldedaten seit der vorherigen Frontend-Installation geändert haben, 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 Datenbankverbindung konfigurieren angegeben werden:

  • Setzen Sie den Parameter Anmeldedaten speichern in auf "HashiCorp Vault".
  • Geben Sie die Verbindungsparameter an:
Parameter Mandatory Default value Description
Vault API endpoint yes https://localhost:8200 Geben Sie die URL für die Verbindung zum Vault im Format scheme://host:port an
Vault prefix no /v1/secret/data/ Geben Sie ein benutzerdefiniertes Präfix für den Vault-Pfad oder die Abfrage an. Wenn nicht angegeben, wird der Standardwert verwendet.
Beispiel: /v1/secret/data/zabbix/
Vault secret path no 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 no Geben Sie ein Authentifizierungstoken für den schreibgeschützten Zugriff auf den Secret-Pfad an.
Siehe die HashiCorp-Dokumentation für Informationen zum Erstellen von Tokens und Vault-Richtlinien.

Abrufen von Benutzer-Makrowerten

Um HashiCorp Vault zum Speichern von Vault secret-Benutzermakrowerten zu verwenden, stellen Sie sicher, dass:

Der Zabbix-Server (und der Zabbix-Proxy, falls konfiguriert) benötigt Zugriff auf Vault secret-Makrowerte 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 Zabbix-Server/Proxy-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 Mountpoint von einem Pfad zu trennen (z. B. secret/zabbix, wobei der Mountpoint "secret" und der Pfad "zabbix" ist). Bei Vault-Makros kann ein Doppelpunkt nur verwendet werden, um einen Pfad/Query von einem Schlüssel zu trennen.

Es ist möglich, die Symbole Schrägstrich und Doppelpunkt per URL-Encoding zu kodieren, wenn ein Mountpoint mit einem Namen erstellt werden soll, der durch einen Schrägstrich getrennt ist (z. B. kann foo/bar/zabbix, wobei der Mountpoint "foo/bar" und der Pfad "zabbix" ist, als "foo%2Fbar/zabbix" kodiert werden) und wenn ein Mountpoint-Name 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 Mount-Punkt "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 Mount-Punkt "secret/" und dem Pfad "zabbix/macros" ab.
vault kv put -mount=secret zabbix/macros password=<password>

# Prüfen Sie, ob das Secret erfolgreich hinzugefügt wurde.
vault kv get secret/zabbix/macros

# Testen Sie abschließend mit Curl; beachten Sie, dass "data" nach dem Mount-Punkt und "/v1" vor dem Mount-Punkt 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. Dadurch löst Zabbix das Makro {$PASSWORD} in den Wert <password> auf

Aktualisierung einer vorhandenen Konfiguration

Um eine vorhandene Konfiguration zum Abrufen von Geheimnissen aus einem HashiCorp Vault zu aktualisieren:

  1. Aktualisieren Sie die Parameter der Konfigurationsdatei des Zabbix-Servers oder -Proxys wie im Abschnitt Datenbankanmeldeinformationen 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 Setup-URL des Frontends 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) gesetzt 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 Benutzer-Makros wie im Abschnitt Werte von Benutzermakros beschrieben.

Um eine vorhandene Konfiguration zum Abrufen von Geheimnissen aus einem CyberArk Vault zu aktualisieren, siehe CyberArk-Konfiguration.