リクエストを許可するカスタム VCL
カスタム VCL コードスニペットと共に Fastly Edgeの ACL リストを使用して、受信リクエストをフィルタリングし、IP アドレスによるアクセスを許可できます。 ACL リストは、許可する IP アドレスを指定します。
許可リストを作成して、ステージング環境へのアクセスを制限し、内部開発者および承認済みの外部サービス用に指定された IP アドレスからのリクエストのみが許可されるようにします。 また、ステージング環境と実稼動環境で管理者へのアクセスを保護するための許可リストを作成することもできます。
次の例は、Fastly アクセス制御リスト(ACL)を含むカスタム VCL スニペットを使用して、クラウドインフラストラクチャプロジェクト環境でのAdobe Commerceの管理者へのアクセスを保護する方法を示しています。 カスタム VCL スニペットをクラウド環境に追加する場合、Fastly では、ACL に含まれる IP アドレスからのリクエストのみを許可します。
前提条件:
-
Fastly CDN を使用するように環境を設定する必要があります。 詳しくは、Fastly サービスの設定を参照してください。
-
Magento 2 の Fastly CDN モジュールが最新バージョンであることを確認してください。 Fastly モジュールのアップグレードを参照してください。
-
Fastly サービスの環境設定を確認します。 Fastly キャッシュの確認を参照してください。
-
ステージング環境と実稼動環境にアクセスするには、管理者資格情報が必要です。
-
許可リストに含めるクライアント IP アドレスのリスト
Edge ACL を作成して、クライアント IP アドレスを許可します
Edge ACL は、サイトへのアクセスを管理するための IP アドレスリストを作成します。 この例では、Edge ACL を作成し、プロジェクト環境の管理者にアクセスできるクライアント IP アドレスのリストを追加します。
-
管理者に ログインします。
-
ストア/設定/設定/詳細/システム をクリックします。
-
フルページキャッシュ/Fastly 設定/4}Edge ACL} を展開します。
-
ACL コンテナを作成します。
-
ACL を追加 をクリックします。
-
ACL コンテナ ページで ACL 名—
allowlist
を入力します。 -
変更後にアクティベート を選択して、編集中の Fastly サービス設定のバージョンに変更をデプロイします。
-
アップロード をクリックして、ACL を Fastly サービス設定に添付します。
-
-
管理者にアクセスできる IP アドレスのリストを追加します。
-
allowlist
ACL の設定アイコンをクリックします。 -
クライアント 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 は、デフォルトの Fastly VCL コードの下およびオブジェクトの上のvcl_recv
サブルーチンにスニペットコードを追加するrecv
スニペットタイプです。 -
content
– 実行する VCL コードのスニペット。 この例では、コードは管理者への要求をフィルタリングし、クライアント IP アドレスがallowlist
ACL 内のアドレスと一致する場合はアクセスを許可します。 アドレスが一致しない場合、リクエストは403 Forbidden
エラーでブロックされます。管理者の URL が変更された場合は、サンプル値
/admin
を環境の URL に置き換えます。 例:/company-admin
。
コードサンプルでは、 原点シールドを使用する場合、条件 !req.http.Fastly-FF
が重要です。 このコードを削除または編集しないでください。
環境のコードを確認して更新した後、次のいずれかの方法を使用して、カスタム VCL スニペットを Fastly サービス設定に追加します。
-
カスタム VCL スニペットを管理者から追加します。 管理者にアクセスできる場合は、この方法をお勧めします。 (Magento 2 バージョン 1.2.58🔗 以降には Fastly CDN モジュールが必要です)。
-
JSON コードの例をファイル(例:
allowlist.json
)に保存して、Fastly API を使用してアップロードします。 管理者にアクセスできない場合は、この方法を使用します。
カスタム 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
(たとえばrecv_5_allowlist.vcl
)で VCL スニペット ファイルを生成します -
ページのリロード後、「Fastly 設定」セクションの「Fastly に VCL をアップロード」をクリックして、ファイルを Fastly サービス設定に追加します。
-
アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。
Fastly は、アップロードプロセス中に VCL コードの更新バージョンを検証します。 検証に失敗した場合は、カスタム VCL スニペットを編集して問題を修正します。 次に、VCL を再度アップロードします。
カスタム VCL スニペットの変更
-
管理者に ログインします。
-
ストア/設定/設定/詳細/システム をクリックします。
-
フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。
-
アクション 列で、編集するスニペットの横にある設定アイコンをクリックします。
-
ページのリロード後、「Fastly 設定 _セクションの Fastly に VCL をアップロード_ をクリックします。
-
アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。
カスタム VCL スニペットの削除
-
管理者に ログインします。
-
ストア/設定/設定/詳細/システム をクリックします。
-
フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。
-
アクション 列で、削除するスニペットの横にあるごみ箱アイコンをクリックします。
-
次のモーダルウィンドウで、「DELETE」をクリックし 新しいバージョンをアクティベートします。