2015-09-30 32 views
5

私はAmazon S3でバケットを作成し、2つのファイルをアップロードして公開しました。インターネット上のどこからでもアクセスできるリンクがあります。私は今、誰がファイルをダウンロードできるかについていくつかの制限を設けたいと思っています。誰かがそれで私を助けてくれますか?私はドキュメンテーションを試しましたが、混乱しました。Amazon S3ダウンロード認証

パブリックリンクを使用してダウンロードするときに、その時点でユーザーを認証するための何らかの資格情報または何かを尋ねる必要があります。これは可能ですか?

答えて

9

デフォルトでは、Amazon S3のすべてのオブジェクトはプライベートです。その後、ユーザーがオブジェクトにアクセスできるようにアクセス許可を追加できます。限りでのように、個々のオブジェクト

  • Aバケットポリシー
  • IAMユーザーとグループ
  • Aプリ署名付きURL
    • アクセス制御リストの権限:これは、を介して行うことができますこれらのメソッドのうち少なくとも1つがアクセスを許可している場合、ユーザーはAmazon S3からオブジェクトにアクセスできます。

      1.アクセス制御リストの個々のオブジェクトにAmazon S3の管理コンソールで

      Make Publicオプションは、すべてのインターネットユーザーにOpen/Download権限を付与します。これは、特定のオブジェクトへのパブリックアクセスを許可するために使用できます。

      2バケットポリシー

      Bucket Policy全体バケット又は動翼の部分へのアクセスを許可するために使用することができます。アクセスするための制限を指定するためにも使用できます。たとえば、バケット内の特定のディレクトリを特定の時間帯に特定のIPアドレス範囲のユーザーに公開することができます。また、SSLを介してバケットにアクセスする場合にのみポリシーが適用されます。

      バケットポリシーは、個々のオブジェクトごとにアクセス許可を指定する必要があるため、多くのオブジェクト(特定のディレクトリなど)へのパブリックアクセスを許可するのに適しています。これはS3バケットから提供される静的なウェブサイトによく使用されます。

      3. IAMユーザーとグループ

      これはバケットポリシーを定義するに似ていますが、権限は、ユーザーの特定のユーザーまたはグループに割り当てられています。したがって、これらのユーザーだけがオブジェクトにアクセスする権限を持ちます。オブジェクトにアクセスするときにユーザー自身が認証される必要があるため、AWS Command-Line Interface (CLI)aws s3コマンドを使用するなど、AWS API経由でオブジェクトにアクセスするときに最も一般的に使用されます。

      認証を求めるプロンプトが表示されるのではなく、ユーザーはAPI呼び出しを行う際に認証を提供する必要があります。これを行う簡単な方法は、ユーザーの資格情報をローカル構成ファイルに保存することです.S3 APIを呼び出すときにCLIが自動的に使用します。

      4。前の署名付きURL

      Pre-Signed URLは、アクセス制御を「上書き」する方法としてS3オブジェクトへのアクセスを許可するために使用することができます。通常のプライベートオブジェクトは、有効期限の時間と署名を付加することによってURLを介してアクセスできます。これは、Webサーバーを必要とせずに非公開のコンテンツを提供する素晴らしい方法です。

      通常、事前署名されたURLは、オブジェクトへのアクセスを許可するときにアプリケーションによって作成されます。たとえば、写真共有サイトがあり、ユーザーがあなたのウェブサイトに対して認証したとします。 Webページに写真を表示したいと考えています。ピクチャは通常はプライベートですが、アプリケーションはピクチャへの一時アクセスを許可する事前署名されたURLを生成することができます。事前署名されたURLは、特定の日付/時刻の後に失効します。