CDN ゾーン

CDN Zones API は、悪質行為者標的シナリオやセキュリティ強化のルールセットオプションなど、複数のユースケースに利用できます。

CDN API の初期リリースでは、コンテンツ配信ドメインをサポートし、セキュリティの向上に重点を置いています。Salesforce では、将来的には CDN API で他の機能をサポートできるようにすることを予定しており、その多くの機能は現在 Business Manager eCDN で提供しています。

API メソッドを定義する際には、以下を念頭に置いてください。

  • POST メソッドは、同じタイプアクションをもつ既存のルールが見つかった場合に、409 Conflict レスポンスステータスコードを返します。
  • PUT メソッドを使用してルールを変更すると、既存の値が上書きされます。PUT メソッドを使用してルールを更新する場合は、変更する値だけでなく、必要なすべての値をリストのペイロードに含めてください。

新しいストアフロントゾーンを作成すると、それはプロキシゾーンとして作成され、ecdn.net で終わる zoneName で構成されます。Development (開発)、Staging (ステージング)、Production (本番) の各インスタンスに対して異なるゾーンを使用してください。

作成するストアフロントゾーンごとに、カスタムホスト名を作成し、ストアフロントの DNS レコードを更新して、トラフィックがそのカスタムホスト名 (CNAME) に送信されるようにする必要があります。

  1. examplecustomhost.com などのカスタムホスト名を決めます。
  2. eCDN ゾーンへの SSL 証明書の追加と DNS マッピングの構成を行って、カスタムホスト名を有効にします。
  3. getZonesInfo の name プロパティから DNS CNAME レコード値を取得します。たとえば、www.example.com CNAME commcloud.prod-abcd-example-com.cc-ecdn.net となります。
  4. トラフィックが、カスタムホスト名 (CNAME) をもつゾーンに送信されるように DNS を構成します。たとえば、`prod-bcnx-examplecustomhost-com.cc-ecdn.net`` とします。

Business Manager を使用してゾーンを作成する方法については、B2C Commerce でのゾーンの作成 を参照してください。

アクセス制御ルールは、eCDN カスタムルールを使用して構成する必要があります。アクセスコントロールのルールを構成する際には、以下を念頭に置いてください。

  • 許可リストまたはブロックリストで複数の IP アドレスまたは国コード値を指定する場合は、演算子とリスト表記を使用してin、それらをすべて 1 つの式に含めます。このプラクティスにより、ルールが採用されたときに必要以上の呼び出しが発行されないようにします。詳細については、eCDN カスタムルールガイドを参照してください

  • 国コードには任意の 2 文字の組み合わせを指定できます。ただし、API が認識できるのは ISO 3166-1 alpha-2 (2 文字コード) 形式の有効な国コードのみです。詳細については、国際標準化機構 (ISO) 3166 Country Code (3166 国コード) ページを参照してください。

  • 米国が禁輸または制裁している国の国コードは、その用途にかかわらずブロックされたままになります。詳細については、米国商務省 Bureau of Industry and Security (産業安全保障局) ページを参照してください。

  • Business Manager eCDN 許可リストに含める IP アドレスが、CDN API の IP アクセスまたは地域アクセスの拒否ルール設定と矛盾しないことを確認してください。

    Business Manager の許可リスト設定は、矛盾する CDN API ルールを上書きします。

  • IP アクセスと地域アクセスのルールは次のとおり、特定の順序で実行されます。1) 禁輸国 (プラットフォームに準拠しているため上書きなし)、2) Business Manager の IP アクセスリスト、3) CDN API IP アクセス拒否リスト、4) CDN API 地域アクセス許可リスト、5) 顧客がリクエストした IP または Salesforce による地域的なブロッキング。

ファイアウォールルールを使用すると、構成された許可リストルールに従う残りのトラフィックがすべてブロックされました。カスタムルールはより柔軟で、必要に応じてこの動作を制御できます。

CDN API は、すべてのトラフィックが、B2C Commerce インフラにアクセスする前にサードパーティのプロキシを経由して eCDN にナビゲートするよう強制できます。次のユースケースでは、アーキテクトは Commerce Cloud eCDN の前に別のサードパーティ CDN または任意のクラウドプロキシをスタックして、そのサードパーティプロキシの機能を利用したいと考えています。

CDN スタッキングルールを作成するには、次のメソッドを使用します。

POST /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules

ボディの例:

カスタムルールを使用した許可リストの作成の詳細については、eCDN カスタムルールガイドを参照してください

既存の CDN スタッキングルールを更新するには、更新したい特定のルール ID を次のメソッドで取得します。

GET /organizations/{organizationId}/zone/{zoneId}/firewall-custom/rules

ルール ID を次のメソッドに含めてルールを更新します。

PATCH /organizations/{organizationId}/zone/{zoneId}/firewall-custom/rules/{ruleId}

ボディの例:

API により、ブロックリストを使用して特定の CIDR または IP アドレスを拒否できます。この API により、ユーザーの Web アプリケーションに危害を加えたり、アクセスを試みる既知の不正ユーザーがストアフロントにアクセスしないよう阻止できます。

アクセスコントロールルールを作成するには、次のメソッドを使用します。

POST /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules

ボディの例:

既存のアクセスコントロールルールを更新するには、更新したい特定のルール ID を次のメソッドで取得します。

GET /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules

ルール ID を次のメソッドに含めてルールを更新します。

PATCH /organizations/{organizationId}/zone/{zoneId}/firewall-custom/rules/{ruleId}

ボディの例:

API を使用して、特定の国からのトラフィックをブロックまたは許可できます。API によって、特定の国のみがストアフロントにアクセスできるようにすることが可能です。次のユースケースでは、セキュリティを懸念する eCom ディレクターが、注文をイギリス国内に限定し、この地域以外からの注文を禁止したいと考えています。

地域アクセスコントロールルールを作成するには、次のメソッドを使用します。

POST /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules

ボディの例:

既存のアクセスコントロールルールを更新するには、更新したい特定のルール ID を次のメソッドで取得します。

GET /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules

ルール ID を次のメソッドに含めてルールを更新します。

PATCH /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules/{ruleId}

ボディの例:

Production (本番) インスタンスにプッシュする前に変更をテストするために、Development (開発) インスタンス用にカスタムのホスト名を作成できます。

企業のセキュリティチームは、アプリケーションへの攻撃が絶えず変化する環境から自社のストアフロントを保護したいと考えています。このユースケースでは、API を使用することで、既存の攻撃ベクトルに対処できると同時に、Salesforce によるルールセットの更新に伴う、新たな脆弱性に対して防御できます。これらのルールセットを Salesforce で管理できるようにするには、API のアクションとして「Default」 (デフォルト) を使用します。

API は各ルールを個別に更新し、エラーが発生した場合はレポートを返します。ただし、ルールセットグループメソッドを使用してアクションを変更する場合は、ベストプラクティスとして、すべてのルールが適切に更新されることを確認することをお勧めします。ルールが不適切に更新されたと判断した場合、グループ変更を再実行できます。

Web Application Firewall (WAF) グループをオンにする場合、以下の一般的なプロセスをお勧めします。

  1. グループを 7 日間モニターモードにしておきます。
  2. トリガーされた WAF イベントがあるかどうかをログで確認します。
  3. WAF ルールが不正ユーザーを適切に阻止したかどうか、また、間違ってトリガーされた WAF ルールがないかどうかを確認します。
  4. グループをデフォルトモードに変更します。
  5. モニタリング期間中にトリガーされたルールのデフォルト設定を確認し、必要に応じて調整します。たとえば、トリガーされたルールのデフォルト設定が「monitor」 (モニター) になっている場合、ルール設定を「challenge」 (チャレンジ) または「block」 (ブロック) に変更します。

既存のアクセスコントロールルールを更新するには、更新したい特定のルール ID を次のメソッドで取得します。

GET /organizations/{organizationId}/zones/{zoneId}/waf/groups

次のメソッドにグループ ID を含めてグループをオンにし、それを monitor (モニター) モードにします。

PUT /organizations/{organizationId}/zones/{zoneId}/waf/groups/{groupId}

ボディの例:

次のメソッドを使用してすべての WAF ルールのリストを取得し、確認したいルールのルール ID を見つけます。

GET /organizations/{organizationId}/zones/{zoneId}/waf/rules

ルール ID を次のメソッドに含めて、ルール特有の情報を表示します。

GET /organizations/{organizationId}/zones/{zoneId}/waf/rules/{ruleId}

次のメソッドを使用してすべての WAF グループのリストを取得し、デフォルトモードに設定したいグループのグループ ID を見つけます。

GET /organizations/{organizationId}/zones/{zoneId}/waf/groups

次のメソッドにグループ ID を含めてグループをオンにし、それを default (デフォルト) モードにします。

PUT /organizations/{organizationId}/zones/{zoneId}/waf/groups/{groupId}

ボディの例:

次のメソッドを使用して WAF グループに含まれるすべての WAF ルールのリストを取得し、変更したいルールのルール ID を見つけます。

GET /organizations/{organizationId}/zones/{zoneId}/waf/rules

ルール ID を次のメソッドに含めてルールを変更します。

PUT /organizations/{organizationId}/zones/{zoneId}/waf/rules/{ruleId}

ボディの例:

Brotli は Google が開発した圧縮アルゴリズムです。Brotli 圧縮は、送信サイズを小さくするために開発され、テキスト圧縮に最適です。Brotli 圧縮は大きなファイルにインテリジェントに適用され、ブラウザーにダウンロードされるバイト数を減らし、サイトのパフォーマンスを向上させます。

次のメソッドを使用して API 速度設定の現在のステータスを取得します。

GET /organizations/{organizationId}/zones/{zoneId}/speed-settings

Brotli 圧縮設定を変更するには、次のようにします。

PATCH /organizations/{organizationId}/zones/{zoneId}/speed-settings

ボディの例:

HTTP/2 は HTTP ネットワークプロトコルのメジャーな改訂です。HTTP/2 が有効になっている場合は、サポートされているブラウザー上で使用されます。これにより、遅延が軽減され、ブラウザーのページ読み込み速度が向上します。

次のメソッドを使用して API 速度設定の現在のステータスを取得します。

GET /organizations/{organizationId}/zones/{zoneId}/speed-settings

HTTP/2 優先順位設定を変更するには、次のようにします。

PATCH /organizations/{organizationId}/zones/{zoneId}/speed-settings

ボディの例:

Business Manager で WAF eCDN ログを使用すると、発動されているファイアーウォールルールを確認できます。ルール ID がわかれば、CDN API エンドポイントを使用して、特定の HTTP リクエストに対して特定のルールが発動された理由についてのコンテキストと詳細を取得できます。

キャッシュ: エンドユーザーに返されたリソースのコピーを CDN が保存する場所。キャッシュが何をどれくらいの期間保存するかは、起点から返されるキャッシュコントロールヘッダーによって決まります。デフォルトでは、静的コンテンツのみがキャッシュに保存されます。

CDN ホスト名: CDN 用に構成されたトラフィックを示すために、ゾーンのうちでクライアントが構成する部分 (たとえば、www.customer.com.cdn.cloudflare.net)。CDN ホスト名は、クライアントホスト名の ターゲット です。このホスト名を使用してホストファイルをスプーフィングし、テスト目的でトラフィックを CDN に誘導できます。

クライアント: CDN サービスの主要ユーザー (顧客)。

クライアントドメイン: クライアントが所有し、メンテナンスする DNS ゾーン (たとえば、https://www.customer.com)。

クライアントホスト名: クライアントが所有するドメインに紐付けられたホスト名で、トラフィックが CDN ホスト名へと誘導されるようにクライアントが構成します。

コンシューマー: エンドユーザー、つまり CDN によってプロキシされたリソースの消費者。

カスタムルール :クライアントがさまざまな要求パラメーターに基づいてファイアウォール ポリシーを設定できるようにするルール。これらのルールは、以前のファイアウォール ルールの機能を拡張し、フィールドとアクションの拡張リストを提供します。カスタムルールを使用すると、ルール式を完全に制御でき、トラフィックのニーズに合わせてルールを柔軟に調整できます。

起点: 実際のリソースが保存されている場所を示す、信頼できる情報源。起点とは CDN がプロキシして保護するものです。

リソース: Web ページ、画像、JavaScript、CSS、フォントなど、クライアントが所有して管理し、インターネットを利用して配信できるあらゆるコンテンツ。

WAF グループ: 1 つのユニットにまとめられた WAF ルールのコレクション。WAF グループにより、特定のグループに含まれるすべてのルールを一括で更新できます。

WAF ルール: 特定のアプリケーションの脆弱性や攻撃から防御するために設計された WAF ポリシー。

Web Application Firewall (WAF): SQL インジェクション、クロスサイトスクリプティング (XSS) などのさまざまな アプリケーション レベルの攻撃から起点を保護するためにクライアントが使用するファイアウォール。定義上、WAF はステートレスであり、脅威を特定するためにリクエスト署名を使用します。

ゾーン: ホスト名とプロパティのコンテナ。各ゾーンは 1 つの起点に紐付けられます。