リクエストを許可するためのカスタム 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 アドレスからのリクエストのみが許可されます。
前提条件:
-
Fastly CDN を使用するように環境を設定する必要があります。 詳しくは、Fastly サービスの設定 を参照してください。
-
Magento 2 の Fastly CDN モジュールが最新バージョンであることを確認してください。 Fastly モジュールのアップグレード を参照してください。
-
Fastly サービスの環境設定を確認します。 Fastly キャッシュの確認 を参照してください。
-
ステージング環境と実稼動環境にアクセスするには、管理者資格情報が必要です。
-
クライアント IP アドレスの一覧を表示して許可リストに含める
クライアント IP アドレスを許可するためのEdge ACLの作成
Edge ACLは、サイトへのアクセスを管理するためのIP アドレスリストを作成します。 この例では、Edge ACLを作成し、プロジェクト環境の管理者にアクセスできるクライアント IP アドレスのリストを追加します。
-
管理者に ログインします。
-
ストア / 設定/構成 / 詳細 / システムをクリックします。
-
フルページキャッシュ > Fastly Configuration > Edge ACLを展開します。
-
ACL コンテナを作成します。
-
「ACLを追加」をクリックします。
-
ACL コンテナ ページで、ACL名—
allowlistを入力します。 -
変更の後に アクティブ化 を選択して、編集中のFastly サービス設定のバージョンに変更をデプロイします。
-
「アップロード」をクリックして、ACLをFastly サービス設定に添付します。
-
-
管理者へのアクセスが許可されているIP アドレスのリストを追加します。
-
allowlistACLの設定アイコンをクリックします。 -
クライアント IP アドレスごとに IP値 を追加して保存します。
-
「キャンセル」をクリックして、システム設定ページに戻ります。
-
-
「設定を保存」をクリックします。
-
ページ上部の通知に従ってキャッシュを更新します。
管理者アクセスを保護するためのカスタム 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 アドレスがallowlistACLのアドレスと一致する場合にアクセスを許可します。 アドレスが一致しない場合、リクエストは403 Forbiddenエラーでブロックされます。管理者のURLが変更された場合は、サンプル値
/adminを環境のURLに置き換えます。 例:/company-admin。
コードサンプルでは、 オリジンシールド を使用する場合、条件!req.http.Fastly-FFが重要です。 このコードを削除または編集しないでください。
環境のコードを確認して更新したら、次のいずれかの方法を使用して、Fastly サービス設定にカスタム VCL スニペットを追加します。
カスタム VCL スニペットの追加
-
管理者に ログインします。
-
ストア / 設定/構成 / 詳細 / システムをクリックします。
-
フルページキャッシュ > Fastly設定 > カスタム VCL スニペットを展開します。
-
「カスタムスニペットを作成」をクリックします。
-
VCL スニペット値を追加します。
-
名前 —
allowlist -
種類 —
recv -
優先度 —
5 -
VCL スニペットコンテンツを追加します。
code language-conf if ((req.url ~ "^/admin") && !(client.ip ~ allowlist) && !req.http.Fastly-FF) { error 403 "Forbidden";}
-
-
作成をクリックして、名前パターン
type_priority_name.vclのVCL スニペットファイルを生成します(例:recv_5_allowlist.vcl) -
ページがリロードされたら、「Fastly設定」セクションの「VCLをFastlyにアップロード」をクリックして、ファイルをFastly サービス設定に追加します。
-
アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。
アップロードプロセス中に、VCL コードの更新バージョンを迅速に検証します。 検証が失敗した場合は、カスタム VCL スニペットを編集して問題を修正します。 次に、VCLをもう一度アップロードします。
カスタム VCL スニペットの変更
-
管理者に ログイン します。
-
ストア/設定/設定/詳細/システム をクリックします。
-
フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。
-
アクション 列で、編集するスニペットの横にある設定アイコンをクリックします。
-
ページのリロード後、「Fastly 設定 _セクションのFastly に VCL をアップロード_ をクリックします。
-
アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。
カスタム VCL スニペットの削除
-
管理者に ログイン します。
-
ストア/設定/設定/詳細/システム をクリックします。
-
フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。
-
アクション 列で、削除するスニペットの横にあるごみ箱アイコンをクリックします。
-
次のモーダルウィンドウで、「DELETE」をクリックし 新しいバージョンをアクティベートします。