おはようございます、YASUです。
DVAの勉強で、IAMのポリシーが複数ある時に、許可されるのか拒否されるのかを判断する問題が苦手でした。基本のルールだけに絞って、整理しました。
目次
結論
覚えるのは3つです。許可がなければ拒否、Denyがあれば必ず拒否、別のアカウントなら両方の許可が必要、です。
3つのルール
- 許可がなければ拒否:Allowがなければ、デフォルトで拒否される(暗黙的な拒否)
- Denyが最優先:Allowがあっても、明示的なDenyが1つでもあれば、拒否される
- 別のアカウントなら両方の許可が必要:同じアカウントなら、どちらかのポリシーで許可されていれば通る。別のアカウントなら、両方のポリシーでの許可が必要
2種類のポリシー
- アイデンティティベースのポリシー:ユーザーやロールにアタッチして、「この人は何ができるか」を決める
- リソースベースのポリシー:リソース側にアタッチして、「誰がこのリソースを使えるか」を決める。S3のバケットポリシーが代表例
まとめ
- 許可がなければ、デフォルトで拒否される
- 明示的なDenyは、どのAllowよりも優先される
- 同じアカウントならどちらかのAllow、別のアカウントなら両方のAllowが必要
3つのルールに絞ると、複数のポリシーが出てくる問題も、順番に考えられるようになりました。それでは、また明日!

コメント