【发布时间】:2017-12-04 11:43:30
【问题描述】:
我的目标是拒绝所有用户对存储桶的大部分内容进行写入访问,但一个用户拥有对附加到用户的单独策略中定义的存储桶的完全访问权限。存储桶的顶级目录都包含类似的子目录。我需要拒绝访问除名为subf 的所有子目录类型。大多数顶级目录都包含名为subf 的子目录。
这是我目前的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::111122223333:root",
"arn:aws:iam::111122223333:user/system"
]
},
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteBucket",
"s3:DeleteBucketWebsite",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:PutAccelerateConfiguration",
"s3:PutBucketAcl",
"s3:PutBucketCORS",
"s3:PutBucketLogging",
"s3:PutBucketNotification",
"s3:PutBucketRequestPayment",
"s3:PutBucketTagging",
"s3:PutBucketVersioning",
"s3:PutBucketWebsite",
"s3:PutLifecycleConfiguration",
"s3:PutReplicationConfiguration",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectVersionTagging",
"s3:Replicate*",
"s3:RestoreObject"
],
"Resource": [
"arn:aws:s3:::bucket-test-a/*",
"arn:aws:s3:::bucket-test-a"
],
"Condition": {
"StringNotLike": {
"s3:prefix": ["*/subf/*"]
},
"StringEquals": {
"s3:delimiter": ["/"]
}
}
}
]
}
尝试将此策略放在存储桶上时,我收到错误消息:
"调用 PutBucketPolicy 时发生错误 (MalformedPolicy) 操作:条件不适用于动作组合和 声明中的资源"
我发现的最佳线索是“字符串条件旨在作为新对象的要求应用”https://serverfault.com/questions/569046/anonymous-access-to-s3-bucket-only-from-my-ec2-instances 我一直很难找到文档来深入研究。
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-iam