我只允许在我的网站上使用s3文件。他们应该能够从我的网站上下载文件。并非来自任何其他站点。请告诉我我该怎么做。
我尝试了存储桶策略和cros配置,但是没有用。
答案 0 :(得分:1)
您可以使用CORS标头https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html限制来源,这只会阻止直接显示或处理的跨站点资源,而不是要下载的文件
作为解决方案-将S3存储桶设为私有(非公开),您的网站可以为S3资源生成带符号的到期(临时)网址 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-urls.html
有多个博客,仅以搜索为例
答案 1 :(得分:0)
您可以将存储桶策略编码为Restrict Access to a Specific HTTP Referrer:
{
"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/*"]}
}
}
]
}
但是,这是伪造的,因此它不是保证访问控制的方法。
如果您真的希望控制谁可以访问您的内容,则您的应用程序应验证用户身份(例如用户名/密码),然后生成有时间限制的 Amazon S3 Pre-签名的网址。这通常是您提供私人内容(例如个人照片和PDF文件)的方式。