Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
13
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@k-staging

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

アクセスできませんね!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
13
Help us understand the problem. What are the problem?