2017-12-12 32 views
0

全バケット(*)で全員がGetObjectを利用できるバケットを用意しました。オブジェクトレベルの操作ACLを使用していくつかのオブジェクトをプライベートにしたい、つまりバケット所有者だけがオブジェクトへの読み取りアクセス権を持っている必要があります。私は利用可能なすべてのドキュメントを見てきましたが、可能な方法を見つけることができませんでした。誰でもこれが可能かどうかを確認できますか?AWS S3バケットポリシーの公開。オブジェクトをプライベートにする方法

+1

バケットを公開すると、すべてのコンテンツが公開されます。単純な解決策は、プライベートデータを含む別のバケットを作成することです。次に、読み取り権限を許可し、プライベートデータへのアクセスが必要なユーザーにのみグループ/ポリシーを割り当てる新しいセキュリティポリシー(およびグループ)を作成します。 –

+0

"バケットを公開すると、すべてのコンテンツが公開されます。"私はこれをドキュメントで明示的に見つけることができなかったので、これを確認したかったのです。ありがとうございました。私はあなたが提案した解決策についても考えていましたが、バケツポリシーが公にされているかどうかを確認したかったのです。 – user3275863

答えて

1

ACLにDENYがないため、S3オブジェクトACLを使用することはできません。

オブジェクトを指定して個々のアイテムへのアクセスを拒否するS3ポリシーを変更できます。

例S3ポリシー(このポリシーは二つのファイルのためのGetObjectのために皆へのアクセスを禁止することを告知):

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "PublicReadGetObject", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::mybucket/*" 
     }, 
     { 
      "Sid": "DenyPublicReadGetObject", 
      "Effect": "Deny", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": [ 
       "arn:aws:s3:::mybucket/block_this_file", 
       "arn:aws:s3:::mybucket/block_this_file_too" 
      ] 
     } 
    ] 
} 

あなたは、特定のユーザーがまだオブジェクトにアクセスできるように条件を追加したい場合は、条件を追加このようなリソースセクションの後に。この状態では、IAMユーザーのjohn.wayneとbob.hopeはGetObjectを呼び出すことができます。

 "Resource": [ 
      "arn:aws:s3:::mybucket/block_this_file", 
      "arn:aws:s3:::mybucket/block_this_file_too" 
     ], 
     "Condition": { 
      "StringNotEquals": { 
       "aws:username": [ 
        "john.wayne", 
        "bob.hope" 
       ] 
      } 
     } 
+0

ちょっと注意してください... DENYを追加すると、バケツの所有者がオブジェクトにもアクセスできなくなる可能性があります。 –

+1

@JohnRotenstein。この最初の例では所有者を拒否しています。 2番目の例は、特定のユーザーに対してGetObjectを許可する条件を作成する方法を示しています。それらを否定しないでください。 –

関連する問題