2017-11-10 12 views
0

自分のWebサイトからの画像のみを格納するAmazon S3バケットを作成しました。私はすべての閲覧回数が100万を超えています。Amazon S3バケットからパブリックパーミッションを取り消す方法

"このバケットには公開アクセス権があります あなたはこのバケットにパブリックアクセスを提供しています.S3バケットには何も公開アクセスを許可しないことを強くお勧めします。

私は画像だけがちょうど私のサイトに示すことができるように、次のバケットポリシーを使用しています:

{ 
 
    "Version": "2012-10-17", 
 
    "Id": "http referer policy example", 
 
    "Statement": [ 
 
     { 
 
      "Sid": "Allow get requests originated from www.example.com and example.com.br", 
 
      "Effect": "Allow", 
 
      "Principal": "*", 
 
      "Action": "s3:GetObject", 
 
      "Resource": "arn:aws:s3:::examplebucket.com/*", 
 
      "Condition": { 
 
       "StringLike": { 
 
        "aws:Referer": [ 
 
         "http://www.example.com/*", 
 
         "http://www.example.com.br/*", 
 
         "https://www.example.com/*", 
 
         "https://www.example.com.br/*" 
 
        ] 
 
       } 
 
      } 
 
     } 
 
    ] 
 
}

バケットおよびファイルへのパブリックアクセスを取り消し、自分のサイトにのみ許可するにはどうすればよいですか?

ありがとうございました!

答えて

4

これは、ユーザーが誤ってデータを漏らさないようにするための怖い警告です。最近、企業が誤って一般の読書を許可する権限を設定しているというニュースのケースがたくさんありました。

実際には、警告を無視できるだけに、これらを公開することが本当に必要です。あなたのセキュリティポリシーは見た目がよく、パブリックホスティングのドキュメントとまだ一致しています。

理論的には、誰かが直接ダウンロードできないようにするために、これらのイメージを別のサーバーの背後に置くことができます。しかし、それはもはや本当に安全ではありません。

これらを公開したくない場合は、バケットからこのポリシーを削除するだけです。その場合、あなたのウェブサイトは画像を提供することができません。

+1

ご説明いただきありがとうございます!パブリック・リードでアップロードしたので、ポリシーと画像はまだ削除されています。しかし、私は100万以上の画像を持っていると考えて、すべての権限を変更することは不可能です...ありがとう! – Andre

+1

@Andreこれは、バケツポリシーが期待していることを許可するかどうかだけでなく、期待していないことを否定するかどうかをテストすることが重要な理由です。オブジェクト上で 'public-read'を実行すると、上記のポリシーは実際に何もしていませんでした。refererを依然として拒否したい場合は '' Deny'ポリシーを '' StringNotLikeIfExists''の 'aws:referer'条件キーを作成することができますが、そうでないとコンソールや他の内部メカニズムからのアクセスが拒否される可能性があるので注意してくださいこのポリシーが拒否されないようにするために必要な条件を指定します。 –

2

あなたのポリシーは良好です。あなたはより高いレベルのセキュリティを提供しています。その後、リファラーヘッダーを介して公開し、オブジェクトのリストを許可しません。

S3を使用してCSS、JS、およびImagesなどの共通ファイルを提供するのは簡単です。しかし、すべての偶発的なセキュリティ問題では、通常、次のいずれかの方法をお勧めします。

  1. バケットの静的なWebサイトホスティングを有効にします。これにより、将来の管理者にとって、このバケットはパブリックファイル用であることが明確になります。また、私はこれらのバケツに大きな警告メッセージが表示されません。リダイレクト要求を有効にする。
  2. すべてのパブリックアクセスをオフにしてCloudFrontを使用することをおすすめします。原点アクセスIDを有効にする。あなたは

CloudFrontをのすべての利点を享受して、セキュリティを強化、などUsing an Origin Access Identity to Restrict Access to Your Amazon S3 Content

+0

良い提案。別の答えに対するコメントに注意してください。オブジェクトは 'public-read'でもあるので、示されているバケットポリシーは現在は何もしていません。また、CloudFrontでRefererフィルタリングをきれいに使用するには、Lambda @ Edge Viewer RequestトリガーにRESTではなく静的なWebサイトエンドポイントでのみ利用可能なRefererをバケットに転送する必要があります。 OAI)、後者のソリューションは、アセットが複数の参照ページで参照されている場合、キャッシュヒットに悪影響を及ぼします。 –

関連する問題