Webhookを介して各種通知を送信する

Prev Next

概要

Cato管理アプリケーション (CMA) は、アカウント内の幅広いセキュリティおよびネットワークイベントに対して通知を生成します。 Webhookの統合を使用して、ServiceNow、Jira、Slack、Zendeskなどのサードパーティプラットフォームにこれらの各種通知を自動的に配信できます。 これにより外部システムは、Catoイベントデータをリアルタイムで受信し、インシデントのトラッキングと対応のための自動ワークフローを起動できます。

Catoは、二種類のWebhook統合をサポートしています:

  • 標準的なWebhookは、外部プラットフォーム内のアイテムを作成または更新するためにHTTPリクエストを使用する。 

  • 相関WebhooksはXOpsサービスと統合します。 相関IDを使って、サードパーティツール内のXOpsセキュリティおよびネットワークストーリーのライフサイクルを表す項目を作成し、更新します。 XOpsライセンスが必要です。

Webhookの統合は、完全に設定可能です。 HTTPメソッド (POSTまたはPUT)、対象のURL、認証方法、およびリクエストの内容を定義します。 テンプレートとフィールド変数を利用して、サードパーティプラットフォームの要件に合わせてペイロードの構造をカスタマイズできます。

Cato Webhook統合の理解

Webhook統合の種類

Catoでは、サードパーティプラットフォームとアカウントを統合し、自動化フローを作成できるWebhookの種類をサポートしています:

  • 標準的なWebhooksは、アカウントまたはシステムアラートに基づく各種通知や、ポリシーに基づく通知など、幅広いCMA通知をサポートします。 これにより、これらのデータを外部プラットフォームに配信することができ、Webhookが新しいレコードを作成するか、既存のレコードを更新するかを設定することができます。

  • 相関Webhooksは、XOpsサービス向けに設計されています。 これにより、CMAの各ストーリーが外部システムのレコードにマッピングされ、ストーリーが進行するごとに更新されます。 XOpsライセンスが必要です。

Webhookフロー - 作成または更新

WebhookフローはCMAがサードパーティプラットフォームとどのように通信するかを定義します: 新しいレコードを作成するか既存のレコードを更新するかによって:

  • POST (作成) - Webhookがトリガーされるたびにサードパーティプラットフォームに新しいアイテムを作成します。 例: インターネットファイアウォールのルールがトラフィックフローをブロックするたびに、新しいServiceNowチケットを開きます。

  • PUT (更新) – サードパーティプラットフォーム内の既存のアイテムを更新します。 リクエストには、有効なアイテムIDがURLまたはボディ内に含まれています。

認証方法

Webhook統合を作成する際に選択できる異なる認証方法があります:

  • ベーシック - ユーザー名とパスワード

  • ベアラ - ベアラトークン

  • カスタム - 独自の認証を必要とするサービスのカスタムヘッダー。 必要に応じてキーバリューペアを追加します。

注: サードパーティサービスへのアクセスが特定のIPアドレスに限定されている場合は、この 記事をご参照ください。許可する必要があるCato IPアドレスのリストが表示されます(この記事を表示するには、サインインが必要です)。

通知コンテンツのカスタマイズ

テンプレート内の content フィールドには、メールアラートの内容に似たアラートの生成された読みやすい要約が含まれています。 コンテンツの形式は次の中から選択できます: contentText、contentMarkdown、または contentHTML。

ボディをカスタマイズする場合、メッセージコンテンツで使用できるデータフィールドが多数あります。 カスタムボディ(または構造) を定義し、Catoデータフィールドを埋め込むことができます。 $を入力すると、使用可能なデータフィールドが表示され、必要なフィールドを選択します。 フィールドは、リストをフィルタリングするためにオートコンプリートを利用します。 Catoフィールドに関する詳細については、 アラートインテグレーション向けJSONフィールドの理解をご覧ください。

Webhookフィールドのデフォルト値

通知データが値を含まない場合に柔軟に対処するために、動的Webhookフィールドのためのカスタムデフォルト値を設定できます。 Webhook URL、ヘッダー、またはボディのデフォルトの NA 値を上書きすることができます。 フォールバック値を定義するために${field:defaultValue} フォーマットを使用します。 例として、${level:medium} を設定することができます。 相関フローでは、https://EXAMPLE-INSTANCE.service-now.com/api/now/table/incident/${correlationId:12345} のようなWebhook URL内でフォールバックチケットIDを使用することもできます。この設定により、通知がデフォルトのServiceNowチケットに安全に記録されます。

標準Webhook統合

まず、プラットフォームと統合するためのWebhookを定義します。 その後、FirewallのアクションなどのCMA通知およびポリシールールを選択し、それらをWebhookを使用して生成するかどうかを定義します。 それから、どのCMA通知やポリシールール、例えばファイアウォールのアクションがWebhookを使って通知を生成するかを選択します。

Webhook統合を定義する

Webhookを設定してPOSTリクエストによる新規アイテムの作成またはPUTリクエストによる既存アイテムへの更新を行うことができます。 統合にはURL、リクエストボディ、認証方法、オプションのカスタムヘッダーやメッセージボディの設定が含まれます。 詳細を定義した後、接続をテストして正常に作動するかを検証することができます。

詳細を定義した後、接続をテストして正常に作動するかを確認できます。

Webhook統合を定義するには:

  1. ナビゲーションメニューから アカウント > サブスクリプション をクリックし、Webhooks タブを選択します。

  2. 新しいWebhook統合 パネルが開きます。 新しいWebhook統合 パネルが開きます。

  3. Webhook詳細 を設定します:

    1. 統合の 名前を入力します。

    2. スライダーをクリックして有効(緑)または無効(灰色)を選択します(デフォルトでは有効になっています)。

  4. JSONテンプレートの設定を統合用に構成します:

    • テンプレートから開始で、統合設定を入力するデフォルトのJSONテンプレートを選択します。

      カスタムボディ のフィールドを調整および変更することができます(下記手順 7 を参照)。

    注意: 違うテンプレートを選択した場合、カスタムボディ のフィールドはリセットされます。 テンプレートについて詳しくは、以下 テンプレートとフィールドをご覧ください。

  5. 接続詳細 を構成します:

    1. Webhookを受信しているサービスの URL を入力します。

      フィールドを変数としてURL内に使用することができます。 $を入力して利用可能なフィールドを表示します。

    2. リクエストメソッドでこのWebhookのフローを選択します: POST または PUT。

    3. 必要に応じて、サービスのための認証方法と設定を構成します。

  6. (任意) カスタムヘッダーで、それぞれの追加HTTPヘッダー用のキーと値を定義します。

  7. カスタムボディで、Webhook通知のコンテンツを定義します:

    1. (任意) ボディを編集でコンテンツをカスタマイズします。

      • エスケープ文字として / を使用し、ボディ内で$を使用します。

      • $を入力して他のフィールドを埋め込みます

      レスポンスコリレーションIDは、標準Webhook統合では使用されません。

    2. デフォルト値を定義するために、フォーマット ${field:defaultValue} を使用します。

  8. テストをクリックします。 CMAは、フィールドの自動生成された内容でテストHTTPリクエストを送信します。

    統合がサービスと接続できる場合、テストが正常に完了しましたというメッセージが表示されます。

    接続エラーが発生した場合、ページにはサービスで報告されたHTTPエラーコードとメッセージが表示されます。

  9. 保存をクリックします。 Webhookの統合が保存され、サブスクリプションページ内の統合タブに追加されます。

標準Webhook統合のトリガーを定義する

標準のWebhookは、CMAの通知によって起動されます。 2つのタイプの通知を設定できます:

  1. これらの通知はWebhook統合を通じて直接送信できます。 これらの通知はWebhook統合を使用して直接送信できます。

    詳しくは、アカウントレベルのアラートとシステム通知をご覧ください。

  2. ポリシー内でルールを定義する際に、アクション領域を使用してWebhook統合を通して通知を送信できます。

ルールでアクションを定義する際に、Webhook統合を通して通知を送信するための アクション エリアを使用することができます。

rule_webhook.png

相関Webhook統合

XOpsサービスは、XOpsセキュリティとネットワークストーリーのライフサイクルを第三者プラットフォームと統合する相関Webhooksをサポートしています。 これにより、更新が常に正しいアイテムに確実に適用されます。

これらの統合は、 XOps Stories からの関連フィールドを使用して、CMA内の各ストーリーを外部プラットフォーム内のチケット、 問題、またはメッセージにマッピングします。 これにより、更新が正確なアイテムに確実に適用されることが保証されます。 XOpsライセンスが必要です。

これらの統合には次のものが必要です:

  • 標準Webhook統合

  • 標準Webhookの定義

  • トリガーの2種類(各統合用)

標準Webhookを定義する

標準Webhook統合を作成して、サードパーティツールで最初のアイテム(チケット、Slackメッセージなど)を作成します。 それらのアイテムは、その後、相関Webhook統合によって更新されます。

詳細を定義した後、接続をテストしてそれが機能するかを確認できます。

標準Webhook統合を定義するには:

  1. ナビゲーションメニューから アカウント > サブスクリプション をクリックし、Webhooks タブを選択します。

  2. 新しいWebhook をクリックします。 統合の 名前を入力します。

  3. Webhook詳細 を設定します:

    1. 統合の 名前を入力します。

    2. スライダーをクリックして有効(緑)または無効(灰色)を選択します(デフォルトでは有効)。

  4. JSONテンプレートの設定を統合用に構成します:

    • テンプレートから開始で、統合設定を入力するデフォルトのJSONテンプレートを選択します。

      カスタムボディ のフィールドを調整および変更することができます(下記手順 7 を参照)。

    注意: 違うテンプレートを選択した場合、カスタムボディ のフィールドはリセットされます。 テンプレートについて詳しくは、以下 テンプレートとフィールドをご覧ください。

  5. 接続詳細 を構成します:

    1. Webhookを受信しているサービスの URL を入力します。

      URLに項目を変数として使用できます。 利用可能な項目を表示するには、$をタイプしてください。

    2. リクエストメソッドで、POSTを選択します。

    3. 必要に応じて、サービスの認証方法および設定を構成します。

  6. (オプション) カスタムヘッダーで、統合用に各追加のHTTPヘッダーのキーと値を定義します。

  7. カスタムボディで、Webhook通知のコンテンツを定義します:

    1. レスポンス相関IDで、URLでの相関に使用するサードパーティのアイテムを定義します。 たとえば、ServiceNowではresult.sys_id、Zendeskではticket.idになる可能性があります。

    2. (オプション) 編集ボディでコンテンツをカスタマイズします。

      • /をエスケープ文字として入力し、本体で$を使用します。

      • $を入力して他の項目を埋め込みます

    3. デフォルト値を定義するには、${field:defaultValue}の形式を使用します。例えば、${ID:12345}

  8. テストをクリックします。 CMAが自動生成したコンテンツで項目に対するテストHTTPリクエストを送信します。

    統合がサービスに接続できる場合、テストが正常に完了しましたというメッセージが表示されます。

    接続エラーがある場合、ページはHTTPエラーコードとサービスから報告されたメッセージを表示します。

  9. 保存をクリックします。 Webhook統合が保存され、統合タブに追加されます。

相関Webhookを定義する

前の手順で作成した既存の項目を更新することで、サードパーティ ツール内で項目 (チケット、Slackメッセージなど) を介して通知を送信する相関Webhook統合を作成します。

相関Webhookを設定すると、URLは相関IDを使用してサードパーティプラットフォーム上の正しい項目を更新します。 相関IDの値が空の場合、更新は既存の項目に一致せず、失われます。 これを防ぐために、標準のWebhookのカスタムボディにアイテムIDを追加します。 これにより、相関WebhookがそのIDを相関フィールドのフォールバック値として使用できるため、後の更新がストーリーのライフサイクル全体で元の項目に引き続き適用されます。

詳細を定義した後、接続をテストし、動作を確認できます。

相関Webhook統合を定義するには:

  1. ナビゲーションメニューから、アカウントをクリックし、Webhookタブを選択します。

  2. 新しいWebhookをクリックします。 新しいWebhook統合パネルが開きます。

  3. Webhookの詳細を設定します:

    1. 統合の名前を入力します。

    2. スライダーをクリックして統合を有効(緑色)または無効(灰色)にします(デフォルトでは有効になっています)。

  4. 統合のJSONテンプレートの設定を構成します:

    • テンプレートから開始でデフォルトのJSONテンプレートを選択し、統合設定を入力します。

      以下のステップ7を参照し、カスタムボディの項目を調整および変更できます。

    注:異なるテンプレートを選択した場合、カスタムボディの項目がリセットされます。 テンプレートに関する詳細情報は、以下の テンプレートと項目をご覧ください。

  5. 接続詳細を設定します:

    1. Webhookを受け取るサービスのURLを入力します。 相関アイテムIDフィールドを追加して、既存アイテムと相関させます。

      フィールドをURLの変数として使用できます。 「$」をタイプして利用可能な項目を確認します。

    2. リクエストメソッドで、PUTを選択します。

    3. 必要に応じて、サービスの認証メソッドおよび設定を構成します。

  6. (オプション) カスタムヘッダーで、統合用にそれぞれ追加のHTTPヘッダーのキーと値を定義します。

  7. カスタムボディで、Webhook通知のコンテンツを定義します:

    1. (オプション) 編集ボディでコンテンツをカスタマイズします。

      • /をエスケープ文字として入力し、本体で$を使用します

      • $を入力して他の項目を埋め込みます

    2. デフォルトの値を定義するには、${field:defaultValue}の形式を使用します。例えば、${ID:12345}

  8. テストをクリックします。 CMAが自動生成したコンテンツで項目に対するテストHTTPリクエストを送信します。

    統合がサービスに接続できる場合、テストが正常に完了しましたというメッセージが表示されます。

    接続エラーがある場合、ページはHTTPエラーコードとサービスから報告されたメッセージを表示します。

  9. 保存をクリックします。 Webhook統合が保存され、統合タブに追加されます。

標準Webhook統合のトリガーを定義する

標準のWebhookはCMAからの通知によってアクティブ化されます。 2種類の通知を構成できます:

  1. CMA通知:アカウントに関する情報、例えばロックされたユーザーや管理者、ライセンスの更新をCMAが積極的に送信できます。 これらの通知はWebhook統合を通じて直接送信できます。

    詳細情報は、アカウントレベルのアラートおよびシステム通知を参照してください。

  2. ポリシールール通知:ルールが一致するたびにWebhookに通知を送信するために、ポリシールールでトラック設定を構成できます。

ポリシーでルールを定義する際に、アクションエリアを使用してWebhook統合を介して通知を送信できます。

rule_webhook.png

相関統合のトリガーを定義し、検知・対応通知を利用して決める。

検知と対応のポリシーを使用すると、相関するXOpsストーリーのためにサードパーティプラットフォームで項目の作成と更新を自動化できます。 外部システムが常に現在のストーリーのステータスを反映するようになります。

ポリシーにルールを設定して次のことを行います:

  • ストーリーが作成されたときに、新しいアイテムを作成するための相関Webhookをトリガーします

  • ストーリー進行中に同じアイテムを更新するための相関Webhookをトリガーします

ストーリーが同期されるように、ストーリーの開始時にアイテムを作成するルールと、ストーリーが変更されたときにそれを更新するルールを構成します。

Webhook通知のトリガーを定義するには:

  1. ナビゲーションメニューから、ホーム > 検知 & 対応ポリシーをクリックします。

  2. 対応ポリシータブを選択します。

  3. 新規をクリックします。 対応ポリシーに追加パネルが開きます。

  4. ルールのための名前を入力します。

  5. ソースセクションでタイプ(例:ホスト, IP範囲, サイト)を選択し、ストーリーソースとしてルールに対する1つ以上のオブジェクトを選択します(またはIPアドレスを入力できます)。

    デフォルトのソース値はすべてです。

  6. (オプション)ルールに一致するために必要なストーリーの特性を定義する基準を特定します。

  7. ルールのトリガーを選択します。 

    • 新しい項目を作成するためのストーリー作成。

    • 既存のアイテムを更新するためのストーリー更新。

  8. 対応タブで、通知を送信を選択します。

  9. 通知の送信先で、統合を選択してください。

  10. 統合で通知を送信しているWebhook統合を選択します。

  11. 保存をクリックします。 このルールがポリシーに追加されます。

テンプレートと項目

各Webhookは、サードパーティシステムのフォーマットと動作に合わせて完全にカスタマイズ可能です。 WebhookはJSON形式で提供されており、対象プラットフォーム構造に適合するように調整できます。 静的および動的なペイロードの両方にCatoフィールド変数を使用します。

テンプレートを選択した後、JSONペイロードとして本体を編集し、カスタムテンプレートとして保存できます。 また、JSONにデータフィールドを埋め込むオプションがあり、適切な値がペイロードに含まれます(または利用不可の場合はNAとなります)。

「$」を入力すると、利用可能な項目が表示されます。 Cato項目に関する詳細情報は、アラート統合のためのJSONフィールドを理解するを参照してください。

Webhookを作成するときにこれらのテンプレートから選択できます:

  • すべての項目 - すべての利用可能な項目が含まれます

  • 基本 - 最もよく使用される項目を含むテンプレート

  • Jira - 基本的なJiraテンプレート

  • サービスNow チケット作成 - ServiceNowで新しいチケットを作成します

  • サービスNow チケット更新 - ServiceNow内の既存のチケットを更新します

  • Slack - Slackチャネルにメッセージを送信します

  • Zendesk チケット作成 - Zendeskで新しいチケットを作成します

  • Zendesk チケット更新 - 既存のZendeskチケットを更新します

  • カスタム - テンプレートの設定をカスタマイズします

Webhook統合のURLを定義する際にフィールドも使用できます。