[ AWS ] S3で特定グローバル固定IPのみアクセス拒否設定をする

[ AWS ] S3で特定グローバル固定IPのみアクセス拒否設定をする

はじめに

AWS S3に関する Tips情報です。
S3環境下で静的ウェブサイトのホスティングを行っており、クライアント様の諸事情で特定のグローバル固定IPからのアクセスを拒否する事例があったので、記事にしたいと思います。

設定内容

バケットポリシー設定にて、公開している S3バケットポリシーに Condition ブロック内でNotIpAddress 条件と、aws:SourceIp 条件キー(拒否したいIP)で設定します。
なお、設定する際の送信元IPにはCIDR 記法で記載します。

設定例

{
  "Version": "2012-10-17",
  "Id": "S3PolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::examplebucket/*",
      "Condition": {
         "NotIpAddress": {"aws:SourceIp": "203.0.113.2/32"} 
      } 
    } 
  ]
}

※設定例にある、値はサンプル

まとめ

サーバレスアーキテクチャがより普及が広まり、静的ファイルのみであれば、サーバ環境不要でS3ウェブサイトホスティング機能のみでの運用が可能です。
これまでは Apache等のWEBサーバ上で、.htaccess ファイルで制御する事が多かったですが、S3上では .htaccess が利用できない代わりにバケットポリシーにて設定する必要があります。
他にも HTTPリファラ等、多様なポリシーを設定することができますので、機会があれば導入したいと思います。

参考文献

[ AWS Documentation ] 特定の IP アドレスへのアクセスの制限