AWSクイズ
S3バケットポリシーで全員にGetObjectを許可したが、アクセスできない。原因は?
解説
S3バケットポリシーでパブリックアクセスを許可しても、パブリックアクセスブロックが有効になっている場合、そのポリシーは無効化されアクセスは拒否されます。これは2018年以降にAWSがデフォルトで導入したセキュリティ機能で、意図しないデータ公開を防ぐために設計されています。パブリックアクセスブロックにはアカウントレベルとバケットレベルの2段階があり、どちらか一方でも有効であればパブリックアクセスはブロックされます。新規作成されたバケットではデフォルトで4つのブロック設定すべてが有効になっているため、バケットポリシーだけを変更しても公開されないのです。選択肢2のバージョニングは、オブジェクトの世代管理に関する機能であり、アクセス制御とは無関係です。バージョニングの有効・無効はオブジェクトの読み取り可否に影響しません。選択肢3のGlacierへの移行はライフサイクルポリシーによるストレージクラス変更です。Glacierに移行したオブジェクトは直接取得できず復元が必要ですが、問題の状況ではバケット全体にアクセスできないため原因としては適切ではありません。選択肢4のCORS(Cross-Origin Resource Sharing)はブラウザからの異なるオリジン間リクエストを制御する設定です。CORSが未設定だとブラウザのJavaScriptからのアクセスは失敗しますが、直接URLでアクセスする場合には影響しません。SAA試験ではS3のアクセス制御が多層構造であることの理解が求められます。バケットポリシー・IAMポリシー・ACL・パブリックアクセスブロックの関係を整理しておきましょう。