-
Guides
- Fastly Status
基本認証
Last updated August 02, 2018
基本認証はエッジにおいてウェブサイトを保護する簡単な方法です。ユーザは基本認証で保護されたページにアクセスするためにユーザ名とパスワードの組み合わせを入力します。テスト環境やステージング環境などリスクの低いページであれば、基本認証を使用してアクセスを制限することができます。基本認証は、カスタム VCL または VCL スニペットを使用して実装できます。
警告: 機密情報へのアクセスを制限には基本認証を使用すべきではありません。詳細については、セキュリティへの考慮を参照してください。
以下の手順に従って、サービスに基本認証を設定します。
-
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
)。 -
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"; }
-
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" の原因となります。
セキュリティへの考慮
基本認証を使用する前にセキュリティ上の考慮事項がいくつかあります。
- 基本認証はリスクの高い情報を保護できません。機密情報へのアクセスを制限するために使用しないでください。
- TLS を利用していない場合、認証情報は Base64 エンコードでそのまま送信されます。エンコードされた文字列は Wireshark などのアプリケーションを使用して簡単にキャプチャされ、平文に変換できます。
- パスワードはユーザーの Web ブラウザーによってキャッシュされ、ユーザーの Web ブラウザーによって永久に保管されます。
アクセス制御リストの使用
基本認証の代わりに、アクセス制御リスト (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