【问题标题】:AWS S3 Dynamic HTTP Referer policy with N domains具有 N 个域的 AWS S3 动态 HTTP 引用策略
【发布时间】:2023-05-27 09:17:01
【问题描述】:

实现一个应用程序,其中 S3 图像只能通过白名单域列表进行热链接。

对于一个简单的案例,我可以创建一个包含静态域列表的引用策略,例如:

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

我希望通过脚本语言从数据库动态生成此列表,然后通过 API SDK 发布到 AWS。

这可以通过为以下对象生成动态 JSON 字符串来完成:

["http://www.example.com/*","http://example.com/*"]

这是最好的做法吗?我找不到任何关于此的文档,但我想在 StringLike 条件下字符串匹配的数量是有限制的?

在 Condition 中创建一个单独的 StringLike 条目,每个域一个条目会更好吗?

我可能有 10000 个域要列入白名单,因此尝试找到扩展此范围的最佳方法。

【问题讨论】:

  • 整个存储桶策略是limited to 20KB 所以这可能是错误的解决方案。

标签: amazon-s3 policy http-referer whitelist bucket


【解决方案1】:

鉴于 S3 策略框架的长度限制,未使用此解决方案。

【讨论】: