CyberArkの設定

このセクションでは、ZabbixがCyberArk Vault CV12からシークレットを取得するように設定する方法を説明します。

Vaultは、公式のCyberArk documentationに記載されているとおりにインストールおよび設定されている必要があります。

ZabbixでのTLS設定については、Storage of secretsを参照してください。

データベース認証情報

データベース認証情報を含むシークレットへのアクセスは、各 Zabbix コンポーネントごとに個別に設定されます。

サーバーとプロキシ

Zabbix サーバー または プロキシ 用に、vault からデータベース認証情報を取得するには、設定ファイルに次の設定パラメータを指定します。

  • Vault - 使用する vault プロバイダー;
  • VaultURL - vault サーバーの HTTP[S] URL;
  • VaultDBPath - データベース認証情報を含む vault シークレットへのクエリ。取得されるキーは "Content" と "UserName" です(このオプションは DBUser と DBPassword が指定されていない場合にのみ使用できます);
  • VaultTLSCertFile, VaultTLSKeyFile - SSL 証明書およびキーのファイル名。これらのオプションの設定は必須ではありませんが、強く推奨されます;
  • VaultPrefix - vault に応じた vault パスまたはクエリのカスタムプレフィックス。指定されていない場合は、最適なデフォルトが使用されます。

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

Zabbix サーバーと Zabbix プロキシは、起動時に zabbix_server.conf および zabbix_proxy.conf ファイルから vault 関連の設定パラメータを読み込みます。

  1. zabbix_server.conf で、以下のパラメータを指定します:
Vault=CyberArk
VaultURL=https://127.0.0.1:1858
VaultDBPath=AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix_server_database
VaultTLSCertFile=cert.pem
VaultTLSKeyFile=key.pem
VaultPrefix=/AIMWebService/api/Accounts?
  1. Zabbix は、以下の API リクエストを vault に送信します:
curl \
--header "Content-Type: application/json" \
--cert cert.pem \
--key key.pem \
https://127.0.0.1:1858/AIMWebService/api/Accounts?AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix_server_database
  1. vault の応答には、"Content" と "UserName" のキーが含まれます:
{
    "Content": <password>,
    "UserName": <username>,
    "Address": <address>,
    "Database": <Database>,
    "PasswordChangeInProcess":<PasswordChangeInProcess>
}
  1. その結果、Zabbix はデータベース認証に以下の認証情報を使用します:
  • ユーザー名: <username>
  • パスワード: <password>

Webインターフェース

Zabbix Webインターフェースのデータベース認証情報を vault から取得するには、Webインターフェースのインストール時に次のパラメータを指定します。

  1. Configure DB Connection ステップで、Store credentials in パラメータを "CyberArk Vault" に設定します。

  1. 次に、追加パラメータを入力します。
Parameter Mandatory Default value Description
Vault API endpoint yes https://localhost:1858 vault に接続するための URL を scheme://host:port 形式で指定します
Vault prefix no /AIMWebService/api/Accounts? vault パスまたはクエリのカスタムプレフィックスを指定します。指定しない場合は、デフォルトが使用されます。
Vault secret query string yes データベース認証情報をどこから取得するかを指定するクエリです。
例: AppID=foo&Query=Safe=bar;Object=buzz
Vault certificates no チェックボックスをオンにすると、クライアント認証を設定するための追加パラメータが表示されます。このパラメータは任意ですが、CyberArk Vault との通信では有効にすることを強く推奨します。
SSL certificate file no conf/certs/cyberark-cert.pem SSL 証明書ファイルへのパスです。ファイルは PEM 形式である必要があります。
証明書ファイルに秘密鍵も含まれている場合は、SSL key file パラメータを空欄のままにしてください。
SSL key file no conf/certs/cyberark-key.pem クライアント認証に使用する SSL 秘密鍵ファイル名です。ファイルは PEM 形式である必要があります。

ユーザーマクロの値

Vault secret のユーザーマクロ値を保存するために CyberArk Vault を使用するには、次の条件を満たしていることを確認してください。

  • Zabbix サーバーが CyberArk Vault と連携するように設定されていること。
  • Administration > General > OtherVault provider パラメータが "CyberArk Vault" に設定されていること。

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

マクロ値にはクエリ(query:key 形式)を含める必要があります。

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

クエリ構文

コロン記号(":")は、クエリとキーを区切るために予約されています。

クエリ自体にスラッシュまたはコロンが含まれる場合は、これらの記号をURLエンコードする必要があります("/" は "%2F" に、":" は "%3A" にエンコードされます)。

  1. Zabbixで、タイプが Vault secret のユーザーマクロ {$PASSWORD} を追加し、値を AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content に設定します。

  1. Zabbixは、次のAPIリクエストをvaultに送信します。
curl \
--header "Content-Type: application/json" \
--cert cert.pem \
--key key.pem \
https://127.0.0.1:1858/AIMWebService/api/Accounts?AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix_server_database
  1. vaultの応答には、キー "Content" が含まれます。
{
    "Content": <password>,
    "UserName": <username>,
    "Address": <address>,
    "Database" :<Database>,
    "PasswordChangeInProcess":<PasswordChangeInProcess>
}
  1. その結果、Zabbixはマクロ {$PASSWORD} を次の値に解決します - <password>

既存の設定の更新

CyberArk Vault からシークレットを取得するための既存の設定を更新するには、次の手順を実行します。

  1. Database credentials セクションで説明されているとおり、Zabbix サーバーまたはプロキシの設定ファイルのパラメータを更新します。

  2. Frontend セクションで説明されているとおり、Zabbix Webインターフェースを再設定して必要なパラメータを指定し、DB 接続設定を更新します。
    Zabbix Webインターフェースを再設定するには、ブラウザで Webインターフェースのセットアップ URL を開きます。

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

または、これらのパラメータは Webインターフェース設定ファイル (zabbix.conf.php) で設定できます。

$DB['VAULT']                    = 'CyberArk';
$DB['VAULT_URL']                = 'https://127.0.0.1:1858';
$DB['VAULT_DB_PATH']            = 'AppID=foo&Query=Safe=bar;Object=buzz';
$DB['VAULT_TOKEN']              = '';
$DB['VAULT_CERT_FILE']          = 'conf/certs/cyberark-cert.pem';
$DB['VAULT_KEY_FILE']           = 'conf/certs/cyberark-key.pem';
$DB['VAULT_PREFIX']             = '';
  1. 必要に応じて、User macro values セクションで説明されているとおり、ユーザーマクロを設定します。

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