T1-Q06: us-east-1だけ許可するIAMはDeny + StringNotEqualsで作る
aws:RequestedRegionを使うリージョン制限ポリシーを、NotActionと条件演算子の逆転ミスから補強する。
AWS SCS-C03 IAM RequestedRegion Policy
対象誤答: T1 Q06 REQUESTED REGION DENY
あなたの選択と正答
| 観点 | 内容 |
|---|---|
| あなたの選択 | { “Effect”: “Deny”, “NotAction”: ”*”, “Condition”: { “StringEquals”: { “aws:RequestedRegion”: “us-east-1” } } } |
| 正答 | { “Effect”: “Deny”, “Action”: ”*”, “Condition”: { “StringNotEquals”: { “aws:RequestedRegion”: “us-east-1” } } } |
| 誤答の引力 | 許可したいリージョンをStringEqualsで書きたくなるが、Deny文では条件の意味が逆になる。 |
| 判断軸 | Deny文では『拒否したい条件』を書く。us-east-1以外を拒否したいのでStringNotEquals。NotActionは特殊用途で、基本形ではAction:*を使う。 |
この問題の芯
T1-Q06 は、AWSサービス利用を us-east-1 に制限する IAM ポリシーを選ぶ問題。あなたの選択肢は Deny と StringEquals が組み合わさり、許可したいリージョン側を拒否する方向に読めてしまう。
Deny文では「拒否条件」を書く
リージョン制限は Allow で作るより、明示的 Deny で「指定リージョン以外を拒否」するのが試験での基本形。
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": "us-east-1"
}
}
}
意味は「リクエスト先リージョンが us-east-1 ではないなら拒否」。
なぜNotActionが危ないか
NotAction は「指定したアクション以外」を意味する。Deny と組み合わせると範囲が広くなりやすく、試験ではひっかけに使われる。リージョン制限のように全サービスを対象にするなら、まず Action: "*" を考える。
次回の秒殺ルール
Denyで制限する時は、条件文に「拒否したい世界」を書く。
「us-east-1だけ使える」なら「us-east-1以外をDeny」。
つまり Deny + StringNotEquals + aws:RequestedRegion。
仕上げの一問一答
- この問題の主語は何か: IAM
- 先に除外する選択肢: 問題文の主語と違うサービス責務に寄っているもの。
- 最後に確認する語: 「最もコスト効率」「組織全体」「未指定を拒否」「監査」「自動有効化」などの制約語。