我想限制公共存取我们存储在S3中的某些对象,但在相同层次的密钥中显示其他对象。例如,假设我想让bucketname/*
公开可读。但是想要阻止任何未明确授予IAM访问权限的用户访问bucketname/*/hidden/*
。仅适用于公共限制的Amazon S3存储桶策略
我可以做到这一点就像一只水桶政策:
{
"Id": "Policy123",
"Statement": [
{
"Sid": "Stmt123",
"Action": [ "s3:GetObject" ],
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucketname/*",
"Principal": {
"AWS": [ "*" ]
}
},
{
"Sid": "Stmt124",
"Action": [ "s3:GetObject" ],
"Effect": "Deny",
"Resource": "arn:aws:s3:::bucketname/*/hidden/*",
"Principal": {
"AWS": [ "*" ]
}
]
}
但防止我已授予任何IAM用户/用户组访问隐藏的对象。在第二条语句中是否有本金的设置,只有匹配未经身份验证的访问?或者更好的是,有没有办法只列出那些校长那应该不是受政策声明影响?
更新2016年:您现在可以使用http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#NotPrincipal标记来表示“所有校长,但... – Claude 2016-11-18 21:35:02