LOG IN SIGN UP
Documentation

Access Control List (ACL) の作成

  Last updated July 12, 2017

Varnish では、 Access Control List (ACL) を利用することができます。 この機能を利用することによって、 クライアントの IP アドレスを定義された IP アドレスのリストに対して素早く照合させることが出来ます。ACL の例を以下に示します。

# Who is allowed access ...
acl local {
  "localhost";
  "192.168.1.0"/24; /* and everyone on the local network */
  ! "192.168.1.23"; /* except for the dial-in router */
}

ACL を定義する

ACL を使用するにはカスタム VCL を利用します。次の手順で Fastly のボイラープレート VCL に ACL を追加して下さい。

  1. Fastly サポート に、ご自身のアカウントへの カスタム VCL アップロード 機能の有効化の依頼をして下さい。
  2. Fastly VCL とカスタム VCL の混在とマッチング方法を参照してください。
  3. ACL の定義を適切な場所に記載したカスタム VCL を作成して下さい。ACL は以下の例を参考にして下さい。定義した ACL は設定の (vcl_recv) 配下で参照することが出来ます。カスタム VCL では#FASTLY recv の前または後ろに記載します。記載場所は Varnish が処理を実行する順番に影響します。

     # If you are using the "include" keyword
     include "myACL1.vcl";
    
     # And/or if you are using an actual ACL block
     acl local {
       "localhost";
       "192.168.1.0"/24; /* and everyone on the local network */
       ! "192.168.1.23"; /* except for the dial-in router */
     }
    
     sub vcl_recv {
       # block any requests to Admin pages not from local IPs
       if (req.url ~ "^/admin" && client.ip !~ local) {
         error 403 "Forbidden";
       }
     }
    
  4. ご利用のサービスの Varnish Configuration エリアにファイルをアップロードします。

シールディング利用時の注意事項

シールディングをご利用の場合は、クライアント IP のチェックがエッジで一度だけ行われるように注意する必要があります。例えば、次のように設定します。

sub vcl_recv {
  # block any requests to Admin pages not from local IPs
  if (req.url ~ "^/admin" && client.ip !~ local && !req.http.Fastly-FF){
    error 403 "Forbidden";
  }
}

client.ip は Fastly に接続してきたソースアドレス情報を含みます。 オリジンシールディング が有効な場合、シールドサーバー側ではこの値は接続元の Fastly POP の IP で上書きされています。 Fastly-FF ヘッダーはエッジノードでリクエストに付与されるので、このコードがシールドサーバーでは実行されないために利用されています。

位置情報や cookie の有無などリクエストの他の属性に基づいて、 異なる挙動を設定することも可能です。


Back to Top