Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

13 secrets の保存

概要

HashiCorp Vault KV Secrets Engine - Version 2では、いくつかの機密情報を秘密裏に保存することが可能です。
シークレットは、以下の目的で保存することができます:

  • ユーザーマクロの値
  • データベースアクセスクレデンシャル

Zabbix は Vault 内のシークレットを他の人が管理していると仮定して、読み取り専用アクセスを提供します。

ユーザーマクロ値

ユーザーマクロの値をVaultに秘密裏に保存することが可能です。

"Vault secret" というユーザーマクロの値には 参照パス ('path:key', 例えば "secret/zabbix:password") が含まれます。

以下のコマンドを使用すると、例で述べたパスの値を設定することができます。

# Enable "secret/" mount point if not already enabled, note that "kv-v2" must be used
       $ vault secrets enable -path=secret/ kv-v2
       
       # Put new secret with key password under mount point "secret/" and path "secret/zabbix"
       $ vault kv put secret/zabbix password=<password>
       
       # Test that secret is successfully added
       $ vault kv get secret/zabbix
       
       # Finally test with Curl, note that "data" need to be manually added after mount point and "/v1" before the mount point, also see --capath parameter
       $ curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix

秘密値は設定データを更新するたびに Zabbix server によって取得され、設定キャッシュに保存されます。
参照パスに読み取り専用でアクセスするための認証トークンをサーバ設定( 'VaultToken' パラメータ)で指定する必要があります。
マクロの値が正常に取得できない場合、その値を使用する対応する項目はサポートされなくなります。

また、Vaultから秘密の値を更新することも可能です。
'secrets_reload'コマンドラインoptionを使用することで、Vaultのシークレット値を更新することも可能です。

Zabbix proxy は Vault と通信を行い、データベース認証情報以外のシークレットを取得することはありません。
Zabbix proxy のシークレット値は、設定変更のたびに Zabbix server から取得され、Zabbix server と同じように
設定キャッシュに保存されます。

つまり、Zabbix proxy は再起動後、Zabbix server から初めて設定データの更新を受け取るまでデータ収集を開始することが
できません。Zabbix server と proxy 間の暗号化を有効にする必要があり、有効にしない場合、サーバ警告メッセージが
記録されます。

データベースクレデンシャル

Zabbix server、proxy、フロントエンドで使用するデータベースのクレデンシャルをVaultに密かに保存することが
サポートされています:

  • データベース認証情報を取得するための Vault 関連パラメータは、 フロントエンドのinstallation wizardで任意に入力することができます。

Vault から取得したデータベース証明書は、フロントエンドでキャッシュされます。ファイルシステムの一時ファイル
ディレクトリが、フロントエンドでのデータベースクレデンシャルのキャッシュに使われることに注意してください。
ZBX_DATA_CACHE_TTL constant を使用して、データキャッシュの更新/無効化の
頻度を制御することができます。

  • server / proxy の場合、VaultDBPath 設定パラメータを使用して、キー 'password' と 'username' によるデータベースの 認証情報を取得するパスを指定できます(例: secret/zabbix/database)。

例で述べたパスの値を設定するために、次のコマンドを使用することができます:

# Enable "secret/" mount point if not already enabled, note that "kv-v2" must be used
       $ vault secrets enable -path=secret/ kv-v2
       
       # Put new secrets with keys username and password under mount point "secret/" and path "secret/zabbix/database"
       $ vault kv put secret/zabbix/database username=zabbix password=<password>
       
       # Test that secret is successfully added
       $ vault kv get secret/zabbix/database
       
       # Finally test with Curl, note that "data" need to be manually added after mount point and "/v1" before the mount point, also see --capath parameter
       $ curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database

設定パラメータ

Zabbix server / proxy に、Vault認証とデータベース認証情報の取得のための新しい設定パラメータが追加されました。:

  • VaultToken - Vault認証トークン(詳細はZabbix server / proxy 設定ファイルを参照してください)
  • VaultURL - Vault サーバの HTTP[S] URL
  • VaultDBPath - データベースの認証情報を取得するための Vault のパス(例: secret/zabbix/database)

Zabbix server とZabbix proxy は、起動時に zabbix_server.conf と zabbix_proxy.conf から Vaul t関連の設定パラメータを
読み取ります。

Zabbix server と Zabbix proxy は、起動時に VAULT_TOKEN 環境変数を読み込み、フォークされたスクリプトで
使用できないように設定を解除します。

フォワードスラッシュとコロンは予約済みシンボルです。フォワードスラッシュは、マウントポイントとパスの区切りにのみ
使用できます(例: secret/zabbix はマウントポイントが secret、zabbix がパス)
Vault マクロの場合、パスとキーの区切りにはコロンのみを使用できます。マウントポイントをフォワードスラッシュで
区切った名前で作成する必要がある場合(例:マウントポイントが "foo/bar"、パスが "zabbix" の場合は "foo%2Fbar/zabbix" )、 マウントポイント名またはパスにコロンが必要な場合は "/" ":" をURLエンコードすることが可能です。

TLSの設定

証明機関(CA)によって署名された証明書は、デフォルトのCAストアに追加する必要があります。または、
SSLCALocation 構成パラメータを使用して、カスタム CA ストアの場所を指定することもできます。
この場合、証明書ディレクトリは openssl c_rehash ユーティリティを使用して準備する必要があります。
例えば、SSLCALocation を設定し、そのディレクトリ内に "ca.pem" をコピーして、次のコマンドを実行します。

$ c_rehash .