amazon-web-services - 阻止人们从 s3 amazon Bucket 下载文件(图像)
问题描述
如何修改 S3 存储桶策略以使人们可以在网站上看到图像但如果他们尝试下载图像,s3 会禁止他们的请求。(安全图像文件)
{
"Version": "2012-10-17",
"Id": "Policyid",
"Statement": [
{
"Sid": "policyid",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://www.mywebsite.com/*",
"http://mywebsite.com/*"
]
}
}
}
]
}
解决方案
阻止人们直接从 S3 下载您的对象而不是使用您的网站的一种方法是通过CloudFront
and Origin Access Identity
:
多亏了这一点,您将能够阻止人们直接访问您的 S3 对象(图像):
例如,如果您使用 CloudFront 签名 URL 或签名 cookie 来限制访问,您也不希望人们能够通过简单地使用文件的直接 Amazon S3 URL 来查看文件。相反,您希望他们仅使用 CloudFront URL 访问文件,以便您的保护工作。
AWS文档中提供了有关如何设置的完整详细信息。作为设置过程的一部分,您的存储桶策略必须进行如下修改(来自文档的示例):
{
"Version": "2012-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::awsexamplebucket/*"
}
]
}
上述存储桶策略确保只能CloudFront Origin Access Identity
访问您的对象。您的用户将无法直接执行相同操作。
推荐阅读
- matlab - Matlab,将单个字符分配给单元格数组的单元格
- c++ - 没有 QNetworkConfiguration 虽然我可以连接到 WIFI
- java - org.springframework.expression.spel.SpelEvaluationException
- mysql - MySQL Linked Server 无法更新长文本
- cassandra - cassandra cqlsh 无法显示 column_family 的自定义属性
- angular - TypeError:无法读取未定义的属性“形式”
- java - 是否要从字符串池中删除旧字符串?
- swift - 使用 nextObject() 枚举集合不能按预期工作?
- ios - prefersLargeTtitles 加载 WKWebView 网页后自动折叠
- react-native - 如何阅读联系人 - 反应原生