2017-02-28 15 views
4

私はS3バケットポリシーに取り組んでいます。アイデアは明示的に付与されたものを除いて、アカウント内のすべてのIAMユーザーへのアクセスを明示的に拒否することです。S3バケットポリシーでOR条件を実行するにはどうすればよいですか?

特定のユーザーへのアクセスを制限する方法を説明するブログ記事があります。それはうまくいく。ただし、アクセスを許可する2番目の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" 
        ] 
       } 
      } 
     } 
    ] 
} 

誰も私が私が許される追加のユーザーIDを指定することができ、OR条件を可能にするために、上記のJSONを編集助けることができますアクセス?

AdvThanksance!

答えて

1

私はこれを理解しました。

最初に、Conditionに2番目のStringgNotLike句を追加しようとしましたが、それは機能しませんでした。

少しずつ読んだ後、条件句が複数のキーと値のペアを受け入れることがわかりました。実際、私が私の質問で示した元の政策はすでにそれをしていました。私はちょうどそこにあった配列に値を追加する必要がありました。

働くポリシーは、次のようになります。私はキーが既に値の配列を指定していたことに気づい

{ 
    "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" 
        ] 
       } 
      } 
     } 
    ] 
} 

は、私はちょうど配列に第2のユーザ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

こんにちはKhalid、あなたの返事をありがとう。デフォルトでは、アカウント内のすべてのユーザー(S3アクセス権を持つ)はすべてのバケットにアクセスできます。特定のIAMユーザーだけがアクセスできるバケットがあります。したがって、ユーザー名が(StringNotLike)特定のユーザーでない場合、ポリシーは拒否します。それは動作します。質問は、許可されたリストにユーザーを追加する方法ですか?私がこのアイデアを得たブログ記事は、ここにあります:https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/ –

関連する問題