【发布时间】:2019-05-01 11:47:26
【问题描述】:
我正在设置一个基于 S3 的公共网站,并且我想拒绝我的 CloudFront 分配之外的用户直接访问我的 s3 存储桶。同时我希望自己(管理员)能够直接访问 s3 内容。我也想允许 CodeBuild 服务访问同一个存储桶。
亚马逊建议“添加一个允许 s3:GetObject 权限的存储桶策略,使用 aws:referer 键,获取请求必须来自特定网页。”:
但如果我添加一个 Explicit Deny 部分:
{
"Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"StringNotLike": {"aws:Referer": ["http://www.example.com/*","http://example.com/*"]}
}
我失去了将文件直接上传到 s3 存储桶的机会,CodeBuild Service 也无法对我的存储桶执行任何操作。
如何在我的存储桶策略中实施条件以拒绝访问:
ONLY IF
("StringNotLike": {"aws:Referer": "https://www.example.com"})
OR
("StringNotLike": {"aws:userid": "my root user id"})
OR
(my bucket is not requested by CodeBuild Service)
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-codebuild