リクエストを許可するためのカスタム VCL

カスタム VCL コードスニペットを使用してFastly EdgeのACL リストを使用し、受信リクエストをフィルタリングしたり、IP アドレスによるアクセスを許可したりできます。 ACL リストは、許可するIP アドレスを指定します。

ステージング環境へのアクセスを制限する許可リストを作成して、内部開発者および承認済み外部サービスに対する指定されたIP アドレスからのリクエストのみが許可されるようにします。 また、ステージング環境と実稼動環境の管理者へのアクセスを保護するための許可リストを作成することもできます。

次の例は、Fastly Access Control List (ACL) ​を含むカスタム VCL スニペットを使用して、Adobe Commerce on cloud infrastructure プロジェクト環境の管理者へのアクセスを保護する方法を示しています。 カスタム VCL スニペットをCloud環境に追加すると、Fastlyでは、ACLに含まれるIP アドレスからのリクエストのみが許可されます。

TIP
公開アクセスできないステージング環境と統合環境の場合は、Cloud Consoleで使用可能なHTTP アクセス制御オプションを使用して、サイト全体へのアクセスをIP アドレスで管理します。

前提条件:

  • Fastly CDN を使用するように環境を設定する必要があります。 詳しくは、Fastly サービスの設定 ​ を参照してください。

  • Magento 2 の Fastly CDN モジュールが最新バージョンであることを確認してください。 Fastly モジュールのアップグレード ​ を参照してください。

  • Fastly サービスの環境設定を確認します。 Fastly キャッシュの確認 ​ を参照してください。

  • ステージング環境と実稼動環境にアクセスするには、管理者資格情報が必要です。

  • クライアント IP アドレスの一覧を表示して許可リストに含める

クライアント IP アドレスを許可するためのEdge ACLの作成

Edge ACLは、サイトへのアクセスを管理するためのIP アドレスリストを作成します。 この例では、Edge ACLを作成し、プロジェクト環境の管理者にアクセスできるクライアント IP アドレスのリストを追加します。

  1. 管理者に ログインします。

  2. ストア / 設定/構成 / 詳細 / システム​をクリックします。

  3. フルページキャッシュ > Fastly Configuration > Edge ACL​を展開します。

  4. ACL コンテナを作成します。

    • ACL​を追加」をクリックします。

    • ACL コンテナ ページで、ACL名allowlistを入力します。

    • 変更の後に​ アクティブ化 ​を選択して、編集中のFastly サービス設定のバージョンに変更をデプロイします。

    • アップロード」をクリックして、ACLをFastly サービス設定に添付します。

  5. 管理者へのアクセスが許可されているIP アドレスのリストを追加します。

    • allowlist ACLの設定アイコンをクリックします。

    • クライアント IP アドレスごとに​ IP値 ​を追加して保存します。

    • キャンセル」をクリックして、システム設定ページに戻ります。

  6. 設定を保存」をクリックします。

  7. ページ上部の通知に従ってキャッシュを更新します。

管理者アクセスを保護するためのカスタム VCL スニペットの作成

次のカスタム VCL スニペットコード(JSON形式)は、管理者へのリクエストをフィルタリングし、クライアント IP アドレスがallowlist ACLのアドレスと一致する場合にアクセスを許可するロジックを示しています。

{
  "name": "allowlist",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ((req.url ~ \"^/admin\") && !(client.ip ~ allowlist) && !req.http.Fastly-FF) { error 403 \"Forbidden\"; }"
}

この例から​ カスタムスニペット ​を作成する前に、値を確認して、変更が必要かどうかを判断してください。 次に、それぞれのフィールドに各値を入力します。例えば、「type」を「タイプ」フィールドに、「content」をコンテンツフィールドに入力します。

  • name — VCL スニペットの名前。 この例では、allowlistです。

  • priority — VCL スニペットが実行されるタイミングを決定します。 管理者要求が許可されたIP アドレスから送信されているかどうかを即座に実行して確認する優先度は5です。 スニペットは、デフォルトのMagento VCL スニペット(magentomodule_*)のいずれかが優先度50に割り当てられる前に実行されます。 スニペットを実行するタイミングに応じて、各カスタムスニペットの優先度を50より高くまたは低く設定します。 優先度の低いスニペットが最初に実行されます。

  • type - バージョン管理されたVCL コードにスニペットを挿入する場所を指定します。 このVCLはrecv スニペット型で、デフォルトのFastly VCL コードの下、および任意のオブジェクトの上のvcl_recv サブルーチンにスニペット コードを追加します。

  • content – 実行するVCL コードのスニペット。 この例では、コードは管理者へのリクエストをフィルタリングし、クライアント IP アドレスがallowlist ACLのアドレスと一致する場合にアクセスを許可します。 アドレスが一致しない場合、リクエストは403 Forbidden エラーでブロックされます。

    管理者のURLが変更された場合は、サンプル値/adminを環境のURLに置き換えます。 例:/company-admin

コードサンプルでは、​ オリジンシールド ​を使用する場合、条件!req.http.Fastly-FFが重要です。 このコードを削除または編集しないでください。

環境のコードを確認して更新したら、次のいずれかの方法を使用して、Fastly サービス設定にカスタム VCL スニペットを追加します。

  • 管理者からカスタム VCL スニペットを追加します。 管理者にアクセスできる場合は、この方法をお勧めします。 (Magento 2 バージョン 1.2.58🔗以降ではFastly CDN モジュールが必要です)。

  • JSON コードの例をファイル (例:allowlist.json)に保存し、Fastly API🔗を使用して アップロードします。 管理者にアクセスできない場合は、この方法を使用します。

カスタム VCL スニペットの追加

  1. 管理者に ログインします。

  2. ストア / 設定/構成 / 詳細 / システム​をクリックします。

  3. フルページキャッシュ > Fastly設定 > カスタム VCL スニペット​を展開します。

  4. カスタムスニペットを作成」をクリックします。

  5. VCL スニペット値を追加します。

    • 名前allowlist

    • 種類recv

    • 優先度5

    • VCL スニペットコンテンツを追加します。

      code language-conf
      if ((req.url ~ "^/admin") && !(client.ip ~ allowlist) && !req.http.Fastly-FF) { error 403 "Forbidden";}
      
  6. 作成​をクリックして、名前パターン type_priority_name.vclのVCL スニペットファイルを生成します(例:recv_5_allowlist.vcl

  7. ページがリロードされたら、「Fastly設定」セクションの「VCLをFastly​にアップロード」をクリックして、ファイルをFastly サービス設定に追加します。

  8. アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。

アップロードプロセス中に、VCL コードの更新バージョンを迅速に検証します。 検証が失敗した場合は、カスタム VCL スニペットを編集して問題を修正します。 次に、VCLをもう一度アップロードします。

カスタム VCL スニペットの変更

  1. 管理者に ​ ログイン ​ します。

  2. ストア/設定/設定/詳細/システム をクリックします。

  3. フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。

    ​ カスタム VCL スニペットの管理 ​

  4. アクション 列で、編集するスニペットの横にある設定アイコンをクリックします。

  5. ページのリロード後、「Fastly 設定 _セクションの​Fastly に VCL をアップロード_ をクリックします。

  6. アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。

WARNING
カスタム VCL スニペット UI オプションには、Adobe Commerce管理を通じて追加されたスニペットのみが表示されます。 Fastly API を使用してスニペットを追加する場合は、API を使用して ​ スニペットを管理 ​ します。

カスタム VCL スニペットの削除

  1. 管理者に ​ ログイン ​ します。

  2. ストア/設定/設定/詳細/システム をクリックします。

  3. フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。

    ​ カスタム VCL スニペットの管理 ​

  4. アクション 列で、削除するスニペットの横にあるごみ箱アイコンをクリックします。

  5. 次のモーダルウィンドウで、「DELETE」をクリックし 新しいバージョンをアクティベートします。

WARNING
カスタム VCL スニペット UI オプションには、Adobe Commerce管理を通じて追加されたスニペットのみが表示されます。 Fastly API を使用してスニペットを追加する場合は、API を使用して ​ スニペットを管理 ​ します。
recommendation-more-help
commerce-on-cloud-help-cloud-guide