Webhooks#

Webhookを使用して、構成済みのアプリケーションのしきい値違反に関するアラートイベントの通知を受信するようにPEMサーバーを構成する必要があります。

Webhookの作成#

PEMは、ユーザーの注意を必要とする条件がシステムを監視します。 Webhookを使用して、現在の値がアラート定義で指定されたしきい値から逸脱した場合に通知を受信するエンドポイントを作成できます。トリガーされたイベントに基づいて、PEMは複数のWebhookエンドポイントまたは特定のターゲットWebhookエンドポイントに通知を送信します。

Webhooks タブを使用して、エンドポイントの受信者を構成します。 [ Webhooks ]タブを開くには、 Management > Alerts > Manage Alerts を選択します。 [ Manage Alerts ]タブの[Quick Links]ツールバーで、[ Webhooks ]を選択します。

[ Webhooks ]タブには、エンドポイントとして現在定義されている受信者アプリケーションのリストが表示されます。エンドポイントを選択し、行の左端にある Edit を選択して、既存のエンドポイントを変更します。

新しいWebhookを定義するには、テーブルの右上隅にあるプラス記号+を選択します。次に、 General タブを使用して、Webhookの基本的な詳細を定義できます。

  • Webhookの名前を Name フィールドに入力します。

  • URL フィールドに、すべての通知を配信するWebhook URLを指定します。

  • Request Method フィールドで、呼び出しに使用される要求方法タイプを設定します POST または PUT 。

  • デフォルトでは、Webhookは有効になっています。 Webhookを無効にするには、 Enable? を No に設定します。

注釈

**Enable?**設定は、agent.cfg ファイルで`enable_webhook` パラメーターが`true` に設定されている場合にのみ機能します。デフォルトでは、enable_webhook パラメーターは、PEMサーバーホストで実行されているエージェントに対してのみ`true` に設定されます。他のホストで実行されている他のすべてのエージェントの場合、手動で`true` に設定する必要があります。

Webhook SSL構成の定義#

Windowsの各エージェント構成ファイルまたはレジストリでWebhook SSLパラメーターを定義できます。 Webhook SSLパラメーターのリストは Modifying agent configuration にあります。エージェント構成パラメーターを追加または削除した場合、エージェントを再起動してそれらを適用する必要があります。

  • Windowsシステムでは、WebhookのPEMレジストリエントリはHKEY_LOCAL_MACHINE\Software\EnterpriseDB\PEM\agent\WEBHOOK にあります。

  • Linuxシステムでは、WebhookのPEM構成オプションはagent.cfg file に保存されます。デフォルトで/usr/edb/pem/agent/etc にあります。

Example - Webhook SSL Parameters in agent.cfg file

Example - Webhook SSL Parameters in agent.cfg file#

Example - Webhook SSL Parameters in windows registry

Example - Webhook SSL Parameters in windows registry#

Webhookヘッダーの定義#

[ HTTP Headers ]タブを使用して、Webhookエンドポイントの呼び出し中に渡すヘッダーパラメーターを定義します。

  • すべての値をキーと値のペアとして指定します。

  • Key フィールドにキーパラメーターを指定し、 Value フィールドに値を指定します。

  • HTTPヘッダーを追加するには、HTTP Headersテーブルの右上隅にあるプラス記号+を選択します。

  • HTTPヘッダーを削除するには、 Key の左側にある Delete を選択します。ヘッダーはリストに残りますが、取り消し線フォントになります。 Save を選択して、ヘッダーを完全に削除します。

  • HTTPヘッダーを編集するには、 Key の左側にある Edit を選択します。

Webhookペイロードの定義#

Payload タブを使用して、アラートがトリガーされたときにエンドポイントに送信するJSONデータを定義します。

  • Type は、形式タイプJSONで送信するデータを指定します。

  • テンプレート を使用して、エンドポイントに送信されるJSONデータを構成します。テンプレートでは、次のプレースホルダーを使用できます。

  • %AlertID% -トリガーされたアラートのID。

  • %AlertName% -トリガーされたアラートの名前。

  • %ObjectName% -アラートがトリガーされたサーバーまたはエージェントの名前。

  • %ObjectType% -アラートが生成されたタイプ。

  • %ThresholdValue% -アラートがトリガーされたときにメトリックが到達したしきい値。

  • %CurrentValue% -アラートをトリガーしたメトリックの現在値。

  • %CurrentState% -アラートの現在の状態。

  • %OldState% - アラートの以前の状態アラートが生成されたエージェントの名前。

  • %ServerID% -アラートが生成されたサーバーのID。

  • %ServerName% -アラートが生成されたサーバーの名前。

  • %ServerIP% -アラートが生成されたサーバーのIPまたはアドレス。

  • %ServerPort% -アラートが生成されたサーバーのポート。

  • %DatabaseName% -名前アラートが生成されたデータベースの。

  • %SchemaName% -アラートが生成されたスキーマの名前。

  • %PackageName% -アラートが生成されたパッケージの名前。

  • %DatabaseObjectName% -データベースオブジェクトの名前、アラートが生成されたテーブル名またはファンクション名など。

  • %Parameters% -アラートを生成するために使用されるカスタムパラメーターのリスト。

  • %AlertInfo% -アラートの詳細なデータベースオブジェクトレベル情報。

  • Test Connection を選択して、記載されたエンドポイントへの通知配信をテストします。

Webhookアラートレベルの定義#

Notifications タブを使用して、Webhookエンドポイントのアラートレベルを指定します。

  • すべてのアラートレベルで通知を送信できるようにするには、 すべてのアラート を Yes に設定します。

  • 特定のアラートレベルに到達したときに通知を送信するには、アラートレベルの横にあるスライダーを Yes に設定します。個々のアラートレベルを構成するには、 すべてのアラート を No に設定する必要があります。

例slackに通知を送信する#

Slackでは、 Getting started with incoming webhooks の指示に従って、次のことを行います。

  • Slackアプリを作成します。

  • そのアプリの着信Webhookをアクティブにします。

  • 選択したチャンネルまたはユーザーに投稿するWebhookを追加します。

新しいWebhookには、https://hooks.slack.com/services/x/y/z のような一意のURLがあります。このURLに通知を送信するようにPEMを構成できるようになりました。

PEM Webhookの作成 で、わかりやすい名前を付け、前に取得したURLを URL フィールドにコピーします。 Request Method が POST に設定され、 Enable? が Yes に設定されていることを確認します。 Alert Notifications の下のすべてのスライダーを Yes に設定します。

HTTPヘッダーの下に、キーContent-Type と値application/json を使用してヘッダーを追加します。

Payload の下で、デフォルトのテンプレートを削除し、次の例のようにtext をトップレベルキーとしてテンプレートを指定します。

{"text": "%AlertName% on %ObjectType% %ObjectName% is now %CurrentState%"}

これで、接続をテストできます。成功した場合、PEMは通知を発行し、指定したテンプレートがメッセージとしてSlackチャネルに表示されます。

Webhookを保存し、通常のようにPEMの使用を続行します。 PEMはすべてのアラートをSlackチャネルに送信するようになりました。

Webhookの削除#

削除のWebhookをマークするには、WebhooksテーブルでWebhook名前を選択し、名前の左側にある Delete を選択します。アラートはリストに残りますが、取り消し線フォントになります。

Delete はトグルです。 2度目に Delete を選択することにより、削除を元に戻すことができます。 Save を選択して、Webhook定義を完全に削除します。

OAuthを使用したWebhook要求の認証#

WebhookエンドポイントにOAuthが構成されている場合

  1. 通知を送信する前に、PEMはOAuthプロバイダーからアクセストークンを要求します

  2. トークンは自動的にキャッシュされ、有効期限が切れるまで再利用されます

  3. アクセストークンは、要求にBearer トークンとして含まれます

  4. 認証が失敗した場合、PEMは自動的にトークンを更新し、再試行します

前提条件#

WebhookのOAuthを構成する前に、次のものが必要です。

  1. PEMの既存のWebhookエンドポイント

  2. アイデンティティプロバイダーからのOAuthクライアント資格情報

  • クライアントID

  • クライアントシークレット

  • トークンURL 承認サーバーエンドポイント

  1. オプション Scopes および Audience 値プロバイダーによって異なります。

  2. PEMホストにアクセスしてpemEncryptor ユーティリティを実行する

  3. pem_admin ロールを持つユーザーまたはスーパーユーザーとしてPEMバックエンドデータベースにアクセスします。

資格情報の暗号化#

client_id およびclient_secret は、データベースに保存する前に暗号化する必要があります。 PEMサーバーの/usr/edb/pem/bin/ にあるpemEncryptor ユーティリティを使用します。

ステップ1クライアントIDを暗号化する

export PEM_ENC_PAYLOAD=your-client-id
/usr/edb/pem/bin/pemEncryptor

次のセクションで使用する暗号化された出力を保存します。

ステップ2クライアントシークレットを暗号化する

export PEM_ENC_PAYLOAD=your-client-secret
/usr/edb/pem/bin/pemEncryptor

次のセクションで使用する暗号化された出力を保存します。

OAuth構成の追加#

SQLを使用して、既存のWebhookのOAuthを構成します。 <encrypted_client_id> および<encrypted_client_secret> をpemEncryptor から取得した値に置き換えます。

INSERT INTO pem.webhook_oauth_config (
    webhook_id,
    token_url,
    client_id,
    client_secret,
    scope,
    audience,
    auth_method
)
VALUES (
    <webhook_id>,
    <token_url>,
    <encrypted_client_id>,
    <encrypted_client_secret>,
    <scopes>,                  -- Optional, can be NULL
    <audience>,                -- Optional, can be NULL
    client_secret_basic        -- Optional, defaults to client_secret_basic
);

構成パラメーター#

Parameter

Required

Default

Description

webhook_id

Yes

—

WebhookエンドポイントのID

token_url

Yes

—

OAuthトークンエンドポイントURL

client_id

Yes

—

OAuthクライアントID暗号化する必要があります

client_secret

Yes

—

OAuthクライアントシークレット暗号化する必要があります

scope

No

NULL

スペースで区切られたOAuthスコープ

audience

No

NULL

ターゲットAPI識別子設定されていない場合は自動派生

auth_method

No

client_secret_basic

資格情報がトークンエンドポイントに送信される方法以下を参照してください。

認証方法RFC 6749#

PEMは、RFC 6749セクション2.3で定義された2つの標準のクライアント認証方法をサポートしています。

Value

Description

When to use

client_secret_basic

HTTP Basic Authヘッダーを介して送信される資格情報RFC推奨

Default — works with most providers

client_secret_post

POST要求本文で送信される資格情報

Use only when your provider requires it (e.g., some custom OAuth servers)

注釈

ほとんどのプロバイダーAuth0、Okta、Azure AD、Keycloakは、両方の方法をサポートしています。 AWS Cognitoには`client_secret_basic` が必要です。よくわからない場合は、デフォルトを使用します。

構成の更新#

- - Update scopes
UPDATE pem.webhook_oauth_config
SET scope = api:read api:write,
    modified_on = CURRENT_TIMESTAMP
WHERE webhook_id = 1;

- - Update token URL
UPDATE pem.webhook_oauth_config
SET token_url = https://new-auth.example.com/oauth/token,
    modified_on = CURRENT_TIMESTAMP
WHERE webhook_id = 1;

OAuth構成の削除#

WebhookのOAuth認証を無効にするには

DELETE FROM pem.webhook_oauth_config WHERE webhook_id = 1;