[comment]: # ({4dc10e58-317d63e9})
# 2 HashiCorp-Konfiguration

[comment]: # ({/4dc10e58-317d63e9})

[comment]: # ({8d9b38bd-fdcfe831})
#### Ü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](https://www.vaultproject.io/docs/secrets/kv/kv-v2) beschrieben bereitgestellt und konfiguriert werden.

Informationen zur Konfiguration von TLS in Zabbix finden Sie unter [*Speicherung von Geheimnissen*](/manual/config/secrets#configuring-tls).

[comment]: # ({/8d9b38bd-fdcfe831})

[comment]: # ({4abbcd52-9c0ce526})
#### 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](/manual/concepts/server/server_params) oder [Proxy](/manual/concepts/proxy/proxy_params) zu konfigurieren, geben Sie die folgenden Konfigurationsparameter in der Konfigurationsdatei an:

-   `Vault` - welcher Vault-Anbieter verwendet werden soll;
-   `VaultToken` - Authentifizierungstoken für den Vault (siehe Zabbix-Server/Proxy-Konfigurationsdatei 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.

:::noteimportant
Die Konfigurationsparameter `Vault`, `VaultToken`, `VaultURL` und `VaultPrefix` werden auch für die Vault-Authentifizierung verwendet, wenn Secret-Vault-Makros von Zabbix Server verarbeitet werden (und von Zabbix Proxy, falls [konfiguriert](/manual/web_interface/frontend_sections/administration/general#other)). Zabbix Server und Proxies öffnen keine Vault-Secret-Makros, die DB-Anmeldedaten aus VaultDBPath enthalten.<br><br>Die Verwendung unterschiedlicher Token für verschiedene Proxies wird dringend empfohlen.
:::

Zabbix Server und Zabbix Proxy lesen die vaultbezogenen 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 geforkte Skripte nicht verfügbar ist; es ist ein Fehler, wenn sowohl `VaultToken` als auch `VAULT_TOKEN` einen Wert enthalten.

[comment]: # ({/4abbcd52-9c0ce526})

[comment]: # ({901bf5bb-19842818})
**Beispiel**

1. Geben Sie in *zabbix_server.conf* die folgenden Parameter an:

```ini
Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
```

2. Führen Sie die folgenden CLI-Befehle aus, um das erforderliche Secret im Vault zu erstellen:

```bash
# 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
```

3. Als Ergebnis ruft der Zabbix Server die folgenden Zugangsdaten für die Datenbankauthentifizierung ab:

-   Benutzername: zabbix
-   Passwort: <password>

[comment]: # ({/901bf5bb-19842818})

[comment]: # ({26ba1bdc-0cae9564})
##### Frontend

Das Zabbix Frontend kann so konfiguriert werden, dass es Datenbank-Anmeldedaten aus dem Vault abruft, 
entweder während der [Installation](/manual/installation/frontend) des Frontends oder durch Aktualisierung der 
Frontend-Konfigurationsdatei (`zabbix.conf.php`). 

:::noteimportant
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](#updating-existing-configuration).
:::
  
Während der **Installation des Frontends** müssen die Konfigurationsparameter im Schritt *Configure DB Connection* angegeben werden:

![](../../../../assets/en/manual/config/hashicorp_setup.png){width="600"}
  
-   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.<br>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.<br>Beispiel: `database`|
|*Vault authentication token*|nein| |Geben Sie ein Authentifizierungstoken für den schreibgeschützten Zugriff auf den Secret-Pfad an.<br>Informationen zum Erstellen von Tokens und Vault-Richtlinien finden Sie in der [HashiCorp-Dokumentation](https://learn.hashicorp.com/tutorials/vault/tokens).|

[comment]: # ({/26ba1bdc-0cae9564})

[comment]: # ({9d96212b-2e69e703})
#### 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/Proxy [konfiguriert](/manual/config/secrets/hashicorp#serverproxy) ist, um mit HashiCorp Vault zu arbeiten;
- der Parameter *Vault provider* unter [*Administration → General → Other*](/manual/web_interface/frontend_sections/administration/general#other) auf „HashiCorp Vault“ gesetzt ist (Standard);

![](../../../../assets/en/manual/config/provider_hashicorp.png)

:::noteclassic
Der Zabbix Server (und der Zabbix Proxy, falls [konfiguriert](/manual/web_interface/frontend_sections/administration/general#other)) 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 Authentifizierungstoken (ü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*](/manual/config/macros/secret_macros#vault-secret).

[comment]: # ({/9d96212b-2e69e703})

[comment]: # ({0481f8ba-b5cf890a})
**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.

[comment]: # ({/0481f8ba-b5cf890a})

[comment]: # ({9f72277f-0c64c650})
**Beispiel**

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

![](../../../../assets/en/manual/config/hashi_macro.png)

2. Führen Sie die folgenden CLI-Befehle aus, um das erforderliche Secret im Vault zu erstellen:

```bash
# 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
```

3. Als Ergebnis löst Zabbix das Makro {$PASSWORD} in den Wert <password> auf.

[comment]: # ({/9f72277f-0c64c650})

[comment]: # ({e1678ca3-d8c23996})
#### 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*](#retrieving-database-credentials) beschrieben.

2. Aktualisieren Sie die DB-Verbindungseinstellungen, indem Sie das Zabbix Frontend neu konfigurieren und die erforderlichen Parameter wie im Abschnitt [*Frontend*](#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](/manual/installation/frontend#install) (*zabbix.conf.php*) festgelegt werden:

```ini
$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/';
```

3. Konfigurieren Sie bei Bedarf Benutzermakros wie im Abschnitt [*Werte von Benutzermakros*](#frontend) beschrieben.

Um eine bestehende Konfiguration zum Abrufen von Geheimnissen aus einem CyberArk Vault zu aktualisieren, siehe [*CyberArk-Konfiguration*](/manual/config/secrets/cyberark#update-existing-configuration).

[comment]: # ({/e1678ca3-d8c23996})
