IAMポリシーの種類
まず、IAMポリシーの全体像を把握するためにIAMポリシーの種類についてまとめます。以下の6つのIAMポリシーがあるようです。基本的に使う機会があるのが、アイデンティティベースのポリシーとリソースベースのポリシーになるかと思います。
1.アイデンティティベースのポリシー
アイデンティティ (ユーザー、ユーザーのグループ、ロール) がどのリソースに対してどんなアクションが実行できるかを指定します。ポリシーを作成してアイデンティティにアタッチすることでポリシーを付与します。
管理ポリシーとインラインポリシー
アイデンティティベースのポリシーは管理ポリシーとインラインポリシーに分類できます。
管理ポリシーは独立したポリシーとして存在して複数のアイデンティティにアタッチすることが可能です。
さらに管理ポリシーには、AWSが作成しているAWS管理ポリシーとユーザーが作成するカスタマー管理ポリシーがあります。
インラインポリシーはアイデンティティとポリシーが1対1で紐づくポリシーのことです。
2.リソースベースのポリシー
S3のバケットポリシーなどリソースごとに設定するJSONで記述するポリシーのことです。リソースベースのポリシーはリソースとポリシーが1体1で紐づくのでインラインポリシーです。設定したリソースにプリンシパル(AWSリソースにアクセスする主体(人やサービスなど)のこと)がアクセスできるかの許可と実行できるアクションを設定します。
3.IAM アクセス許可の境界(Permissions Boundary)
Permissions BoundaryはIAMユーザーやロールに設定することが出来ます。名前の通りIAMユーザーやロールの権限に境界を設定することができます。
IAMユーザーに権限を付与してもPermissions Boundaryで拒否されているとアクションは実行可能になりません。
つまり、IAMユーザー、ロールでとPermissions Boundary両方で許可されていないと実行可能にならないということです。
4.サービスコントロールポリシー (SCP)
WS Organizationsで提供される機能で、組織内のアカウントや組織単位(Organizational Unit、OU)に適用されるアクセス許可を制御するためのポリシーです。グループ内のアカウントすべてにサービスのアクセス制限を設定する時などに便利です。
5.アクセスコントロールリスト (ACL)
リソースに対してどのエンティティがアクセスできるかを定義します。S3バケットのACLやネットワークACLがあります。
6.セッションポリシー
セッションポリシーはAssumeRole を使用するときに設定できるポリシーのことです。セッションでのロールの権限に制約を加えるときに使用します。
ポリシーの評価論理について
IAMポリシーの種類を紹介しましたが、評価論理は図のようになっています。複雑なので全体像は把握しておいてポリシーの設定の際にしっかり確認する必要がありそうです。
IAMポリシーの基本動作
明示的拒否、明示的許可、暗黙的拒否という3つの基本動作が重要な役割を果たします。この仕組みを理解することで、セキュリティポリシーの設計やトラブルシューティングがより効果的になります。
基本動作の優先順位
IAMポリシーの評価は、以下の順序で行われます。
1明示的拒否: 最優先で評価され、どのような場合でもアクセスが拒否されます。
2明示的許可: 明示的許可がある場合、そのアクションやリソースへのアクセスが許可されます。
3暗黙的拒否: 許可ポリシーがない場合、すべてのリクエストはデフォルトで拒否されます。
IAM設計手法について
ホワイトリスト方式、ブラックリスト方式、ハイブリッド方式の3つの設計アプローチがあります。
ホワイトリスト方式
ホワイトリスト方式は、明示的に許可されたアクションやリソースのみアクセスを許可する方法です。最小権限の原則に基づいて必要最低限の権限のみ許可しやすいのがメリットです。一方で必要なアクションを正確に洗い出す作業が必要になります。
ブラックリスト方式
ブラックリスト方式は、特定のアクションやリソースへのアクセスを拒否し、それ以外を許可する方法です。許可範囲が広い環境で特定の操作だけを制限したい場合に適しています。許可されるアクションの範囲が広がりやすく、意図しないアクセスが発生する可能性がある点がデメリットです。
ハイブリッド方式
ホワイトリストとブラックリストを組み合わせた設計方法です。この方法では、通常はホワイトリスト方式を採用し、特定の例外をブラックリストで補完します。セキュリティと柔軟性のバランスを取りたい場合に最適です。
管理ポリシー (AWS Managed Policies)について
ポリシーにはAWSが用意してくれている管理ポリシー (AWS Managed Policies)と自分で作成するカスタムポリシー (Customer Managed Policies)があります。
初心者でも管理ポリシーを使用することで、簡単にIAMの設定ができます。利用する機会は多いと思うのでどのようなポリシーがあるか簡単に把握しておくとスムーズに設定できます。
IAMポリシーで指定できるアクション、リソースなど
まとめ
AWSの運用をしていてIAMの理解が不十分だったのでまとめてみました。IAMは独特な用語が多くて最初は混乱してしまいますが、全体像を把握することで理解しやすくなると思いました。