Basic認証をかける方法
S3はホスティングの機能はありますがBasic認証を設定する機能はないのでEC2にNginxをインストールしてNginxでBasic認証を実現します。
やることは
- Basic認証の設定
- 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にブロックチェーンエンジニアとして入社。
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す