変更要約: SCS-C02 第4章を深掘り(比較表・シナリオ・FAQ・ひっかけ・深掘り段落を各節に追加、図を日本語版に対応)
4.1IAM ポリシーと評価ロジック
アクセス制御の核——アイデンティティ/リソースベースポリシー、明示的拒否の優先、SCP、アクセス許可境界、条件キー——を理解します。「誰が何にアクセスできるか」を正確に設計します。
セキュリティの中心は IAM です。複数のポリシーがどう評価されるか(特に明示的拒否の優先)を正確に理解します。
4.1.1ポリシー評価の流れ
- 明示的拒否の優先:どこかに Deny があれば必ず拒否(最優先)。
- 許可の必要性:許可はいずれかのポリシーで明示的に Allow が必要。なければ暗黙的拒否。
- SCP/アクセス許可境界:許可の上限を定める(権限を付与しない)。両方の積集合が有効権限。
- 条件キー:MFA/送信元 IP/タグ/暗号化必須などで許可をさらに絞る。
「明示的拒否は常に勝つ」「許可は明示的 Allow が必要・なければ暗黙的拒否」「SCP/境界は上限(積集合)で権限付与ではない」「条件キーで MFA/IP/タグ制限」 は SCS-C02 で最頻出です。SCP・境界・IAM・リソースポリシーすべてで許可されて初めてアクセスできます。
SCS-C02 で最も問われるのが IAM のポリシー評価ロジックです。リクエストは、(1) 関連する全ポリシーを収集し、(2) 明示的 Deny が 1 つでもあれば即拒否(最優先・覆せない)、(3) なければ明示的 Allow があるかを確認し、(4) Allow があり Deny がなければ許可、どこにも Allow がなければ暗黙的拒否(デフォルト拒否)、という順で判定されます。許可の判断には複数のポリシータイプが関与します:アイデンティティベース(ユーザー/ロールにアタッチ)、リソースベース(S3 バケットポリシー、KMS キーポリシー等。クロスアカウントではプリンシパルを明示)、SCP(Organizations のアカウント上限)、アクセス許可境界(IAM エンティティの権限上限)、セッションポリシー(AssumeRole 時に渡す上限)。SCP と境界は“許可の上限”であって権限を付与しません——有効権限はこれらの積集合で、同一アカウント内のアクセスは「アイデンティティ or リソースのいずれかで Allow かつ SCP/境界の範囲内かつ Deny なし」が必要です(クロスアカウントは両アカウントで Allow が必要)。条件キー(aws:MultiFactorAuthPresent、aws:SourceIp、aws:PrincipalTag、s3:x-amz-server-side-encryption 等)で許可をさらに絞り、Deny + 条件で「MFA なしは全拒否」「特定 IP 以外は拒否」「暗号化なしの PutObject を拒否」といった強制が定番です。設計の要は、「明示的拒否>許可>暗黙的拒否」と「SCP/境界=上限(積集合)」を正確に理解し、条件キーで多層に絞ることです。
| ポリシータイプ | 役割 | 要点 |
|---|---|---|
| アイデンティティベース | ユーザー/ロールに付与 | 明示的 Allow を与える |
| リソースベース | リソースに付与(S3/KMS 等) | クロスアカウントはプリンシパル明示 |
| SCP / アクセス許可境界 | 許可の上限 | 付与せず・積集合が有効権限 |
| 条件キー | 許可の絞り込み | MFA/送信元 IP/タグ/暗号化必須 |
シナリオ:「全ユーザーは MFA なしでは一切操作できない」「本番アカウントでは特定リージョン以外を禁止」を組織的に強制したい。→ MFA は IAM ポリシー/SCP の Deny + 条件 aws:MultiFactorAuthPresent: false(MFA 不在時に全 Deny)。リージョン制限は SCP の Deny + 条件 aws:RequestedRegion で許可リージョン以外を拒否。これらは上限(ガードレール)なので、配下アカウントの IAM がどう許可してもSCP の Deny が勝ちます。アクセスは SCP・境界・IAM・リソースすべてを通過して初めて成立します。
FAQ:SCP で Allow を書けば権限が付与される? いいえ。SCP は「上限(ガードレール)」であって権限を付与しません。SCP で許可しても、実際にアクセスするには IAM(アイデンティティ)やリソースポリシーで別途 Allowが必要です。SCP の役割は「ここまでしか許さない」という枠を定めること。同様にアクセス許可境界も上限で、付与は IAM ポリシーが行います。
ひっかけ:IAM ポリシーで Allow されているのに「SCP やリソースポリシー、アクセス許可境界のどれかに Deny がある」場合、明示的拒否が勝ってアクセスは拒否されます。「IAM で許可したのになぜ拒否?」の典型はこれ。また SCP/境界に Allow を書いても権限は付与されない(上限を定めるだけ)点も頻出のひっかけです。クロスアカウントは両アカウントで Allowが要ります。
4.1.2この節のまとめ
- 評価=明示的拒否>許可>暗黙的拒否
- 上限=SCP/境界(積集合)/絞り込み=条件キー
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. あるユーザーは IAM ポリシーで S3 への許可を持つが、SCP に明示的な拒否がある。結果はどうなりますか?
Q2. どのポリシーにも明示的な Allow がない操作のアクセス結果はどうなりますか?
Q3. IAM ロールに付与できる権限の上限を設定し、委任時の過剰権限を防ぎたい。何を使いますか?

