2013-10-22 146 views
1

我的目標是允許一個用戶將對象放入s3存儲桶。我想過應用桶策略。我知道你不能拒絕PutObjects給所有的用戶,然後用允許的方式覆蓋所需的用戶。我曾希望使用條件「ArnNotEquals」從否認政策聲明排除單個用戶:Amazon S3存儲桶策略拒絕所有用戶的putObject權限,但只有一個用戶

"Statement": [ 
    { 
     "Sid": "allow only OneUser to put objects", 
     "Effect": "Deny", 
     "Principal": { 
      "AWS": "*" 
     }, 
     "Action": "s3:PutObject", 
     "Resource": "arn:aws:s3:::myBucket/*", 
     "Condition": { 
      "ArnNotEquals": { 
       "aws:SourceArn": "arn:aws:iam::123456789012:user/OneUser" 
      } 
     } 
    } 
] 

然而,這否認PutObjects所有用戶的結果。我在正確的軌道上嗎?我能爲此制定一個桶策略嗎?或者我需要看看其他地方,如ACL(Access Control List)?

+1

退房在http://stackoverflow.com/questions/9605455/how-to-set-amazon-s3-bucket-policy-to-private-to答案和註釋-everyone-except-admin。他似乎也面臨類似的問題,他的結論是使用ACL,因爲他無法獲得桶策略。 –

回答

4

要做到這一點的方法是使用NotPrincipal策略元素。它允許您將策略應用於除特定列表之外的所有原則。那麼你的政策會成爲:

"Statement": [ 
    { 
     "Sid": "allow only OneUser to put objects", 
     "Effect": "Deny", 
     "NotPrincipal": { 
      "AWS": "arn:aws:iam::123456789012:user/OneUser" 
     }, 
     "Action": "s3:PutObject", 
     "Resource": "arn:aws:s3:::myBucket/*" 
    } 
] 
相關問題