【发布时间】: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