我搜索了现有的问题而无法找到答案。因此在这里张贴。
我想限制所有用户访问S3存储桶,除了使用S3 Bucket策略选择少数用户。我理解IAM策略易于管理和管理,我不想为这个特定情况创建角色和组,并希望创建S3存储桶策略。
这是我到目前为止所尝试的内容,并不是按预期限制对用户的访问。
{
"Version": "2012-10-17",
"Id": "bucketPolicy",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::1234567890:user/allowedusername"]
},
"Action": "s3:*",
"Resource": ["arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"]
},
{
"Effect": "Deny",
"Principal": {
"AWS": ["arn:aws:iam::1234567890:user/denieduser"]
},
"Action": "s3:*",
"Resource": ["arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"]
}
]
}
我试图拒绝以下所有内容,但明确的拒绝优先于允许而我自己现在无法访问存储桶;-(这是另一个问题我有
{
"Effect": "Deny",
"Principal": {
"AWS": ["*"]
},
"Action": "s3:*",
"Resource": ["arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"]
}
答案 0 :(得分:4)
要实现您想要的效果,请使用" NotPrincipal"政策要素。以下策略将确保除了" NotPrincipal"中列出的用户之外,没有其他用户可以访问存储桶。元件。
{
"Id": "bucketPolicy",
"Statement": [
{
"Action": "s3:*",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::1234567890:user/alloweduser"
]
},
"Resource": [
"arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"
]
}
],
"Version": "2012-10-17"
}