Deze sectie legt uit hoe Zabbix geconfigureerd kan worden om geheimen op te halen uit de HashiCorp Vault KV Secrets Engine - Versie 2.
De vault moet ingezet en geconfigureerd zijn zoals beschreven staat in de officiële HashiCorp-documentatie.
Voor meer informatie over het configureren van TLS in Zabbix, zie Opslag van geheimen.
Toegang tot een geheim met databasegegevens is apart geconfigureerd voor elke afzonderlijke Zabbix-component.
Om databasegegevens vanuit de vault op te halen voor Zabbix server of proxy, specificeer je de volgende configuratieparameters in het configuratiebestand:
Vault
- welke vault-provider gebruikt moet worden;VaultToken
- vault-authenticatietoken (zie het configuratiebestand van Zabbix server/proxy voor details);VaultURL
- URL van de vault-server via HTTP[S];VaultDBPath
- pad naar het vault-geheim met databasegegevens; Zabbix-server of proxy zal de referenties ophalen met de sleutels "password" en "username".De Zabbix-server gebruikt ook de Vault
, VaultToken
en VaultURL
configuratieparameters voor vault-authenticatie bij het verwerken van vault-geheimmacro's.
Zowel de Zabbix-server als de Zabbix-proxy lezen de met de vault verband houdende configuratieparameters uit zabbix_server.conf en zabbix_proxy.conf bij het opstarten. Bovendien zullen de Zabbix-server en Zabbix-proxy de VAULT_TOKEN
-omgevingsvariabele één keer lezen tijdens het opstarten en deze unsetten zodat deze niet beschikbaar zou zijn via geforkte scripts; het is een fout als zowel VaultToken
als VAULT_TOKEN
parameters een waarde bevatten.
Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=secret/zabbix/database
# "secret/" koppelingspunt inschakelen indien nog niet ingeschakeld; let op dat "kv-v2" gebruikt moet worden.
$ vault secrets enable -path=secret/ kv-v2
# Nieuwe geheimen met sleutels "username" en "password" plaatsen onder koppelingspunt "secret/" en pad "secret/zabbix/database".
$ vault kv put secret/zabbix/database username=zabbix password=<password>
# Test dat het geheim succesvol is toegevoegd.
$ vault kv get secret/zabbix/database
# Test tot slot met Curl; let op dat "data" handmatig moet worden toegevoegd na het koppelingspunt en "/v1" voor het koppelingspunt, zie ook de parameter --capath.
$ curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database
Om databasegegevens vanuit de vault op te halen voor de Zabbix-frontend, specificeer je de volgende parameters tijdens de installatie van de frontend.
Parameter | Verplicht | Standaardwaarde | Omschrijving |
---|---|---|---|
Vault API-eindpunt | ja | https://localhost:8200 | Specificeer de URL voor het verbinden met de vault in het formaat scheme://host:port |
Vault-geheimpad | nee | Een pad naar het geheim waaruit referenties voor de database opgehaald dienen te worden met de sleutels "password" en "username". Voorbeeld: secret/zabbix/database |
|
Vault authenticatietoken | nee | Voorzie een authenticatietoken voor alleen-lezen toegang tot het geheimpad. Zie de HashiCorp-documentatie voor informatie over het maken van tokens en vault-policies. |
Om HashiCorp Vault te gebruiken voor het opslaan van waarden van gebruikersmacro's voor Vault-geheimen, zorg ervoor dat:
Alleen de Zabbix-server heeft toegang nodig tot waarden van Vault-geheimen via gebruikersmacro's uit de vault. Andere Zabbix-componenten (proxy, frontend) hebben deze toegang niet nodig.
De macrowaarde moet een verwijzingspad bevatten (als pad:sleutel
, bijvoorbeeld secret/zabbix:wachtwoord
). Het authenticatietoken dat tijdens de configuratie van de Zabbix-server is gespecificeerd (via de parameter VaultToken
) moet alleen-lezen toegang bieden tot dit pad.
Zie Macro's voor geheime gegevens voor gedetailleerde informatie over de verwerking van macrowaarden door Zabbix.
De symbolen schuine streep ("/") en dubbele punt (":") zijn gereserveerd.
Een schuine streep kan alleen gebruikt worden om een koppelingspunt van een pad te scheiden (bijvoorbeeld secret/zabbix waarbij het koppelingspunt "secret" is en het pad "zabbix" is). In het geval van Vault-macro's kan een dubbele punt alleen gebruikt worden om een pad/query te scheiden van een sleutel.
Het is mogelijk om de schuine streep- en dubbele punt-symbolen URL-gecodeerd te gebruiken als er behoefte is aan het creëren van een koppelingspunt met de naam die gescheiden wordt door een schuine streep (bijvoorbeeld foo/bar/zabbix, waarbij het koppelingspunt "foo/bar" is en het pad "zabbix" is, kan gecodeerd worden als "foo%2Fbar/zabbix") en als een koppelingspunt-naam of pad een dubbele punt moet bevatten.
secret/zabbix:wachtwoord
# "secret/" koppelingspunt inschakelen indien nog niet ingeschakeld; let op dat "kv-v2" gebruikt moet worden.
vault secrets enable -path=secret/ kv-v2
# Nieuw geheim met sleutel wachtwoord plaatsen onder koppelingspunt "secret/" en pad "secret/zabbix".
vault kv put secret/zabbix wachtwoord=<wachtwoord>
# Test dat het geheim succesvol is toegevoegd.
vault kv get secret/zabbix
# Test tot slot met Curl; let op dat "data" handmatig moet worden toegevoegd na het koppelingspunt en "/v1" voor het koppelingspunt, zie ook de parameter --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix
Om een bestaande configuratie bij te werken voor het ophalen van geheimen uit een HashiCorp Vault:
Werk de parameters in het configuratiebestand van de Zabbix-server of proxy bij zoals beschreven in de sectie Databasegegevens.
Werk de DB-verbindinginstellingen bij door Zabbix frontend opnieuw te configureren en de vereiste parameters op te geven zoals beschreven in de sectie Frontend. Om Zabbix frontend opnieuw te configureren, open je de frontend setup-URL in de browser:
Als alternatief kunnen deze parameters worden ingesteld in het configuratiebestand van de frontend (zabbix.conf.php):
$DB['VAULT'] = 'HashiCorp';
$DB['VAULT_URL'] = 'https://localhost:8200';
$DB['VAULT_DB_PATH'] = 'secret/zabbix/database';
$DB['VAULT_TOKEN'] = '<mijntoken>';
$DB['VAULT_CERT_FILE'] = '';
$DB['VAULT_KEY_FILE'] = '';
Om een bestaande configuratie bij te werken voor het ophalen van geheimen uit een CyberArk Vault, zie CyberArk-configuratie.