search
LoginSignup
13

More than 5 years have passed since last update.

posted at

updated at

S3+EC2でBasic認証を設定をする

やりたかった事

S3にBasic認証をかけてみたかったので、試してみました。
S3+EC2構成で、Basic認証を行います。

Untitled (1).png

今回の環境

・EC2( Amazon Linux AMI release 2015.09 )
 自分が接続する拠点からの、http(80番)・SSH(22番)のアクセスを許可

・S3バケット
 S3バケットを1つ作成する(今回は s3.k-staging.com というバケット名で作成)
 ウェブサイトのホスティングを有効にしておく

・Route53
 ドメイン「 s3.k-staging.com 」を発行する
 TypeはCNAMEで、Valueには上記EC2のPublic DNSを設定する

S3バケット設定

バケットポリシーを以下のように設定します。

{
    "Version": "2012-10-17",
    "Id": "PolicyXXXXXXXXXXXXX",
    "Statement": [
        {
            "Sid": "StmtXXXXXXXXXXXXX",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::s3.k-staging.com/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "52.XX.XX.XX/32(EC2のIPアドレスを記述)"
                    ]
                }
            }
        }
    ]
}

※「aws:SourceIP」にEC2のIPアドレスを記述する事により、EC2以外からS3バケット( s3.k-staging.com.s3-website-ap-northeast-1.amazonaws.com )を直接参照できないようにしてます。

EC2設定

まずNginxとhttpd-toolsをインストールします。

$ sudo yum install nginx
$ sudo yum install httpd-tools

下記手順で、.htpasswdファイルを作成します。

$ sudo htpasswd -c /etc/nginx/.htpasswd "Basic認証で利用するユーザー名(今回は k-staging と入力)"
  New password: "Basic認証で利用するパスワードを入力"
  Re-type new password: "再度パスワードを入力する"
  Adding password for user k-staging

Nginxのconfigを、以下のとおり作成します。

/etc/nginx/conf.d/proxy.conf
server {
    listen       80;
    server_name  s3.k-staging.com;

    location / {
        auth_basic "Basic Auth";
        auth_basic_user_file /etc/nginx/.htpasswd;
        proxy_pass http://s3.k-staging.com.s3-website-ap-northeast-1.amazonaws.com;
    }
}

Nginxを起動し、自動起動設定をONにします。

$ sudo service nginx start
$ sudo chkconfig nginx on

これで s3.k-staging.com に対するBasic認証が設定できました。
動作確認してみます。

動作確認

ブラウザに「 s3.k-staging.com 」を入力し、Basic認証が出来るか確認します。
qiita201511240906.png

qiita201511240040.png

Basic認証がかかってますね。
念のため、S3に直接アクセスできないかどうかも確認してみます。
ブラウザにS3のURL( s3.k-staging.com.s3-website-ap-northeast-1.amazonaws.com )を入力します。

qiita201511240052.png

アクセスできませんね!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
13