法律事務所では、何百ものファイルを一般の人が読めるようにする必要があります。法律事務所は、指定された将来の日付まで、一般の人がファイルを変更または削除できないようにする必要があります。これらの要件を最も安全に満たすソリューションはどれでしょうか。
A. 静的ウェブサイトホスティング用に設定された Amazon S3 バケットにファイルをアップロードします。指定された日付まで S3 バケットにアクセスするすべての AWS プリンシパルに読み取り専用の IAM 権限を付与します。
B. 新しい Amazon S3 バケットを作成します。S3 のバージョン管理を有効にします。S3 オブジェクト ロックを使用して、指定した日付に基づいて保持期間を設定します。バケットからコンテンツを提供するための Amazon CloudFront ディストリビューションを作成します。S3 バケット ポリシーを使用して、CloudFront オリジン アクセス コントロール (OAC) へのアクセスを制限します。
C. 新しい Amazon S3 バケットを作成します。S3 のバージョン管理を有効にします。ユーザーがオブジェクトを変更または削除した場合に AWS Lambda 関数を実行するイベントトリガーを設定します。変更または削除されたオブジェクトをプライベート S3 バケットのオブジェクトの元のバージョンに置き換えるように Lambda 関数を設定します。
D. 静的ウェブサイトホスティング用に設定された Amazon S3 バケットにファイルをアップロードします。ファイルを含むフォルダを選択します。指定された日付に基づいて保持期間が設定された S3 オブジェクトロックを使用します。S3 バケットにアクセスするすべての AWS プリンシパルに読み取り専用の IAM 権限を付与します。
正解:B
解説:S3 オブジェクトロック + バージョニングで WORM(書き込み後は変更不可)を実現。指定日まで削除・上書きが技術的にできない状態にできます(※コンプライアンスモードならアカウント管理者でも不可)。
CloudFront + OACで「一般公開は読み取りのみ」にしつつ、S3 バケットは非公開のまま安全に配信できます。
他の選択肢がダメな理由
A:IAM 権限は「AWS プリンシパル(=AWS アカウントやロール)」向けで、一般公開の閲覧要件に合わない。かつオブジェクトの不変性を担保しない。
C:変更・削除後にLambda で巻き戻すのは後追いで不十分。ロックで事前に防ぐべき。
D:S3 静的サイトはバケットを公開する必要があり、OAC も使えずセキュアでない。さらにバケット作成時に Object Lock を有効化していないと使えないため手順としても不正確。
→ 以上より、B が最も安全でベストプラクティスです。