You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.

2 HashiCorpの設定

概要

このセクションでは、HashiCorp Vault KV Secrets Engine - Version 2 からシークレットを取得するための Zabbix の設定方法について説明します。

Vault は公式の HashiCorp ドキュメント に記載されているようにデプロイおよび設定する必要があります。

Zabbix での TLS の設定方法については、シークレットの保存 を参照してください。

データベース認証情報の取得

データベース認証情報を持つシークレットを正常に取得するには、以下の両方を設定する必要があります。

  • Zabbixサーバー/プロキシ
  • Zabbixフロントエンド
サーバー/プロキシ

Zabbix サーバーまたはプロキシを設定するには、設定ファイルに以下のパラメータを指定します。

  • Vault - 使用するボールトプロバイダー
  • VaultToken - ボールト認証トークン(詳細はZabbixサーバー/プロキシの設定ファイルを参照)
  • VaultURL - ボールトサーバーのHTTP[S] URL
  • VaultDBPath - データベース認証情報を含むボールトシークレットへのパス(このオプションはDBUserおよびDBPasswordが指定されていない場合のみ使用可能);Zabbixサーバーまたはプロキシは「password」と「username」キーで認証情報を取得します
  • VaultPrefix - ボールトごとにパスまたはクエリのカスタムプレフィックス;指定しない場合は最適なデフォルト値が使用されます

VaultVaultTokenVaultURLVaultPrefixの設定パラメータは、Zabbixサーバー(および設定済みの場合はZabbixプロキシ)によるシークレットボールトマクロの処理時にもボールト認証に使用されます。Zabbixサーバーおよびプロキシは、VaultDBPathからDB認証情報を含むボールトシークレットマクロを開きません。

異なるプロキシごとに異なるトークンを使用することを強く推奨します。

ZabbixサーバーおよびZabbixプロキシは、起動時にzabbix_server.confおよびzabbix_proxy.confからボールト関連の設定パラメータを読み込みます。 さらに、ZabbixサーバーおよびZabbixプロキシは、起動時に一度だけVAULT_TOKEN環境変数を読み込み、フォークされたスクリプトから利用できないようにアンセットします;VaultTokenVAULT_TOKENの両方に値が含まれている場合はエラーとなります。

  1. zabbix_server.confで、以下のパラメータを指定します。
Vault=HashiCorp
       VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
       VaultURL=https://127.0.0.1:8200
       VaultDBPath=database
       VaultPrefix=/v1/secret/data/zabbix/
  1. 必要なシークレットをボールトに作成するために、以下のCLIコマンドを実行します。
# まだ有効化されていない場合は "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/database
  1. その結果、Zabbixサーバーはデータベース認証のために以下の認証情報を取得します。
  • ユーザー名: zabbix
  • パスワード: <password>
フロントエンド

Zabbixフロントエンドは、フロントエンドのインストール時、またはフロントエンドの設定ファイル(zabbix.conf.php)を更新することで、Vaultからデータベースの認証情報を取得するように設定できます。

前回のフロントエンドインストール以降にVaultの認証情報が変更された場合は、フロントエンドのインストールを再実行するか、zabbix.conf.phpを更新してください。詳細は既存設定の更新も参照してください。

フロントエンドのインストール時には、Configure DB Connectionステップで設定パラメータを指定する必要があります。

  • Store credentials inパラメータを「HashiCorp Vault」に設定します。
  • 接続パラメータを指定します。
パラメータ 必須 デフォルト値 説明
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 サーバー/プロキシが HashiCorp Vault で動作するように設定されていること
  • 管理 → 一般 → その他Vault プロバイダー パラメーターが「HashiCorp Vault」(デフォルト)に設定されていること

Zabbix サーバー(および設定されている場合は Zabbix プロキシ)は、Vault から Vault secret マクロ値へのアクセスが必要です。 Zabbix フロントエンドにはそのようなアクセスは必要ありません。

マクロ値には参照パス(例:path:keymacros:password など)を指定する必要があります。 Zabbix サーバー/プロキシの設定時に指定した認証トークン(VaultToken パラメーター)は、このパスへの読み取り専用アクセス権を持っている必要があります。

Zabbix によるマクロ値の処理の詳細については、Vault secret マクロを参照してください。

パス構文

スラッシュ ("/") とコロン (":") の記号は予約されています。

スラッシュは、マウントポイントとパスを区切る場合にのみ使用できます (例: secret/zabbix では、マウントポイントは "secret"、パスは "zabbix")。Vaultマクロの場合、コロンはパス/クエリとキーを区切る場合にのみ使用できます。

スラッシュで区切られた名前のマウントポイントを作成する必要がある場合 (例: foo/bar/zabbix では、マウントポイントは "foo/bar"、パスは "zabbix" であり、"foo%2Fbar/zabbix" のようにエンコードできます)、またはマウントポイント名やパスにコロンを含める必要がある場合は、スラッシュやコロンの記号をURLエンコードすることができます。

  1. Zabbixで、タイプ「Vaultシークレット」のユーザーマクロ{$PASSWORD}を追加し、値をmacros:passwordに設定します。

  1. 必要なシークレットをVaultに作成するために、以下のCLIコマンドを実行します。
# まだ有効化されていない場合は、"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/macros
  1. その結果、Zabbixはマクロ{$PASSWORD}を値<password>に解決します。

既存の設定の更新

HashiCorp Vault からシークレットを取得するための既存の設定を更新するには:

  1. データベース認証情報 セクションで説明されているように、Zabbix サーバーまたはプロキシの設定ファイルパラメーターを更新します。

  2. フロントエンド セクションで説明されているように、Zabbix フロントエンドを再設定し、必要なパラメーターを指定して DB 接続設定を更新します。 Zabbix フロントエンドを再設定するには、ブラウザでフロントエンドセットアップ URL を開きます:

  • Apache の場合: http://<server_ip_or_name>/zabbix/setup.php
  • Nginx の場合: http://<server_ip_or_name>/setup.php

または、これらのパラメーターは フロントエンド設定ファイル (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/';
  1. 必要に応じて、ユーザーマクロ値 セクションで説明されているようにユーザーマクロを設定します。

CyberArk Vault からシークレットを取得するための既存の設定を更新するには、CyberArk の設定 を参照してください。