SAA-005
社内ユーザーがS3バケット内の特定プレフィックスだけを読み取れるようにしたいです。最小権限の観点で最も適した設計はどれですか?
選択肢
解説と正解
解説と正解を読む(先に自分で回答してから開くのがおすすめです)
正解:B. 対象プレフィックス配下のオブジェクトに対するs3:GetObjectを許可するIAMポリシーを付与する
解説
特定プレフィックスだけを読み取る要件では、Resourceを対象プレフィックスに限定し、Actionもs3:GetObjectに限定するのが最小権限です。
選択肢ごとの解説
A. S3バケットをパブリック公開する
パブリック公開は不要な公開範囲を生みます。
B. 対象プレフィックス配下のオブジェクトに対するs3:GetObjectを許可するIAMポリシーを付与する
正解です。対象範囲と操作を限定しています。
C. AWSアカウントのrootユーザー認証情報を共有する
rootユーザー認証情報の共有は絶対に避けるべきです。
D. 対象バケット全体に対するs3:*を許可する
s3:*は読み取り以外の操作も含むため権限過多です。
実務での使いどころ
S3 のアクセス制御では、Resource をプレフィックス単位、Action を必要な操作だけに絞ることで最小権限を実現する。社内ユーザーが特定プレフィックス配下のオブジェクトだけを読み取る要件であれば、IAM ポリシーで Resource を `arn:aws:s3:::bucket/prefix/*`、Action を `s3:GetObject` のみに限定する。バケット内の他プレフィックスや、書き込み・削除操作はポリシー上拒否されたままになるため、誤操作や権限濫用の影響範囲を構造的に小さくできる。 設計上は、IAM ポリシー(ID ベース)と S3 バケットポリシー(リソースベース)の使い分けも重要となる。同一アカウント内の特定 IAM ユーザー/ロールに権限を渡すなら IAM ポリシーが扱いやすく、クロスアカウントアクセスや「バケットに対する共通方針」を強制するならバケットポリシーが適している。両者が同時に存在する場合は、明示的 Deny が最優先される評価ロジックを踏まえてポリシーを組み立てる。さらに ListBucket は `s3:ListBucket` 権限の Condition で `s3:prefix` を限定すると、プレフィックス外のオブジェクト一覧が見えないように制御できる。 SAA-C03 では「特定プレフィックスだけ読み取らせる」「最小公開で済ませる」文脈で本パターンが頻出する。誤答は `s3:*` 付与、root 認証情報の共有、バケット全体のパブリック公開といった「権限過多」「公開設計の誤用」「root 直接利用」の典型 3 パターンで、いずれも IAM のベストプラクティスに反する。