2011-01-31 18 views
1

私はグループを持っており、以下のポリシーをグループに適用しました。グループにユーザーを追加し、そのユーザーのアクセスキーを作成しました。私は "mybucket"から出ることができますが、私は "mybucket"に入れられません。私がプットしようとすると、私は「アクセスが拒否されました」。誰でも私が間違っていることを教えてもらえますか?私にお知らせください。AWS IAM GroupPolicy - s3:PutObject権限が機能しないのはなぜですか?

{ 
     "Statement":[{ 
      "Effect":"Allow", 
      "Action":["s3:PutObject","s3:GetObject"], 
      "Resource":["arn:aws:s3:::mybucket","arn:aws:s3:::mybucket/*"] 
      }, 
      { 
      "Effect":"Deny", 
      "Action":["*"], 
      "NotResource":["arn:aws:s3:::mybucket","arn:aws:s3:::mybucket/*"] 
      } 
     ] 
    } 

編集:誰かが私にポリシーの目標を述べるように頼んだ。私は、指定されたバケットのグループに対してPUTとGETパーミッションだけを "許可"します。私は明示的にすべてのリソースNOT(NotResource)が指定されている場合、そのグループに対する他のすべての権限を明示的に「拒否」します。 AWSが投稿した記事に基づいて明示的な「拒否」を追加しました。この記事は、そうすることをお勧めしています。

答えて

0

拒否ステートメントは常にAllowステートメントよりも優先されます。これは、上記のポリシーがユーザーによるすべてのアクセスをブロックする必要があることを意味します。 GetとPutのリクエストはどうやっていますか? Getが匿名で(認証なしで)実行された可能性はありますか?

あなたの目標が上記のポリシーの目的であることを理解することは役に立ちますか?拒否声明の目的は何ですか?

+0

ポリシーの目的をより明確に説明するために私の編集をご覧ください。 – Dave

+0

バケットは問題のユーザーの親アカウントに所有されていますか?複数のアカウントを含むS3権限ははるかに複雑になります。このポリシーは正しいように見え、GetとPutに同等の権限を適用する必要があるように見えます。Getは別の理由で動作していると思います(つまり、バケットは匿名で読み取り可能です)? – derekdb

1

から:IAM Language Info

各ポリシーは、そのバケット内でのみシングルバケットとリソースをカバーしなければならない

(ポリシーを書くときに、他のバケットまたは他のバケット内のリソースを参照するステートメントが含まれていません)
+0

自分のアドバイスに従っていないようです2番目の例は、5つのガイドラインのうちの3つに違反しています。 –

関連する問題