SCSK永見です。
IAMとは、AWS リソースへのアクセスを安全に管理するための認証・認可を司るサービスです。 なのでAWSサービスを使う以上、IAMの理解は避けては通れません。
そこで今回は、初めてIAMに触れる方へ向けて、IAMの中でベースとなる「IAMポリシー」「IAMユーザ」「IAMグループ」「IAMロール」の概念を、サンタクロースになぞらえて解説します。
全体像
さっそくタイトルの伏線回収をしましょう。この画像が、この記事で説明するすべてです。
IAMポリシーはできること、できないことの権限を定義し、それらはIAMユーザ、IAMグループ、IAMポリシーに紐づける事ができます。 IAMユーザはIAMユーザ自身、もしくは所属しているIAMグループに付与されたIAMポリシーに応じて、AWSのリソース操作が許可/拒否されます。
IAMユーザーやアプリケーション、サービスは、IAMロールを引き受けることができ、IAMロールに付与されたIAMポリシーに応じてAWSのリソース操作が許可/拒否されます。
AWSのアイコンを使うと、このように表すことができます。
IAMポリシーとは
できること、できないことの定義をIAMポリシーといいます。「権限」のようなイメージです。
S3バケットを一覧できる、EC2インスタンスを起動できる、RDSを削除してはいけない、、などなど、AWSのリソース操作に対する権限を定義できるのがIAMポリシーです。定義はjson形式で記載されます。
サンタクロースは、空を飛べるそりに乗ることができる、子どもがいる家に入ることができる、正体がばれてはならない、、などの「権限」があります。
IAMユーザとは
「人」自身をIAMユーザと言います。これはわかりやすいですね。
IAMポリシーはIAMユーザにアタッチすることができます。このIAMユーザはS3バケットを一覧できる、RDSを削除してはいけない、、など、IAMポリシーを紐づけることを アタッチ といいます。
「サンタクロース」のIAMユーザには、子どもがいる家に入ることができる、正体がばれてはならない などのIAMポリシーが紐づいていますね。
IAMグループとは
IAMユーザが所属する「団体」です。これも割とわかりやすいですね。
IAMポリシーはIAMグループにアタッチすることができます。かつ、IAMユーザはIAMグループに所属することができます。IAMグループにアタッチされたIAMポリシーは、IAMグループに所属しているIAMユーザに継承されます。
ところで、サンタクロースには公認試験というものがあるらしいです。
https://ja.m.wikipedia.org/wiki/サンタクロース#公認試験
みごとこの試験に合格したら、「公認サンタクロース」とみなされます。この「公認サンタクロース」IAMグループには同じく子どもがいる家に入ることができる、正体がばれてはならない などのIAMポリシーが紐づいており、「公認サンタクロース」IAMグループに所属していれば、これらの権限を継承することができます。
IAMロールとは
ロール を直訳すると「役割」です。これがちょっと難しいですね。
IAMポリシーはIAMロールにアタッチすることができます。そしてIAMロールはアタッチされたできること、できないこと を、IAMユーザーやアプリケーション、サービス、リソースに引き継ぐことができます。
サンタクロースの特徴といえば、「サンタ帽」ですね。この「サンタ帽」IAMロールにもそりで空を飛べる、プレゼントを際限なく持てる などのIAMポリシーが紐づいています。
この「サンタ帽」をかぶれば、どんな人であろうと、もっというと人でなくても、これらの権限を有することができます。
まとめ
AWSに初めて触れた時、IAMポリシーとIAMロールが似たような概念で混乱したことを思い出し、この記事を書きました。IAMユーザはIAMポリシーを直接アタッチ、IAMユーザグループから継承、IAMロールを引き継ぐ のパターンがあるのでややこしいですね。
IAMはAWSの基礎となるサービスです。混乱したときは、「サンタクロース」「公認サンタクロース」「サンタ帽」の絵を思い出しながらゆっくり理解しましょう。