LOG IN SIGN UP
Documentation

基本認証

  Last updated August 02, 2018

基本認証はエッジにおいてウェブサイトを保護する簡単な方法です。ユーザは基本認証で保護されたページにアクセスするためにユーザ名とパスワードの組み合わせを入力します。テスト環境やステージング環境などリスクの低いページであれば、基本認証を使用してアクセスを制限することができます。基本認証は、カスタム VCL または VCL スニペットを使用して実装できます。

以下の手順に従って、サービスに基本認証を設定します。

  1. Base64でエンコードされたユーザー名とパスワードのリストを含むエッジディクショナリを作成します。ユーザー名をプレーンテキストに含めて参照できるようにしておきます。API でエッジディクショナリを作成しディクショナリ項目を追加します。もしくは、カスタム VCL でディクショナリテーブルを作成することも可能です。

    table customer_keys {
      "Basic am9lOjQzNEAvMzkyIzgyPzk2": "joe",
      "Basic bWlrZTo4MjM0MzNzWjQ0SDZlNw==": "mike"
    }
    

    キーペアの最初の値は、Base64 でエンコードされたユーザー名とパスワードです。以下の方法で、ターミナルアプリケーションで生成することができます。この例ではユーザ名が joe、パスワードが 434@/392#82?96 です。

    $ echo -ne joe:434@/392#82?96 | base64
    am9lOjQzNEAvMzkyIzgyPzk2
    

    出力の (am9lOjQzNEAvMzkyIzgyPzk2) が最初のキーペアの値とります (Basic am9lOjQzNEAvMzkyIzgyPzk2)。

  2. vcl_recv では、ユーザの認証情報に対してテーブルの参照するコードを作成します。

    ##table lookup from customer_keys dictionary, plus part in vcl_error
    if(! table.lookup(customer_keys, req.http.Authorization) ) {
      error 401 "Restricted";
    }
    
    
  3. vcl_error では、401 Restricted のカスタム HTML ページを作成します。

    ## Start 401 custom code
    if (obj.status == 401) {
      set obj.http.Content-Type = "text/html; charset=utf-8";
      set obj.http.WWW-Authenticate = "Basic realm=Secured";
      synthetic {"
    
     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
    
     <HTML>
     <HEAD>
     <TITLE>Error</TITLE>
     <META HTTP-EQUIV='Content-Type' CONTENT='text/html;'>
     </HEAD>
     <BODY><H1>401 Unauthorized (varnish)</H1></BODY>
     </HTML>
     "};
      return (deliver);
    } # End custom 401 code
    

GCSでの基本認証

Google Cloud Storage (GCS) をオリジンサーバとして利用し、基本認証を行う場合には、 HTTP リクエストとレスポンスのヘッダー追加・変更により http.Authorization ヘッダを削除し、GCS に送信しないようにします。このヘッダーが GCS に送信されると "Not Authorized" の原因となります。

セキュリティへの考慮

基本認証を使用する前にセキュリティ上の考慮事項がいくつかあります。

アクセス制御リストの使用

基本認証の代わりに、アクセス制御リスト (ACL) を使用して、IP アドレスのセットをホワイトリストに登録することで、アセットへのアクセスを制限することができます。ACL で IP アドレスをホワイトリストに登録するには、カスタム VCL を Fastly のボイラープレート VCL に追加します。

# 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 ガイドを を参照してください。


Back to Top