2012-03-21 13 views
1

私はS3に格納したオブジェクトに公開アクセスを制限したいが、他のオブジェクトは同じ階層のキーに表示する。たとえば、私がbucketname/*を一般に読めるようにしたいとします。しかし、IAMに明示的にアクセス権が与えられていないユーザーについては、bucketname/*/hidden/*へのアクセスを防止したいと考えています。公開制限のAmazon S3バケットポリシー

私のようなバケットポリシーを使用していることを行うことができます。

{ 
    "Id": "Policy123", 
    "Statement": [ 
    { 
     "Sid": "Stmt123", 
     "Action": [ "s3:GetObject" ], 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::bucketname/*", 
     "Principal": { 
     "AWS": [ "*" ] 
     } 
    }, 
    { 
     "Sid": "Stmt124", 
     "Action": [ "s3:GetObject" ], 
     "Effect": "Deny", 
     "Resource": "arn:aws:s3:::bucketname/*/hidden/*", 
     "Principal": { 
     "AWS": [ "*" ] 
     } 
    ] 
} 

しかし、それは、私は隠されたオブジェクトへのアクセスを許可されているすべてのIAMユーザー/グループを防ぎます。 のプリンシパルの設定は、認証されていないアクセスと一致する2番目のステートメントにありますか?または、より良いことに、プリンシパルのリストを表示する方法はありますか?はポリシーステートメントの影響を受けますか?

+1

アップデート2016:http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#NotPrincipalタグを使用して「すべてのプリンシパルを意味する」ことができるようになりました。 – Claude

答えて

3

AWSのサポートによると、これは現在できません。すべてDenyポリシーは一致する(またはサブセット)ポリシーを上書きします。匿名アクセスのみを拒否する方法はありません。

bucketname/*/hidden/*に一致するすべてのオブジェクトに対してプライベートACLを指定することで同様の効果が得られますが、これは柔軟性がなく、手動で適用する必要があります。

0

バケットにポリシーを設定する必要はありません。実際には、シナリオで最も効果的なものに応じて、同じポリシーをIAMユーザーまたはグループに適用できます。

https://console.aws.amazon.com/iam/home?#

  • ユーザー
  • を選択したいユーザー
  • クリックしてアクセス権]タブ
  • アタッチユーザポリシー
  • カスタムポリシー
  • 選択
  • コピー&ペースト政策
  • ポリシーを適用する

場合によっては、移動するバケットを表示できるように余分な権限をユーザーに追加する必要があります。たとえば、クラウドベリーを使用している場合は、メインバケットへのリストアクセスを許可する必要があります。たとえば私のポリシーの1つを参照してください。

{ 
    "Statement": [ 
    { 
     "Sid": "Stmt1330983243489", 
     "Action": [ 
     "s3:*" 
     ], 
     "Effect": "Allow", 
     "Resource": [ 
     "arn:aws:s3:::<allowbucket1>", 
     "arn:aws:s3:::<allowbucket1>/*" 
     ] 
    }, 
    { 
     "Sid": "Stmt1330983260440", 
     "Action": [ 
     "s3:ListAllMyBuckets" 
     ], 
     "Effect": "Allow", 
     "Resource": [ 
     "arn:aws:s3:::*" 
     ] 
    }, 
    { 
     "Sid": "Stmt1330983357419", 
     "Action": [ 
     "s3:CreateBucket", 
     "s3:DeleteBucket", 
     "s3:PutBucketNotification", 
     "s3:PutBucketPolicy", 
     "s3:PutBucketRequestPayment" 
     ], 
     "Effect": "Deny", 
     "Resource": [ 
     "arn:aws:s3:::*" 
     ] 
    } 
    ] 
} 
+0

バケツが必要ですバグの '*/hidden/* 'に対する' Deny'ポリシーは、IAMユーザがそれらのオブジェクトを見るのを防ぎます。私は編集しました。 – bkirkbri

+0

バケツポリシーでこの 'arm:aws:iam :: 'のようなルールを設定するルールを追加することができます。 iam accessはユーザー名に*をつけます。次に、iamのアクセス許可を使用して、認証されたユーザーのバケットへのアクセスを拒否することができます。 – bwight

関連する問題