SAP-C02新しいソリューションのための設計HARD単一選択

ある企業が AWS 上でコンテンツ管理システム(CMS)を構築しており、大量の画像・動画ファイルをユーザーが直接 S3 にアップロードできる機能が必要です。セキュリティ上の理由から、アップロードリクエストはサーバーを経由させずにクライアントから直接 S3 にアップロードさせたいと考えています。ただし、誰でも任意のファイルをアップロードできてはならず、認証されたユーザーのみが特定のプレフィックス(ユーザー ID)に対してのみアップロードできる必要があります。最も適切な実装はどれですか?

  1. A. Lambda または API Gateway でバックエンドが認証済みユーザーの確認後に S3 の署名付き URL(Pre-signed URL)を生成し、クライアントに返す。クライアントはその Pre-signed URL を使って指定されたプレフィックス(ユーザー ID)に対してのみ直接 S3 にアップロードする。Pre-signed URL には有効期限(例: 15 分)を設定する
  2. B. S3 バケットをパブリック書き込み可能にし、CloudFront で認証済みユーザーのみアクセスできるよう制限する
  3. C. S3 の CORS 設定でアップロード元ドメインを許可し、フロントエンドの JavaScript で直接アップロードする
  4. D. Amazon Cognito Identity Pool を使用して、認証済みユーザーに一時的な IAM 認証情報を発行し、クライアントが AWS SDK で直接 S3 に書き込む
解答と解説を見る

正解: A

Pre-signed URL は特定の S3 オブジェクトキー(プレフィックス/ファイル名)に対して有効期限付きのアップロード権限を付与します。バックエンドで認証確認後に、ユーザー ID をプレフィックスに含む PUT URL を生成して返すことで、認証済みユーザーのみが自分専用のプレフィックスにアップロードできます。S3 クレデンシャルをクライアントに公開せずにセキュアなダイレクトアップロードが実現できます。 B: S3 をパブリック書き込み可能にすることは重大なセキュリティリスクで、CloudFront だけでは書き込みを完全に制御できません。 C: CORS 設定はオリジンドメインの制限に使いますが、認証されたユーザーのみへのアクセス制限や特定プレフィックスへの制限はできません。 D: Cognito Identity Pool も有効な方法ですが、一時的 IAM 認証情報をクライアントに発行することはクライアント側で追加の AWS SDK 設定が必要です。Pre-signed URL の方がよりシンプルなアプローチです。

▸ この試験を本気で演習する(全150問・無料)