2016-10-24 11 views
0

S3バケットのポリシーを設定しようとしています。そのため、認証されたユーザだけのURLを介して内部のファイルにアクセスできるようになりました。この考え方は、ファイルの代わりにリンクを別のシステムに保存することで、ユーザーがファイルをダウンロードしたいときはリンクをクリックします。ユーザーがAWSにアカウントを持っていて、ファイルをダウンロードする権限をユーザーに与えることができます。許可されたユーザのS3バケットに関するポリシーの設定

しかし、この解決策は自分のアカウントでは機能しません。エラーコード403のアクセスが拒否されました。

"Principals" : "*" と設定した場合のみ、ファイルにアクセスできます。しかし、私は登録ユーザーだけにアクセスを制限する必要があります。

誰かが助けてくれますか? ありがとうございます。

敬具、

レンカ

答えて

1

理解することは重要なことは、あなたが許可されたユーザに助成アクセスしたいということです。したがって、ユーザーがファイルを要求するときには、を提供するが必要です。単に匿名のリンク(例:s3.amazonaws.com/my-bucket/file.txt)でファイルにアクセスできるのであれば、Amazon S3は誰であるかを知らず、要求を拒否します。

  • AWS SDKを使用しているプログラミング言語からGetObjectコマンドを呼び出すことにより:

    はこれを行うことができ、いくつかの方法があります。各コールには、ユーザーを識別するアクセス資格情報が付随します。ハッシュされた許可ストリング

  • 経由でアマゾンS3内のオブジェクトへの一時的にアクセスを許可Amazon S3 Pre-Signed URL介してユーザ
  • を識別するために、ハッシュ化された認証文字列(known as Signature v4)を渡しGET request経由Webブラウザから

最も適切な解決策は、Amazon S3 Pre-Signed URLを使用することです。

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

事前署名されたURLを使用する利点は、のユーザーはAWS資格情報を必要としないということです。アプリケーションの責任はであり、S3でオブジェクトへのアクセスが許可されているかどうかを判断するためにユーザーを適切に認証する必要があります。アクセスが許可されている場合は、は、事前に署名されたURLをオブジェクトへの認証済みリンクとして生成する必要があります。これらのURLは、の期間限定のの場合にのみ有効です。

AWS Command-Line Interface (CLI)aws s3 presignコマンドを使用して、事前に署名されたURLを生成することもできます。

関連する問題