Webhook を使い、さまざまなサービスを Cloudflare に接続して、Cloudflare アカウントからの通知を受け取れます。Cloudflare アカウントを よく使う Webhook サービス に接続する方法は、次の表を参照してください。
-
Cloudflare ダッシュボードで Notifications ページを開きます。
Notifications を開く ↗ -
Destinations を開きます。
-
Webhooks カードで Create を選択します。
-
あとで識別できるように、Webhook に名前を付けます。
-
URL フィールドに、すでにセットアップ済みで Cloudflare アカウントに接続したいサードパーティサービスの URL を入力します。
-
必要なら Secret を入力します。Secret は Webhook の暗号化方法であり、Cloudflare に接続するサービスによって異なります。
-
Save and Test を選択して、Webhook のセットアップを完了します。
新しい Webhook は Webhooks カードに表示されます。
Webhook で編集できるのは名前だけです。削除もできます。
-
Cloudflare ダッシュボードで Notifications ページを開きます。
Notifications を開く ↗ -
Destinations を開きます。
-
Webhooks カードで、編集したい Webhook の Edit を選択します。
-
Webhook の名前を更新し、Save を選択します。
Webhook は Edit のあとで削除できます。Destinations カードに表示される Webhook 一覧の Delete からも削除できます。
Webhook 通知は Cloudflare の IP 範囲 ↗ から送られます。Webhook エンドポイントがファイアウォールで保護されている場合は、通知を受け取るためにこれらの IP アドレスを許可リストに追加してください。
Cloudflare の IP アドレスの最新一覧をプログラムで取得するには、Cloudflare API を使います。
Cloudflare が現在用意している Webhook でカバーされないサービスを使う場合は、独自に設定 し、有効な Webhook URL を入力できます。
汎用 Webhook では、常に Secret を使うことをおすすめします。Cloudflare は、送信するすべてのリクエストの cf-webhook-auth ヘッダーに Secret を入れます。このヘッダーがない場合、または指定した値と一致しない場合は、Webhook を拒否してください。
Save and Test を選択すると、ポリシーに紐づけられる送信先として Webhook が設定されます。
Cloudflare が送る Webhook のスキーマは次のとおりです。
{
"text": "Hello World! This is a test message sent from https://cloudflare.com. If you can see this, your webhook is configured properly."
}アラート種別ごとのペイロード構造と例は、Webhook ペイロードスキーマのリファレンス を参照してください。
Cloudflare の汎用 Webhook 通知は、公開解決できる IP アドレスのポート 80 または 443 にだけ送られます。
プライベート IP アドレスや別のポートで汎用 Webhook 通知を受け取りたい場合は、Workers で受け取って転送するか、Cloudflare Tunnel を設定して接続済みアプリケーションへルーティングできます。
汎用 Webhook と Cloudflare Workers を組み合わせると、Webhook を受け付ける任意のサービスへ通知を届けられます。
Workers と汎用 Webhook の使い方を理解するための サンプルツール ↗ があります。この例は、汎用 Webhook のレスポンスを変換して Rocket.Chat へ届けるものです。コードには詳しいコメントがあり、自分の用途に合わせて例を改変する手順を案内します。
Google Chat ↗ の場合:
- Secret: Secret は URL の一部です。Cloudflare がこの情報を自動で解析するため、ユーザーの入力は不要です。
- URL: URL は Google Chat チャネルのアドレスによって異なります。
Slack ↗ の場合:
- Secret: Secret は URL の一部です。Cloudflare がこの情報を自動で解析するため、ユーザーの入力は不要です。
- URL: URL は Slack チャネルのアドレスによって異なります。
DataDog ↗ の場合:
- Secret: Secret は必須で、ユーザーが入力する必要があります。DataDog ではこれを API Key ↗ と呼びます
- URL:
https://api.datadoghq.com/api/v1/events
Discord ↗ の場合:
- Secret: Secret は URL の一部です。Cloudflare がこの情報を自動で解析するため、ユーザーの入力は不要です。
- URL: URL は Discord チャネルのアドレスによって異なります。
OpsGenie ↗ の場合:
- Secret: Secret は OpsGenie の REST API 用
API Keyです。 - URL:
https://api.opsgenie.com/v2/alerts
Splunk ↗ の場合:
- Secret: Secret は必須で、ユーザーが入力する必要があります。Splunk ではこれを
tokenと呼びます。詳細は Splunk のドキュメント ↗ を参照してください。 - URL:
- 対応している Splunk エンドポイントは次の 3 つだけです。services/collector、services/collector/raw、services/collector/event。
- トークンで SSL が有効な場合、ポートは 443 である必要があります。トークンで SSL が無効な場合、ポートは 8088 である必要があります。
- サーバー側で SSL を有効にする必要があります。
- Splunk HTTP Event Collector の Enable indexer acknowledgement は無効にする必要があります。
Feishu ↗ の場合:
- Secret: Secret は URL の一部です。Cloudflare がこの情報を自動で解析するため、ユーザーの入力は不要です。
- URL: URL は Custom Robot によって異なります。
Teams ↗ の場合:
- Secret: Secret は URL の一部です。Cloudflare がこの情報を自動で解析するため、ユーザーの入力は不要です。
- URL: Incoming Webhook コネクタを作成したときに Teams が提供する URL です。
ServiceNow ↗ の場合:
- Secret: ユーザーが決めます。Cloudflare Notifications に入力した Secret が ServiceNow と一致するようにしてください。詳細は ServiceNow のドキュメント ↗ を参照してください。
- URL:
https://{servicenow_instance}.com/{base_api_path}
汎用 Webhook の場合:
- Secret: ユーザーが決めます。
- URL: ユーザーが決めます。
Google Chat、Slack、Discord、Feishu の Webhook を作成するとき、Secret は URL の一部です。URL から Secret を取り除き、Cloudflare に自動抽出させる代わりに secret の値を明示的に設定することもできます。
Terraform で Webhook インフラをコードとして定義する場合に便利です。Cloudflare が URL を書き換えません。
resource "cloudflare_notification_policy_webhooks" "example" {
account_id = "<ACCOUNT_ID>"
name = "Slack Webhook"
url = "https://hooks.slack.com/services/T00000000/B00000000"
secret = "<secret>"
}