2017-12-07 11 views
0

私のバケツにポリシーを設定しようとしています。オブジェクトに公開された 'GetObject'アクセスを許可します。このように:AWS S3バケットポリシー - プレフィックス内でのみGetObjectを許可する

{ 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::mybucket/publicstuff/*" 
    } 

問題は、AWSはこれがバケット全体を公開すると警告しています。そして確かに、それはそうです。/mybucket/anywhereelse /からオブジェクトを取得しようとすると、S3はそれを自由に提供します。 「mybucket」の後のすべては無視されます。

バケット内の特定のプレフィックスに適用できるバケットポリシーを構築する方法はありますか。ポリシー条件を試しましたが、s3:GetObjectアクションを使用するときにs3:接頭辞を使用できないことがわかりました。

+0

このポリシーを削除すると、このポリシーとは無関係の理由で、バケットは既に公開されています。お知らせ下さい。 –

+0

こんにちは@ Michael-sqlbot、バケットはそれ以外の場合はプライベートです。このポリシーを削除すると、バケットはプライベートになります。私がそれを含めると、バケツは完全に公開されます。 –

+0

私は複製しようとしますが、直感は何かを誤って解釈していると私には分かりますが、私には何がわかりません。確認してください、これはあなたの*全体*ポリシーですか?そして、このポリシーを削除して再追加して、このパスプレフィックスの外側にあるテストオブジェクト "x"が追加されたときに公開され、削除されるとプライベートに戻ることを再確認/検証しましたか?これはどの地域ですか? –

答えて

0

バケツが一般にアクセス可能であることを示す表示がありますが、これはまったく問題ありません。このインジケータは、このバケットの(一部のコンテンツへの)パブリックアクセスが提供されていることを示しています。
問題がないことを確認するには、公開されているアクセス可能なフォルダの外部にあるファイルをテストし、そのポリシーのために一般にアクセス可能なファイルと比較するだけです。
あなたが私は、公衆にアクセス可能な私のバケットのサブフォルダ(toignore)を行った以下の画像で見ることができます。これは、バケツのツリービューで

enter image description here

私の方針に基づき
││└──i.txt
toignore├──│└──ni.txt

├──ディレクトリ
、私は。 txtは一般公開されていますが、ni.txtは公開されていません。

+0

ありがとう@モック、私はバケツに乗った結果ではありません。接頭辞の有無にかかわらず、すべてが公開になり、内容にアクセスすることで検証されます。あなたのバケツはどの地域ですか? –

0

ありがとう@michaelと@mok、私は答えを見つけました:私はバカです。私が標準的な動作を確認するために使用した他のオブジェクトは、getObjectを許可する個々のパーミッションを持っていて、そこに置いたり、そこにいることに気付かなかった。これらの権限を削除すると、これらのオブジェクトにはまだアクセスできたように見えましたが、実際にキャッシュされたコピーを取得していました。これらの偽のアクセス許可を削除し、まったく別のブラウザを使用すると、最初に投稿されたポリシーが正しいことが確認されました。ご迷惑おかけして申し訳ありません。

関連する問題