このセクションでは、HashiCorp Vault KV Secrets Engine - Version 2 からシークレットを取得するための Zabbix の設定方法について説明します。
Vault は公式の HashiCorp ドキュメント に記載されているようにデプロイおよび設定する必要があります。
Zabbix での TLS の設定方法については、シークレットの保存 を参照してください。
データベース認証情報を持つシークレットを正常に取得するには、以下の両方を設定する必要があります。
Zabbix サーバーまたはプロキシを設定するには、設定ファイルに以下のパラメータを指定します。
Vault - 使用するボールトプロバイダーVaultToken - ボールト認証トークン(詳細はZabbixサーバー/プロキシの設定ファイルを参照)VaultURL - ボールトサーバーのHTTP[S] URLVaultDBPath - データベース認証情報を含むボールトシークレットへのパス(このオプションはDBUserおよびDBPasswordが指定されていない場合のみ使用可能);Zabbixサーバーまたはプロキシは「password」と「username」キーで認証情報を取得しますVaultPrefix - ボールトごとにパスまたはクエリのカスタムプレフィックス;指定しない場合は最適なデフォルト値が使用されますVault、VaultToken、VaultURL、VaultPrefixの設定パラメータは、Zabbixサーバー(および設定済みの場合はZabbixプロキシ)によるシークレットボールトマクロの処理時にもボールト認証に使用されます。Zabbixサーバーおよびプロキシは、VaultDBPathからDB認証情報を含むボールトシークレットマクロを開きません。
異なるプロキシごとに異なるトークンを使用することを強く推奨します。
ZabbixサーバーおよびZabbixプロキシは、起動時にzabbix_server.confおよびzabbix_proxy.confからボールト関連の設定パラメータを読み込みます。 さらに、ZabbixサーバーおよびZabbixプロキシは、起動時に一度だけVAULT_TOKEN環境変数を読み込み、フォークされたスクリプトから利用できないようにアンセットします;VaultTokenとVAULT_TOKENの両方に値が含まれている場合はエラーとなります。
例
Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/# まだ有効化されていない場合は "secret/" マウントポイントを有効化します。"kv-v2" を使用する必要があります。
vault secrets enable -path=secret/ kv-v2
# "secret/" マウントポイントと "zabbix/database" パスの下に、usernameとpasswordのキーで新しいシークレットを追加します。
vault kv put -mount=secret zabbix/database username=zabbix password=<password>
# シークレットが正常に追加されたことをテストします。
vault kv get secret/zabbix/database
# 最後にCurlでテストします。"data"をマウントポイントの後に手動で追加し、"/v1"をマウントポイントの前に追加する必要があること、--capathパラメータも参照してください。
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/databaseZabbixフロントエンドは、フロントエンドのインストール時、またはフロントエンドの設定ファイル(zabbix.conf.php)を更新することで、Vaultからデータベースの認証情報を取得するように設定できます。
前回のフロントエンドインストール以降にVaultの認証情報が変更された場合は、フロントエンドのインストールを再実行するか、zabbix.conf.phpを更新してください。詳細は既存設定の更新も参照してください。
フロントエンドのインストール時には、Configure DB Connectionステップで設定パラメータを指定する必要があります。

| パラメータ | 必須 | デフォルト値 | 説明 |
|---|---|---|---|
| Vault API endpoint | はい | https://localhost:8200 | scheme://host:port形式でVaultへの接続URLを指定します |
| Vault prefix | いいえ | /v1/secret/data/ | Vaultパスまたはクエリのカスタムプレフィックスを指定します。指定しない場合はデフォルト値が使用されます。 例: /v1/secret/data/zabbix/ |
| Vault secret path | いいえ | データベースの認証情報を「password」と「username」キーで取得するためのシークレットへのパス。 例: database |
|
| Vault authentication token | いいえ | シークレットパスへの読み取り専用アクセス用の認証トークンを指定します。 トークンやVaultポリシーの作成方法についてはHashiCorpドキュメントを参照してください。 |
Vault secret ユーザーマクロ値の保存に HashiCorp Vault を使用するには、以下を確認してください。

Zabbix サーバー(および設定されている場合は Zabbix プロキシ)は、Vault から Vault secret マクロ値へのアクセスが必要です。 Zabbix フロントエンドにはそのようなアクセスは必要ありません。
マクロ値には参照パス(例:path:key、macros:password など)を指定する必要があります。 Zabbix サーバー/プロキシの設定時に指定した認証トークン(VaultToken パラメーター)は、このパスへの読み取り専用アクセス権を持っている必要があります。
Zabbix によるマクロ値の処理の詳細については、Vault secret マクロを参照してください。
パス構文
スラッシュ ("/") とコロン (":") の記号は予約されています。
スラッシュは、マウントポイントとパスを区切る場合にのみ使用できます (例: secret/zabbix では、マウントポイントは "secret"、パスは "zabbix")。Vaultマクロの場合、コロンはパス/クエリとキーを区切る場合にのみ使用できます。
スラッシュで区切られた名前のマウントポイントを作成する必要がある場合 (例: foo/bar/zabbix では、マウントポイントは "foo/bar"、パスは "zabbix" であり、"foo%2Fbar/zabbix" のようにエンコードできます)、またはマウントポイント名やパスにコロンを含める必要がある場合は、スラッシュやコロンの記号をURLエンコードすることができます。
例
macros:passwordに設定します。
# まだ有効化されていない場合は、"secret/"マウントポイントを有効化します。"kv-v2"を使用する必要があることに注意してください。
vault secrets enable -path=secret/ kv-v2
# マウントポイント"secret/"およびパス"zabbix/macros"の下に、キー"password"で新しいシークレットを追加します。
vault kv put -mount=secret zabbix/macros password=<password>
# シークレットが正常に追加されたかテストします。
vault kv get secret/zabbix/macros
# 最後にCurlでテストします。"data"をマウントポイントの後に手動で追加し、"/v1"をマウントポイントの前に追加する必要があること、また--capathパラメータも参照してください。
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/macrosHashiCorp Vault からシークレットを取得するための既存の設定を更新するには:
データベース認証情報 セクションで説明されているように、Zabbix サーバーまたはプロキシの設定ファイルパラメーターを更新します。
フロントエンド セクションで説明されているように、Zabbix フロントエンドを再設定し、必要なパラメーターを指定して DB 接続設定を更新します。 Zabbix フロントエンドを再設定するには、ブラウザでフロントエンドセットアップ URL を開きます:
または、これらのパラメーターは フロントエンド設定ファイル (zabbix.conf.php) で設定できます:
$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/';CyberArk Vault からシークレットを取得するための既存の設定を更新するには、CyberArk の設定 を参照してください。