2017-02-28 90 views
4

我正在研究S3存儲桶策略。這個想法是明確拒絕訪問帳戶中的所有IAM用戶,除了那些明確授予的用戶。如何在S3存儲桶策略中執行OR條件?

我找到一篇博客文章,解釋如何限制對特定用戶的訪問。它運作良好。但是,我想擴展語法以包含允許訪問的第二個IAM用戶。這實際上是一個OR條件。

但是,我對JSON很陌生,我不確定如何去做。

這裏是限制單個用戶訪問工作的政策:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Deny", 
      "Principal": "*", 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::my-bucket", 
       "arn:aws:s3:::my-bucket/*" 
      ], 
      "Condition": { 
       "StringNotLike": { 
        "aws:userId": [ 
         "AIDA<obfuscated id>:*", 
         "AIDA<obfuscated id>", 
         "111111111111" 
        ] 
       } 
      } 
     } 
    ] 
} 

誰能幫助我編輯上述JSON允許在那裏我可以指定將被允許額外的用戶ID OR條件訪問?

AdvThanksance!

回答

1

好吧,我明白了這一點。

首先,我試圖向Condition添加第二個StringgNotLike子句,但那不起作用。

在做了更多的閱讀之後,我意識到Condition子句接受多個鍵/值對。事實上,我在我的問題中展示的原始政策已經這樣做了。我只需要向已經存在的數組添加更多的值。

,工程的政策,看起來是這樣的:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Deny", 
      "Principal": "*", 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::my-private-bucket", 
       "arn:aws:s3:::my-private-bucket/*" 
      ], 
      "Condition": { 
       "StringNotLike": { 
        "aws:userId": [ 
         "AIDA<obfuscated-id-1>:*", 
         "AIDA<obfuscated-id-1>", 
         "AIDA<obfuscated-id-2>:*", 
         "AIDA<obfuscated-id-2>", 
         "111111111111" 
        ] 
       } 
      } 
     } 
    ] 
} 

當我意識到的關鍵已經指定的值的數組,我只是說第二個用戶ID陣列,和它的工作很大。

0

您不需要創建此拒絕規則,因爲除非有明確的允許規則,否則所有請求都是denied by default

要授權多個IAM用戶,可以將它們列爲數組元素。

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "AllowAllS3ActionsForSpecificIAMUsers", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": [ 
      "arn:aws:iam::<account-number-without-hyphens>:user/<username1>", 
      "arn:aws:iam::<account-number-without-hyphens>:user/<username2>" 
     ] 
     }, 
     "Action": "s3:*", 
     "Resource": [ 
     "arn:aws:s3:::my-bucket", 
     "arn:aws:s3:::my-bucket/*" 
     ] 
    } 
    ] 
} 

你可以找到更多關於Principal元素here:所以,你可以如下寫你斗的政策。

+0

嗨哈立德,謝謝你的回覆。默認情況下,帳戶中的所有用戶(具有S3訪問權限)都可以訪問所有存儲桶。我有一個只能由特定IAM用戶訪問的存儲區。所以,該政策說拒絕用戶名是不是(StringNotLike)一個特定的用戶。這樣可行。問題是,如何將用戶添加到允許的列表中?我從這裏獲得這個想法的博客帖子在這裏:https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/ –

相關問題