SJ blog
ドリル一覧

T1-Q06: us-east-1だけ許可するIAMはDeny + StringNotEqualsで作る

aws:RequestedRegionを使うリージョン制限ポリシーを、NotActionと条件演算子の逆転ミスから補強する。

AWS SCS-C03 IAM RequestedRegion Policy

T1-Q06: us-east-1だけ許可するIAMはDeny + StringNotEqualsで作る

対象誤答: 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 ポリシーを選ぶ問題。あなたの選択肢は DenyStringEquals が組み合わさり、許可したいリージョン側を拒否する方向に読めてしまう。

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
  • 先に除外する選択肢: 問題文の主語と違うサービス責務に寄っているもの。
  • 最後に確認する語: 「最もコスト効率」「組織全体」「未指定を拒否」「監査」「自動有効化」などの制約語。

参照