はじめに
AWS IAMでは、各AWSサービスの権限を制御する仕組みとして、「AWS管理ポリシー」、「カスタマー管理ポリシー」、「インラインポリシー」が存在する。
このポリシーの違いをまとめたいと思う。
管理ポリシーとインラインポリシー
AWS IAMでは、大きく「管理ポリシー」、「インラインポリシー」の2つ種類のポリシーが存在する。
「管理ポリシー」は、さらに「AWS管理ポリシー」、「カスタマー管理ポリシー」に分類することが出来る。
AWS管理ポリシー
AWSによって事前に用意されたポリシーのこと。
例) AmazonEC2FullAccess等。
カスタマー管理ポリシー
ユーザによって作成したポリシーのこと。
インラインポリシー
公式ドキュメントでは、「IAM アイデンティティ (ユーザー、グループ、またはロール) に埋め込まれたポリシー」と記載されている。
公式ドキュメントの記載だけでは、どういったものかが今一つ分からないため、各ポリシーの共通点、違いについてまとめることで理解を深める。
出典:AWSユーザーガイド.「インラインポリシー」. https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies ,(参照2022-04-03)
各ポリシーの共通点
そもそもポリシーは、「AWSサービスを制御する」ことが目的のため、「AWSサービスを制御する」という点が共通となる。
各ポリシーの違い
各ポリシーは、「誰がポリシーを作成するのか」、「各ポリシーの適用可能範囲」が異なる。
誰がポリシーを作成するのか
AWS管理ポリシー | カスタマー管理ポリシー | インラインポリシー |
---|---|---|
AWS | ユーザ | ユーザ |
各ポリシーの適用可能範囲
AWS管理ポリシー | カスタマー管理ポリシー | インラインポリシー |
---|---|---|
複数のAWSアカウントのユーザ、グループ、ロール | 特定のAWSアカウントのユーザ、グループ、ロール | 特定のAWSアカウントのユーザ、グループ、ロール *1 |
*1 「カスタマー管理ポリシー」が作成したポリシーをユーザ等(ユーザ、グループ、ロール)に適用しても、他のユーザ等に同様のポリシーを適用出来ることに対して、「インラインポリシー」は、作成したポリシーをユーザ等に適用すると、他のユーザ等に対して適用することが出来ない。
各ポリシーの適用可能範囲については、公式ドキュメントの図解が参考になる。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_managed-vs-inline.html
AWS管理ポリシーの適用可能範囲
出典:AWSユーザーガイド.「AWS 管理ポリシー」. https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies ,(参照2022-04-03)
カスタマー管理ポリシーの適用可能範囲
出典:AWSユーザーガイド.「カスタマー管理ポリシー」. https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies ,(参照2022-04-03)
インライン管理ポリシーの適用可能範囲
出典:AWSユーザーガイド.「インラインポリシー」. https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies ,(参照2022-04-03)
管理コンソール上の各ポリシーの表示
AWS管理ポリシー
「AWS管理」と表示されているポリシー名が「AWS管理ポリシー」であることを示す。
カスタマー管理ポリシー
「カスタマー管理」と表示されているポリシー名が「カスタマー管理ポリシー」であることを示す。
インラインポリシー
「インラインポリシー」と表示されているポリシー名が「インラインポリシー」であることを示す。
「インラインポリシー」は、作成したポリシーをユーザ等に適用すると、他のユーザ等に対して適用することが出来ないため、IAMのポリシー画面では作成した「インラインポリシー」は表示されない。
推奨事項
通常、「インラインポリシー」ではなく、管理ポリシーを使用することが推奨される。
個人的には、特権アカウント管理を行う場合に適用を検討することが良いと考える。例えば、特権アカウント管理を対象ユーザ、グループのみに「限定的に権限を適用」し、かつ、「誤ってその権限を別のユーザ、グループ等に適用させたくない」場合には「インラインポリシー」を適用するのが良いと考える。