S3にBasic認証を設定する方法




Basic認証をかける方法

S3はホスティングの機能はありますがBasic認証を設定する機能はないのでEC2にNginxをインストールしてNginxでBasic認証を実現します。

やることは

  1. Basic認証の設定
  2. S3へのアクセス制限

1. Basic認証の設定

Nginxとhttpd-toolsのインストール

httpd-toolsはBasic認証をかけるための設定を作成するのに使用します。

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

Basic認証の設定

Basic認証の設定ファイルを作成します。

$ sudo htpasswd -c /etc/nginx/.htpasswd "Basic認証のユーザー名"
  New password: "Basic認証で利用するパスワードを入力"
  Re-type new password: "パスワード"
  Adding password for user *******

次にconfの設定を行います。この設定でBasic認証とNginxサーバーの80番ポートからホスティングしているS3にリクエストを流すことができます。

$ sudo vi /etc/nginx/conf.d/proxy.conf

server {
    listen       80;
    server_name ***.***.**.**; // ホスト名またはipアドレス

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

Nginxの起動と自動起動を設定

$ sudo service nginx start
$ sudo chkconfig nginx on

2. S3へのアクセス制限

S3へのアクセスを制限しないとBasic認証の意味がないので設定します。設定方法は簡単でAWSコンソールから行います。

バケットのアクセス制限、バケットポリシーから設定を行います。

Conditionの項目を追加してaws:SourceIpにIPまたはホスト名を設定すればそこからのアクセスのみ許可することができます。設定は以上です。

{
    "Version": "2012-10-17",
    "Id": "Policy**************",
    "Statement": [
        {
            "Sid": "Stmt*************",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::*********/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "***.***.**.**" //ここにNginxをインストールしたサーバーのipアドレスを設定
                    ]
                }
            }
        }
    ]
}

おすすめ本

インフラを構築する上でAWSの仕組みを理解しておくのはマストの知識となるのでこちらの書籍をぜひ参考にしてみてください。初学者からAWSを使ったことある人まで幅広く為になる技術書だと思います。

Amazon Web Services実践入門 (WEB+DB PRESS plus)

関連情報

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です