🐈

S3へのアクセスを特定のFQDNに限定する

2023/11/27に公開

概要

S3へのアクセスをパブリックにしており、このままだとどこからでもアクセスできてしまうので特定のFQDNに限定する方法について調べました。

そこで、バケットポリシーで制御する方法があったので備忘録として残します。

バケットポリシーを設定する

例えばexample.comというサイトからのアクセスに限定したい場合は、バケットポリシーにHTTP Refererへのアクセス制限を追加すれば良いです。

{
  "Version":"2012-10-17",
  "Id":"http referer sample",
  "Statement":[
    {
      "Sid":"Allow all requests originating from example.com.",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:*",
      "Resource":"arn:aws:s3:::sample-bucket/*",
      "Condition":{
        "StringLike":{"aws:Referer":["http://example.com/*"]}
      }
    }
  ]
}

ConditionにFQDNを指定するだけでこれ以外のアクセスは拒否するようになります。

注意事項

公式にも載っていますが、不当なユーザーはカスタムブラウザなどを使用することでRefererを偽装できるので扱いには注意が必要です。

参考

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-use-case-4

Discussion