具有 N 个域的 AWS S3 动态 HTTP Referer 策略
AWS S3 Dynamic HTTP Referer policy with N domains
实施一个应用程序,其中 S3 图像只能通过列入白名单的域列表进行热链接。
对于一个简单的案例,我可以创建一个带有静态域列表的 Referer Policy,例如:
{
"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 个域列入白名单,因此我正在努力寻找最佳的扩展方法。
由于S3的策略框架长度限制,没有采用该方案。
实施一个应用程序,其中 S3 图像只能通过列入白名单的域列表进行热链接。
对于一个简单的案例,我可以创建一个带有静态域列表的 Referer Policy,例如:
{
"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 个域列入白名单,因此我正在努力寻找最佳的扩展方法。
由于S3的策略框架长度限制,没有采用该方案。