Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Logpush 向けの専用エグレス IP

最終更新 Markdown で表示Agent セットアップ

このガイドでは、Dedicated CDN Egress IPs(専用 CDN エグレス IP)と Logpush の設定およびテスト手順を説明します。固定の専用エグレス IP でログを配信できるようにします。

前提条件

専用エグレス IP で Logpush を使うには、Dedicated CDN Egress IPs(旧称 Aegis)付きの Smart Shield Advanced が必要です。Dedicated CDN Egress IPs のプールはアカウントではなくゾーンに紐づきます。専用 IP で Logpush を使う場合、トラフィックは 1 つのゾーンへルーティングする必要があります。

基本の考え方は、Dedicated CDN Egress IPs を有効にした Cloudflare ゾーン経由で、Logpush ジョブがログデータをプロキシし、目的の送信先へ送ることです。こうすると、送信先側ではプロキシゾーンに割り当てた専用エグレス IP だけを許可リストに登録すれば足ります。

前提として、専用ゾーンを作成するか、既存ゾーンを使います。既存ゾーンを使う場合、そのゾーンのエグレスは Dedicated CDN Egress IPs に制限されます。そのゾーンを使うほかのサービスに影響がないことを確認してください。

本番システムへの影響を避けるため、プロキシ専用の別ゾーンを使うことを推奨します。新しいゾーンを作る場合は、Cloudflare でドメインを登録する 手順 に従ってください。

次の例は、HTTPS 送信先をプロキシするように Logpush と Dedicated CDN Egress IPs を設定します。ただし、対応する Logpush 送信先であればプロキシは機能します。どの送信先も内部では HTTP プロトコルを使います。

1. 専用エグレス IP プールをプロビジョニングする

  1. Cloudflare のアカウントチームと連携し、ゾーン向けに Dedicated CDN Egress IPs を購入します。

  2. (任意ですが推奨)リージョンをまたいでカバーするため、PDX-B と SJC-A に 1 つずつ、合計 2 つの IP を依頼します。

  3. プロビジョニング後、Pool ID を確認します。

2. ゾーンを設定する

  1. 専用エグレス IP プール向けに、ゾーンを登録するか既存ゾーンを使います。
  2. アカウントチームに連絡し、専用エグレス IP プールの ID を取得します。
  3. Edit Zone Setting エンドポイントへ PATCH リクエストを送ります。
  • URL の setting ID に aegis を指定します。
  • リクエスト本文で enabledtrue にし、前の手順の ID を pool_id に使います。

Required API token permissions

At least one of the following token permissions is required:
  • Zone Settings Write
Edit zone settingbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/aegis" \
	--request PATCH \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"id": "aegis",
		"value": {
				"enabled": true,
				"pool_id": "<YOUR_EGRESS_POOL_ID>"
		}
	}'

3. プロキシゾーンを用意する

  1. ゾーンに DNS レコード(CNAME または A/AAAA)を追加し、Target を HTTP 送信先エンドポイントにします。
Cloudflare ダッシュボードで DNS レコードを作成し、HTTP 送信先エンドポイントを定義します
  1. 必要なら、オリジンルール でカスタムポートを指定します。送信先が標準以外のポート(例: 12345)だけを受け付ける場合に便利です。logpush.yourdestinationendpoint.com(ポートは指定しません。Cloudflare はデフォルトで HTTP/HTTPS ポートのトラフィックだけをプロキシします)を、yourdestinationendpoint.com:12345 へプロキシするように設定できます。

4. Logpush を設定する

  1. 次の内容で Logpush ジョブを作成します。
  • Destination: HTTP
  • Endpoint: 用意したドメインとパスを使います(Cloudflare ダッシュボードが送信先を自動検証します)。DNS レコードの Name に指定したサーバー名を使います。この例では logpush.yourdestionationendpoint.com です。
Cloudflare ダッシュボードで Logpush ジョブを作成するとき、送信先の詳細を入力します
  • Configuration: データセット、ジョブ名、フィルター、フィールドを選びます。詳細は Logpush のドキュメント を参照してください。
  1. 送信先でログを受信していることを確認します。

5. プロキシゾーンのエンドポイントを保護する

プロキシゾーンのホスト名は公開で解決できますが、トラフィックは Cloudflare のエッジを通るため、そこでセキュリティ制御を適用できます。エンドポイントを守るには、次のベストプラクティスを使います。

シークレットヘッダーと WAF 検証を追加する

Logpush ジョブにシークレットトークンを HTTP ヘッダーとして追加し、それが無いリクエストをブロックする WAF ルールを作成します。ほとんどの導入では、この方法を推奨します。

シークレットヘッダー付きで Logpush を設定する

header_ で始まる URL パラメーターは、リクエストの HTTP ヘッダーになります。Logpush ジョブの作成時または更新時に、送信先 URL へシークレットヘッダーを追加します。

https://logpush.yourdestinationendpoint.com?header_X-Logpush-Secret=YOUR_RANDOM_SECRET_TOKEN

強力なランダムトークンは openssl rand -hex 32 で生成します。

WAF カスタムルールを作成する

プロキシゾーンで Security > WAF > Custom rules を開き、正しいシークレットヘッダーが無いリクエストをブロックするルールを作成します。

  • Expression:
    (http.host eq "logpush.yourdestinationendpoint.com" and all(http.request.headers["x-logpush-secret"][*] ne "YOUR_RANDOM_SECRET_TOKEN"))
  • Action: Block

ASN ベースのフィルタリングを追加する

多層防御として、Cloudflare の ASN からのトラフィックだけを許可するルールを追加します。Logpush のトラフィックは Cloudflare のネットワーク(ASN 13335、132892、または 202623)から発信されます。

  • Expression:
    (http.host eq "logpush.yourdestinationendpoint.com" and not ip.geoip.asnum in {13335 132892 202623})
  • Action: Block

高いセキュリティが必要な環境では Access Service Tokens を使う

より強い認証には、マシン間認証向けの Cloudflare Access Service Tokens を使います。Zero Trust ダッシュボードで Service Token を作成し、Access ヘッダー付きで Logpush を設定します。

https://logpush.yourdestinationendpoint.com?header_CF-Access-Client-Id=YOUR_CLIENT_ID&header_CF-Access-Client-Secret=YOUR_CLIENT_SECRET

セキュリティ設定を確認する

WAF ルールが不正なリクエストをブロックしているかをテストします。

$ curl https://logpush.yourdestinationendpoint.com
# 期待される結果: error code: 1020

$ curl -H "X-Logpush-Secret: wrong-token" https://logpush.yourdestinationendpoint.com
# 期待される結果: error code: 1020

プロキシゾーンの Cloudflare Analytics で Logpush トラフィックが流れていることを確認し、WAF イベントを監視して不正なリクエストがブロックされていることを確かめます。

役に立ちましたか?