share facebook facebook2 twitter menu hatena pocket slack

2015.01.23 FRI

Amazon S3にてBasic認証をかける

廣山 豊

WRITTEN BY廣山 豊

cloudpack廣山です。

Amazon S3 で静的サイトをホスティングする、Static Website Hosting。
便利で高性能だが、Basic認証がかからない。

リバースプロキシを介することで対応してみる。
リバースプロキシサーバがボトルネックとなり、せっかくのStatic Website Hostingの性能も生かせないが、とりあえずやってみる。

描くまでもないが、構成はこんな感じ。
Amazon S3にてBasic認証をかける: 構成図

以下、手順。
① webサーバでリバースプロキシの設定を行う。

<IfModule mod_proxy.c>
ProxyPass /hoge http://xxx.s3-website-ap-northeast-1.amazonaws.com/app
ProxyPassReverse /hoge http://xxx.s3-website-ap-northeast-1.amazonaws.com/app
</IfModule>

② webサーバでリバースプロキシにBasic認証を設定

<IfModule mod_proxy.c>
  <Proxy *>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch

    AuthType Basic
    AuthName "Secret Zone"
    AuthUserFile /xxx/yyy/.htpasswd
    Require user fuga
  </Proxy>
...
</IfModule>

③ S3のバケットポリシーで、送信元IPアドレスをwebサーバに絞る。

{
    "Version": "2008-10-17",
    "Id": "Policy1403165896111",
    "Statement": [
        {
            "Sid": "Stmt1403165893575",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::xxx/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "##.##.##.##/##"
                    ]
                }
            }
        }
    ]
}

元記事はこちらです。
Amazon,S3にてBasic認証をかける