S3のバケットにIPアドレスでアクセス制限を設定する

アプリケーション開発

本記事では、AWSにデプロイしたアプリケーションへのアクセスをIPアドレスで制限する方法を紹介します。

Z-A-K-I
Z-A-K-I

SPAのアプリケーションを特定の人だけに公開したい!

と、思ってる方におすすめです。

この記事では、以下のことを紹介してます。

  • S3のバケットポリシーの設定方法
  • 指定したIPアドレスのみ許可するバケットポリシー

AWSのS3上にデプロイしたVue.jsのアプリケーションを特定のIPアドレスからのみアクセスを許可する方法を手順を追って解説します。

Vue.jsのアプリケーションをS3にデプロイする手順は以下記事を参照ください。

S3(静的ウェブサイトホスティング)のバケットポリシーの設定

静的ウェブホスティングの場合、デフォルトではすべてのIPアドレスからのアクセスが拒否される設定となってます。

アプリケーションを公開するためにバケットポリシーを変更しなければなりませんが、AWSのチュートリアルに従い設定すると、以下のように「全ての利用者」に「オブジェクトの読み取り」権限を付与する形式となってました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::vue.second.s3.bucket/*"
        }
    ]
}

サービスとして本番稼働する場合は、上記でよい気もしますが身内や会社だけに公開するサービスとしたい場合には、許可する相手を制限する必要があります。

今回は、勉強中のサイトのため、自宅と会社のIPアドレスからのみアクセスを許可するポリシーを書いていきます。

指定したIPアドレスのみ許可するバケットポリシー

指定したIPアドレスのみを許可する場合、Conditionを使って条件を設定します。「SourceIp」の部分に許可するIPアドレスを設定します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::vue.second.s3.bucket/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "xxx.xxx.x.xxx/24",
                        "xxx.xxx.x.xxx/24",
                        "xxx.xxx.x.xxx/24"
                    ]
                }
            }
        }
    ]
}

上記の設定を行うと、許可していないIPアドレスからのアクセスの場合、以下画面が表示されるようになります。
image.png

まとめ

本記事では、本記事では、AWSにデプロイしたアプリケーションへのアクセスをIPアドレスで制限する方法を紹介しました。

S3上にアップロードしたファイルを特定の相手のみに公開したいケースは度々発生します。その際に本記事の内容を活用していただきたく思います。

本記事が皆様の参考になれば幸いです。

参考サイト

当記事を記載するにあたって、以下のサイトを参考とさせていただきました。ありがとうございます。

IAM JSON ポリシー要素Resource - AWS Identity and Access Management
IAM JSON ポリシー言語の Resource 要素を記述します。
S3のバケットポリシー書き方まとめ - Qiita
最近AWSを勉強し始めたのですが、ポリシーを書くときに毎度迷子になるのでバケットポリシーを中心としてリソースベースのポリシーの書き方をまとめておきます。前提例えばS3を静的ホスティング先として…
この記事を書いた人
z_a_k_i

z_a_k_iと申します。

富山でITエンジニアとして働いています。
0歳児と3歳児を持つ30代メンズです。

このブログでは、以下の内容を紹介しています。

 ⚫︎アプリケーション開発
 ⚫︎富山県の情報発信

皆様に役立つ内容を紹介できるよう精進していきますので、
どうぞよろしくお願いします。

z_a_k_iをフォローする
アプリケーション開発

コメント