10

私はWebアプリケーションを構築しており、AmazonS3を使用してユーザーのアップロードを保存することを検討しています。

私の懸念は、ユーザーAがアップロードしたドキュメントのダウンロードリンクがurltoMyS3 / doc1234.pdfであることを確認し、urltoMyS3 / doc1235.pdfを試して、別のユーザーのドキュメントを取得することを望まないことです。

これを行うために私が考えることができる唯一の方法は、WebアプリケーションがS3に接続することのみを許可し、ユーザーがWebアプリケーション上のファイルにアクセスできるかどうかを確認し、Webアプリにファイルをダウンロードさせてから、それを提供することです。クライアントに。この方法の問題は、アプリケーションが最初にファイルをダウンロードする必要があり、ユーザーのダウンロードプロセスが必然的に遅くなることです。

ユーザーファイルは通常、Amazon S3でどのように処理されますか?それとも、ファイルを公開してはならないシナリオでは通常使用されないのでしょうか。このようなもののための別のサービスはありますか?

ありがとう

4

3 に答える 3

8

問題を解決するQuery String Authenticationを実装できます。

クエリ文字列認証は、通常は認証が必要なリソースへの HTTP またはブラウザー アクセスを許可する場合に役立ちます。クエリ文字列の署名により、リクエストが保護されます。クエリ文字列認証リクエストには有効期限が必要です。エポックまたは UNIX 時間 (1970 年 1 月 1 日からの秒数) で将来の有効期限を指定できます。

于 2012-10-18T20:58:04.920 に答える
4

これは、適切なリンクを生成することで実行できます。次を参照してください。

https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#RESTAuthenticationQueryStringAuth

于 2012-10-18T21:02:15.967 に答える
0

期限付き認証が機能しない場合(他の回答で提案されているように)。s3fsのようなものを実装して、S3バケットをドライブとしてWebアプリケーションサーバーにマウントすることを検討できます。このようにして、ファイルがS3にあることをユーザーが知らなくても、認​​証を行ってからファイルをユーザーに直接提供することができます。同様に、アップロードしたファイルをこのs3fsマウントに直接書き込むことができます。

S3fsを使用すると、アクセスを高速化するために、マシン上のS3ディレクトリのローカルキャッシュを構成することもできます。

これは、各サーバーにs3fsドライブをマウントさせ、それに対して個別に実行/読み取り/書き込みを行うことができるため、クラスターWebサーバー環境でもうまく機能します。

詳細情報へのリンク

于 2012-10-18T22:54:09.527 に答える