We've been making changes to how we organize and display our docs. Our work isn't done but we'd love your feedback.
Getting started
Basics
Domains & Origins
Performance

Configuration
Basics
Conditions
Dictionaries
Domains & Origins
Request settings
Cache settings
Headers
Responses
Performance
Custom VCL
Image optimization
Video

Security
Access Control Lists
Monitoring and testing
Securing communications
TLS
Web Application Firewall

Integrations
Logging endpoints
Non-Fastly services

Diagnostics
Streaming logs
Debugging techniques
Common errors

Account info
Account management
Billing
User access and control

Reference

    基本認証

      Last updated August 02, 2018

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

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

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

      1
      2
      3
      4
      
      table customer_keys {
        "Basic am9lOjQzNEAvMzkyIzgyPzk2": "joe",
        "Basic bWlrZTo4MjM0MzNzWjQ0SDZlNw==": "mike"
      }
      

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

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

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

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

      1
      2
      3
      4
      5
      
      ##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 ページを作成します。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      
      ## 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 に追加します。

    1
    2
    3
    4
    5
    6
    
    # 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