0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

S3のホスティングに特定のIP(VPN)経由のみアクセスする方法

Last updated at Posted at 2021-02-25

■ 概要

S3でホスティングしたページに対して、
VPN接続している場合のみアクセスできる状態にするための方法です。

■ 背景

今回、このような対応をしたこんな背景になります。

  • DBのスキーマを社内のみで公開したい。

という要件をいただきました。
担当のエンジニアからは検証サーバーにアップロードするのはどうかという案が出ていたのですが、
本番環境とずれてしまうことになります。
かと言って、スキーマのためだけに別のサーバーを立てるのもめんどくさい。。。

ということで、今回はS3のホスティングを利用することにしました。
処理を行わない静的なページなのでS3のホスティングで事足ります。
また、バケットポリシーを設定することで、VPN接続した時のみ閲覧できるようにできます。

ということで早速みていきましょう。

■ 各種設定方法

1. S3バケットの作成

S3に新しくバケットを作成します。
この時にブロックパブリックアクセスのバケット設定を設定しておきます。
create_bucket_s3.png

2. ホスティングを有効化

次にホスティングを行います。
新しく追加したバケットにどんな内容でもいいのでindex.htmlを設置します。
その後にS3のプロパティタブの中にある「静的ウェブサイトホスティング」の編集に遷移します。
以下のスクショのように有効にして、インデックスドキュメントをindex.htmlにします。
今回は社内用なのでエラードキュメントは設置しておりません。
static_hosting_s3.png

完了すると、ホスティングのページで以下のようにURLが表示されるのでアクセスすると、
設置したindex.htmlの内容が閲覧できるかと思います。
hosting_url_s3_mozaik.png

3. VPNのみ許可するバケットポリシーの設定

ここが今回のメインどころです。
結論、VPN経由のみでアクセス可能にするには以下の設定をバケットポリシーに追加します。
「バケット名に置換」と「IPに置換」の部分は設定するご自身の環境に合わせて書き換えてください。

{
    "Version": "2012-10-17",
    "Id": "SourceIP",
    "Statement": [
        {
            "Sid": "SourceIP",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::バケット名に置換",
                "arn:aws:s3:::バケット名に置換/*"
            ],
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "VPNのプライベートIPに置換",
                        "VPNのパブリックIPに置換"
                    ]
                }
            }
        }
    ]
}

VPNのプライベートIPは検証のサーバーのEC2からアクセスするためのものになります。
パブリックIPは実際にブラウザからアクセスして閲覧する用のものです。
こちらがないと閲覧できなくなるのでご注意ください。

バケットポリシーを誤って設定してしまったら

もし、誤った設定を追加してしまうと、ご自身も閲覧や編集も行えなくなってしまいます。
その場合はAWSにルートユーザーでログインしてください。
そうすればバケットポリシーの削除や編集が行えます。

以上でVPN経由でのみ閲覧できるS3のホスティングの仕組みができます。
もし間違っている部分だったり、もっと改善できる点などをご存知でしたら、コメントをいただけると幸いです。

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?