Amazon S3 存储桶策略只允许访问特定的 http
Posted
技术标签:
【中文标题】Amazon S3 存储桶策略只允许访问特定的 http【英文标题】:Amazon S3 bucket policy allow access to ONLY specific http 【发布时间】:2019-10-07 05:23:15 【问题描述】:我正在尝试使用存储桶策略将 Amazon S3 存储桶中的对象(媒体文件)的访问权限限制为特定的引用域 privatewebsite.com
,但无论引用的域如何,访问都会被拒绝。
我对阻止公共访问有以下设置
阻止对通过新访问控制列表 (ACL) 授予的存储桶和对象的公共访问 - 开启
阻止对通过任何访问控制列表 (ACL) 授予的存储桶和对象的公共访问 - 开启
阻止对通过新的公共存储桶策略授予的存储桶和对象的公共访问 - 关闭
通过任何公共存储桶策略阻止公共和跨账户访问存储桶和对象 - 关闭
我已经添加了以下代码、带有和不带有 http:// 和 https:// 的 URL,但仍然被拒绝访问。 (privatewebsite.com, https://privatewebsite.com, http://privatewebsite.com)
"Version": "2012-10-17",
"Id": "Policy8675309",
"Statement": [
"Sid": "Stmt8675309",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-media-bucket/*",
"Condition":
"StringLike":
"aws:Referer": "https://privatewebsite.com"
,
"Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-media-bucket/*",
"Condition":
"StringNotLike":
"aws:Referer": [
"https://privatewebsite.com/*",
"http://privatewebsite.com/*"
]
]
任何人都可以在我的存储桶策略中看到任何明显的错误吗?
我希望此政策允许来自 privatewebsite.com 上的页面的任何请求,同时拒绝所有其他请求,但目前所有请求都被拒绝。
【问题讨论】:
旁注:Referer
很容易被伪造,因此它不是一种好的安全形式。请注意您提供的信息。
【参考方案1】:
为你尝试这个类似字符串的部分(允许部分):
"StringLike":
"aws:Referer": [
"https://privatewebsite.com/*",
"http://privatewebsite.com/*"
]
【讨论】:
【参考方案2】:来自Bucket Policy Examples - Restricting 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/*"
]
]
此方法仅授予给定Referer 的Allow
访问权限。无需使用Deny
策略,因为默认情况下拒绝访问。因此,仅授予Allow
权限。
【讨论】:
以上是关于Amazon S3 存储桶策略只允许访问特定的 http的主要内容,如果未能解决你的问题,请参考以下文章
允许用户访问特定 S3 存储桶进行备份的 AWS IAM 策略
从 Azure 数据块读取 Amazon S3 特定文件夹,无需公开访问存储桶