無限ノック › DVA 練習問題一覧 › 問題
DVAセキュリティ

あるウェブアプリケーションは、ユーザーが購入したデジタルコンテンツ(PDFファイル)をAmazon S3のプライベートバケットに保存しています。購入したユーザーに対してのみ、ファイルへの直接ダウンロードリンクを提供し、そのリンクは発行後15分間のみ有効となるように設計する必要があります。この要件を満たすための最適な実装方法はどれですか。

A
S3バケットポリシーを変更し、対象のファイルに対して15分間のみパブリックアクセス許可(Principal: *)を付与する。
バケットポリシーの変更は反映に時間がかかる場合があり、動的な権限付与や時間制限の制御に用いるのは不適切です。また、パブリック許可はURLを知っていれば誰でもアクセス可能になってしまいます。
B
AWS STSのGetFederationTokenを使用して15分有効な一時認証情報を発行し、それをユーザーにメールで送信する。
STSの一時認証情報を直接エンドユーザーに渡すことは、署名生成プロセスの責任をクライアント側に押し付けることになり複雑かつ非効率です。
C
アプリケーションのバックエンドからAWS SDKを使用して、15分の有効期限を設定したS3の署名付きURL(Pre-signed URL)を生成しユーザーへ返す。
✓ 正解
バックエンドでSDKを用いて有効期限付きの署名付きURLを生成し、それをユーザーに渡すのが最も安全で標準的なアプローチです。
D
S3バケットにAmazon CloudFrontディストリビューションを関連付け、AWS WAFのレート制限ルールを使用して15分経過後にアクセスをブロックする。
CloudFrontとWAFのレート制限はアクセス回数を制限するものであり、URLの「有効期限(時間)」を制御しセキュアなワンタイムリンクを発行する機能ではありません。

解説

プライベートなS3オブジェクトに対して、特定のユーザーに一時的なアクセス権(ダウンロードやアップロード)を付与するには「署名付きURL(Pre-signed URL)」を使用するのがベストプラクティスです。アプリケーション(適切なIAM権限を持つバックエンド)がAWS SDKを使用して署名付きURLを動的に生成し、その際に有効期限(この場合は15分)を指定します。ユーザーはこのURLを使用することで、バケットをパブリックにすることなく期限内に安全にファイルをダウンロードできます。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る