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

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

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

次の例は、Fastly アクセス制御リスト(ACL)を含むカスタム VCL スニペットを使用して、クラウドインフラストラクチャプロジェクト環境でのAdobe Commerceの管理者へのアクセスを保護する方法を示しています。 カスタム VCL スニペットをクラウド環境に追加する場合、Fastly では、ACL に含まれる IP アドレスからのリクエストのみを許可します。

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

前提条件:

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

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

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

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

  • 許可リストに含めるクライアント IP アドレスのリスト

Edge ACL を作成して、クライアント IP アドレスを許可します

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

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

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

  3. フルページキャッシュ/Fastly 設定/4}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 は、デフォルトの Fastly VCL コードの下およびオブジェクトの上の vcl_recv サブルーチンにスニペットコードを追加する recv スニペットタイプです。

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

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

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

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

カスタム 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 (たとえば recv_5_allowlist.vcl)で VCL スニペット ファイルを生成します

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

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

Fastly は、アップロードプロセス中に 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
05f2f56e-ac5d-4931-8cdb-764e60e16f26