我创建了一个Amazon S3存储桶,该存储桶本质上是私有的,但是我不希望我的用户在该存储桶内创建任何公共对象。我应该如何通过该存储桶的S3策略来做到这一点?我尝试过,但收到错误消息,指出该政策资源无效。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyPublicReadGetObject",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": [
" arn:aws:s3:::aws-my-bucket-s3-vk/*"
]
}
]
}
用户应该能够访问存储桶并创建新对象/从具有必要权限的EC2实例内部获取对象。
在S3控制台上,存储桶名称之后有一个访问列,应显示为“存储桶和对象不能为公共对象”。
答案 0 :(得分:1)
默认情况下,所有Amazon S3存储桶均为私有。除非已通过IAM策略,存储桶策略或对象级权限被授予访问权限,否则任何人都无法访问/使用存储桶或其内容。
您似乎希望特定的Amazon EC2实例能够使用存储桶。因此:
PutObject
和GetObject
)无需使用Deny
策略。它将始终覆盖其他策略。最好使用Allow
策略来授予访问权限,但只授予所需的实体。
以下是一些政策示例:User Policy Examples - Amazon Simple Storage Service
答案 1 :(得分:1)
您应该在S3存储桶上启用Block Public Access。这样可以防止任何人在该存储桶中公开对象。您还应该限制哪些IAM用户/角色/策略有权修改阻止公共访问设置。
Amazon S3阻止公共访问设置将覆盖S3存储桶策略和对象级别权限,以防止公共访问。