オリジンサーバーを保護するため、Alibaba Cloud CDN のオリジンフェッチノード IP アドレスを取得し、オリジンサーバーでホワイトリストを構成して Alibaba Cloud CDN からのオリジンフェッチトラフィックのみがアクセスできるようにしたいというニーズがあります。
エッジノード IP アドレスとオリジンフェッチノード IP アドレスの違い
CDN ノード IP アドレスは 2 つのカテゴリに分かれており、それぞれ適用されるシナリオが異なります。
タイプ | 説明 | 特性 | 取得方法 |
オリジンフェッチノード IP (L2) | CDN オリジンフェッチノードがオリジンサーバーにアクセスする際に使用する IP アドレス | 動的に割り当てられ、固定されません |
|
エッジノード IP (L1) | ユーザーが CDN にアクセスする際に、近接性に基づいてユーザーに割り当てられるノードの IP アドレス | 動的にスケジューリングされ、常に変化します | DescribeUserVipsByDomain API を呼び出します |
オリジンフェッチノード IP (L2) :オリジンサーバーのホワイトリスト構成に使用します。オリジンサーバーのセキュリティグループ、SLB アクセス制御、または Cloud Firewall で CDN オリジンフェッチトラフィックを許可する必要がある場合は、最新のオリジンフェッチ IP を定期的に取得し、ホワイトリストを更新してください。あるいは、このトピックの「オリジンサーバーのセキュリティ保護の代替手段」セクションを参照し、IP アドレスに依存しない保護方法を使用してください。
エッジノード IP (L1) :クライアント側のトラブルシューティング、または特定のコンプライアンス要件に使用します。ユーザーが実際にアクセスしている CDN ノードを確認する必要がある場合や、アクセス問題をトラブルシューティングする場合は、この種類の IP アドレスを使用します。
nslookupまたはdigコマンドを実行して高速化ドメイン名を名前解決すると、取得されるエッジノード IP アドレスは現在の瞬間的なスケジューリング状態のみを反映します。CDN はネットワーク状況に基づいてノード割り当てを動的に調整するため、固定 IP アドレスとして使用できません。
CDN オリジンフェッチ IP クエリ API (DescribeL2VipsByDomain) の制限
DescribeL2VipsByDomain API を呼び出して CDN オリジンフェッチ IP アドレスをクエリする場合は、次の制限事項に注意してください。
制限 | 説明 |
帯域幅のしきい値 | 日次ピーク帯域幅が 1 Gbps 以上のユーザーのみがこの API を呼び出せます。権限を申請するためにチケットを送信する必要があります。 |
クエリ粒度 | 複数ドメイン名の一括クエリはサポートされていません。リクエストごとに入力できる高速化ドメイン名は 1 つのみです。 |
IP の動的性 | 返されるオリジンフェッチノード IP アドレスは定期的に変化します。ホワイトリストを更新するために、定期的にこの API を呼び出す必要があります。 |
この API は主に L2 オリジンフェッチノード IP アドレスを取得するために使用し、オリジンサーバーでホワイトリストを構成する必要があるシナリオ (ECS セキュリティグループ、SLB アクセス制御、または Cloud Firewall など) に適しています。
オリジンサーバーのセキュリティ保護の代替手段
CDN オリジンフェッチ IP アドレスは動的に変化するため、オリジンサーバーの保護を IP ホワイトリストのみに依存することは推奨しません。代わりに、次の代替手段があります。
HTTP ヘッダーによる CDN オリジンフェッチリクエストの識別: オリジンフェッチリクエストの際、CDN は
ali-cdn-real-ipHTTP ヘッダーを渡します。オリジンサーバーは、IP ホワイトリストに頼るのではなく、このヘッダーを識別して正当な CDN オリジンフェッチリクエストを認識し、許可することができます。Referer ホットリンク保護の構成 :Referer のブラックリストまたはホワイトリストを構成して、許可されていないソースが高速化リソースにアクセスすることを防止します。この方法は IP 制限に依存せず、CDN の動的な IP の性質により適しています。
URL 認証の構成 :タイムスタンプベースの認証メカニズムを使用して暗号化 URL を生成します。これにより、サイトリソースが不正にダウンロードまたは悪用されることを効果的に防止できます。この方法も固定 IP アドレスに依存せず、高いセキュリティ要件があるシナリオに適しています。
上記の方法は、より強固な多層防御のために組み合わせて使用できます。
Cloud Firewall または WAF での CDN オリジンフェッチ許可ルールの構成
Cloud Firewall や WAF などのセキュリティ製品がオリジンサーバーの前段にデプロイされている場合は、CDN オリジンフェッチトラフィックがオリジンサーバーに正常に到達できるように、許可ルールを構成する必要があります。
ESA の使用を推奨します。ESA のオリジン保護機能は最新のオリジンフェッチ IP リストを提供するため、ホワイトリストのメンテナンスが容易になります。
インバウンドルールを構成します:Cloud Firewall または WAF で、DescribeL2VipsByDomain API の呼び出しによって取得したオリジンフェッチ IP リストをインバウンド許可ルールに追加し、これらの IP アドレスがオリジンサーバーにアクセスできるようにします。
アウトバウンドルールを構成します (必要な場合):Cloud Firewall でアウトバウンド制御ポリシーが構成されている場合は、オリジンサーバーから CDN オリジンフェッチ IP アドレスへの応答トラフィックも許可してください。
ポートの説明:特別な構成がない限り、CDN オリジンフェッチリクエストはデフォルトでオリジンサーバーのポート 80 (HTTP) およびポート 443 (HTTPS) に接続します。CDN でカスタムオリジンフェッチポートが構成されている場合は、該当ポートのインバウンドルールも許可されていることを確認してください。
上記の内容は、CDN オリジンフェッチトラフィック (CDN ノード → オリジンサーバー) のインバウンド許可に関するものです。ビジネス環境で CDN 管理 API (キャッシュ更新や構成クエリなど) を呼び出す必要がある場合は、CDN API サーバー側に固定 IP アドレスがない点に注意してください。ネットワーク環境に厳格なアウトバウンド制限がある場合は、プロキシサーバーを構成し、プロキシサーバーの IP アドレスをアウトバウンドホワイトリストに追加して、プロキシ経由で API リクエストを転送することを推奨します。
CDN アクセスログまたはオリジンサーバーログの IP アドレスがユーザーのローカル IP アドレスと異なる理由
CDN アクセスログに記録される、またはオリジンサーバーが受信するリクエスト IP アドレスは、エンドユーザーのリアル IP アドレスではなく、CDN オリジンフェッチノード IP アドレスです。これは通常の CDN オリジンフェッチ動作です。エッジノード (L1) のキャッシュがミスした場合、リクエストはオリジンフェッチノード (L2) によってオリジンサーバーへ送信されるため、オリジンサーバーから見える送信元 IP アドレスは CDN オリジンフェッチノード IP アドレスになります。ユーザーのリアル IP アドレスを取得するには、次の方法を使用します。
解析:
X-Forwarded-Forヘッダー: CDN はオリジンフェッチリクエストでこのヘッダーをパススルーし、これにはユーザーの実際の IP アドレスが含まれています。解析:
ali-cdn-real-ipヘッダー: これは、ユーザーのリアル IP アドレスを直接伝送する Alibaba Cloud CDN 固有のオリジンフェッチヘッダーです。X-Forwarded-Forと比較して、偽造がより困難です。
TCP 接続の送信元 IP アドレスに基づいてユーザーを識別しないでください。この IP アドレスは常に CDN ノード IP アドレスです。