ウェブフックの設定
Cloudflareに接続して、Cloudflareアカウントから通知を受け取るために、さまざまなサービスにウェブフックを接続できます。以下の表を参照して、Cloudflareアカウントを人気のウェブフックサービスに接続する方法を学んでください。
- Cloudflareダッシュボード ↗にログインし、アカウントを選択します。
- 通知 > 宛先に移動します。
- ウェブフックカードで、作成を選択します。
- 後で識別するためのウェブフックの名前を付けます。
- URLフィールドに、以前に設定したサードパーティサービスのURLを入力し、Cloudflareアカウントに接続します。
- 必要に応じて、Secretを挿入します。Secretsはウェブフックが暗号化される方法であり、Cloudflareに接続するサービスによって異なります。
- 保存してテストを選択して、ウェブフックの設定を完了します。
新しいウェブフックは、ウェブフックカードに表示されます。
ウェブフックの名前を編集することのみ可能で、削除することもできます。
- Cloudflareダッシュボード ↗にログインし、アカウントを選択します。
- 通知 > 宛先に移動します。
- ウェブフックカードで、編集したいウェブフックの編集を選択します。
- ウェブフックの名前を更新し、保存を選択します。
編集を選択した後、または宛先カードに表示されているウェブフックのリストで削除を選択することで、ウェブフックを削除できます。
Cloudflareの現在利用可能なウェブフックに含まれていないサービスを使用している場合は、独自に設定し、有効なウェブフックURLを入力できます。
一般的なウェブフックには、常に秘密を使用することをお勧めします。Cloudflareは、行われたすべてのリクエストのcf-webhook-authヘッダーに秘密を送信します。このヘッダーが存在しない場合、または指定した値でない場合は、ウェブフックを拒否する必要があります。
保存してテストを選択した後、ウェブフックはポリシーに添付できる宛先として設定されるはずです。
Cloudflareがウェブフックを送信すると、次のスキーマを持ちます:
{ "text": "Hello World! This is a test message sent from https://cloudflare.com. If you can see this, your webhook is configured properly."}Cloudflareの一般的なウェブフック通知は、ポート80または443の公開解決可能なIPアドレスにのみ送信されます。
プライベートIPアドレスまたは異なるポートで一般的なウェブフック通知を受信したい場合は、Workersを使用して通知を受信して転送するか、接続されたアプリケーションにルーティングするためにCloudflare Tunnelを設定できます。
Cloudflare Workersを一般的なウェブフックと組み合わせて、ウェブフックを受け入れる任意のサービスに通知を配信できます。
Cloudflareには、Workersと一般的なウェブフックの使用方法を理解するための例のツール ↗があります。提供された例は、一般的なウェブフック応答をRocket.Chatに配信できるように変換します。提供されたコードには、例をニーズに合わせて適応するプロセスをガイドするための詳細なコメントが付いています。
Google Chat ↗の場合:
- Secret: 秘密はURLの一部です。Cloudflareはこの情報を自動的に解析し、ユーザーからの入力は必要ありません。
- URL: URLはGoogle Chatチャンネルのアドレスによって異なります。
Slack ↗の場合:
- Secret: 秘密はURLの一部です。Cloudflareはこの情報を自動的に解析し、ユーザーからの入力は必要ありません。
- URL: URLはSlackチャンネルのアドレスによって異なります。
DataDog ↗の場合:
- Secret: 秘密は必須で、ユーザーが入力する必要があります。これはDataDogがAPIキー ↗と呼ぶものです。
- URL:
https://api.datadoghq.com/api/v1/events
Discord ↗の場合:
- Secret: 秘密はURLの一部です。Cloudflareはこの情報を自動的に解析し、ユーザーからの入力は必要ありません。
- URL: URLはDiscordチャンネルのアドレスによって異なります。
OpsGenie ↗の場合:
- Secret: 秘密はOpsGenieのREST APIの
APIキーです。 - URL:
https://api.opsgenie.com/v2/alerts
Splunk ↗の場合:
- Secret: 秘密は必須で、ユーザーが入力する必要があります。これはSplunkが
tokenと呼ぶものです。詳細については、Splunkのドキュメント ↗を参照してください。 - URL:
- サポートされているSplunkエンドポイントは、services/collector、services/collector/raw、services/collector/eventの3つのみです。
- トークンでSSLが有効になっている場合、ポートは443でなければなりません。トークンでSSLが無効になっている場合、ポートは8088でなければなりません。
- サーバーでSSLが有効でなければなりません。
Feishu ↗の場合:
- Secret: 秘密はURLの一部です。Cloudflareはこの情報を自動的に解析し、ユーザーからの入力は必要ありません。
- URL: URLはカスタムロボットによって異なります。
Teams ↗の場合:
- Secret: 秘密はURLの一部です。Cloudflareはこの情報を自動的に解析し、ユーザーからの入力は必要ありません。
- URL: URLはIncoming Webhookコネクタが作成されるとTeamsによって提供されます。
ServiceNow ↗の場合:
- Secret: ユーザーが決定します。Cloudflareの通知に入力された秘密がServiceNowと一致することを確認してください。詳細については、ServiceNowのドキュメント ↗を参照してください。
- URL:
https://{servicenow_instance}.com/{base_api_path}
一般的なウェブフックの場合:
- Secret: ユーザーが決定します。
- URL: ユーザーが決定します。
Google Chat、Slack、Discord、またはFeishuのウェブフックを作成する際、秘密はURLの一部です。Cloudflareが自動的に抽出するのではなく、secretの値を明示的に設定するためにURLから秘密を削除することを選択できます。
これは、Terraformを使用してコードとしてウェブフックインフラストラクチャを定義する際に便利です。なぜなら、URLはCloudflareによって変更されないからです。
resource "cloudflare_notification_policy_webhooks" "example" { account_id = "<ACCOUNT_ID>" name = "Slack Webhook" url = "https://hooks.slack.com/services/T00000000/B00000000" secret = "<secret>"}