1 CyberArkの設定

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

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

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

データベース認証情報

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

サーバーとプロキシ

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

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

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

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

例
  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リクエストを送信します。
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. ボールトのレスポンスには "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と連携するように設定されていること。
  • 管理 → 一般 → その他の Vault 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リクエストをボールトに送信します:
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. ボールトのレスポンスには"Content"キーが含まれます:
{
    "Content": <password>,
    "UserName": <username>,
    "Address": <address>,
    "Database" :<Database>,
    "PasswordChangeInProcess":<PasswordChangeInProcess>
}
  1. その結果、Zabbixはマクロ{$PASSWORD}を値-<password>に解決します。

既存の設定の更新

CyberArk 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']                    = '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. 必要に応じて、ユーザーマクロ値のセクションで説明されているように、ユーザーマクロを設定します。

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