2012-07-21 161 views
6

我在IAM帐户的用户名为“testuser的”谁拥有管理员权限,就像这样:为什么我的AWS S3桶策略不会覆盖我的IAM策略?

{ 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": "*", 
     "Resource": "*" 
    } 
    ] 
} 

然后,我有我的S3存储桶的策略,拒绝该用户的访问,就像这样:

{ 
    "Statement": [ 
    { 
    "Effect": "Deny", 
    "Principal": { 
    "AWS": "my-account-id:user/testuser" 
    }, 
    "Action": "s3:*", 
    "Resource": "arn:aws:s3:::my-bucket-name/*" 
    } 
    ] 
} 

那么,S3存储桶策略中的显式拒绝应该覆盖来自IAM策略的允许权限吗?但是,当我以testuser身份登录时,我仍然可以访问该存储桶中的所有内容 - 我甚至可以更改或删除该存储桶(以及其他每个存储桶)的存储桶策略。为什么我不明确否认做任何事情?

+0

通过获得的一切你的意思刚刚上市的桶含量或者你也可以得到/放文件? – 2012-07-21 23:09:17

+0

我的意思是任何事情 - 查看文件,添加文件,查看存储桶策略,编辑存储桶策略等。 – Dasmowenator 2012-07-22 04:02:00

回答

6

尝试使用完整的ARN形式在桶策略的用户ID:

"Principal": { 
    "AWS":["arn:aws:iam::accountid:user/testuser"] 
} 
+0

感谢您的回复 - 不幸的是这没有任何影响 – Dasmowenator 2012-07-22 04:09:54

+7

您指定的策略应该防止'testuser'获得/放入/删除对象,但不会阻止他们列出存储桶内容。为此你必须使用''Resource':[“arn:aws:s3 ::: my-bucket-name/*”,“arn:aws:s3 ::: my-bucket-name”]'in拒绝规则(因为'ListBucket'这样的动作由桶ARN而不是桶/ *控制)。 – 2012-07-22 09:16:26

+0

谢谢 - 修复了这个问题 – Dasmowenator 2012-07-22 20:08:15