それなりにAWSを利用していますが、コード書きばかりに脳内リソースを割いておりアクセス権限などにあまり興味がいかない悪い癖があり困っています。
4月ということで新人さんもいますし、自戒の念も込めたりしつつ、まずはざっくりと自分用に関係をまとめておこうかと思いました。
下の図を見るだけで、大体ざっくり理解できるように書いているつもりです。(本家のサイトは用語が多すぎて難しすぎるので…)
もし間違いなどありましたらご指摘頂けると大変助かります。
IAMユーザ、グループ、ロール、ポリシー関係図
ポイント
- IAMユーザの認証方法には2種類があり、どちらかまたは両方を利用できる
- パスワード認証(Webコンソールから)
- アクセスキー&シークレットキー認証(CLIやAPIから)
- AWSの認証機構として、IAMユーザ以外に「IAMロール」がある
- IAMロールはAWSサービスの実行リソース(例えばLambdaの特定の関数など)に対する権限付与の仕組みであり、ユーザ(人間)は直接認証は意識しなくてよい。
- ちなみに厳密には、IAMロールはスイッチユーザなどにも使えるので、単純にサービス「だけ」に紐づくわけではなく、実は人に紐づくような利用方法もあったりします。(この辺もまたややこしい)
- アクセス権限付与の対象には3種類のモノがあり、この単位で利用権限を個別に付与できる。
- IAMユーザ
- IAMグループ
- IAMロール
- IAMグループはIAMユーザをひとまとめにグルーピングする概念である。(※ロールはグルーピングしない)
- 複数の権限セットを「IAMポリシー」としてひとまとめに扱える
- 権限付与対象へ、ポリシーを付与するか、個別の権限を直接(インラインポリシー)付与する。
(おまけ)ついでにGCPのIAMとの関係性
AWSとは少し離れますが、GCPにもIAMという似て非なる機能があります。
厳密性は省きつつ、大体同じ概念の用語を対応付けてみました。→GCPなんて知らーんと言う方はスルーで
AWSのIAM用語 | GCPのIAM用語 | 備考 |
---|---|---|
IAMユーザ | ユーザアカウント | 主に人が利用する際の権限付与対象 |
IAMグループ | Googleグループ | (複数の)人をひとまとめにして同一権限を付与する対象 |
IAMロール | サービスアカウント | 主にクラウドで実行するモノ(Lambda、CloudFunctionなど)に権限付与する対象 |
IAMポリシー | 役割(Role) | 権限のセットをひとまとめに扱うモノ |
こうして並べると、AWSのロールとGCPのロールの意味が別の意味で使われていることが分かります。(ややこしい)
世間一般のRDB(OracleやMySQLなど)やDirectoryService等の権限用語では、Roleの意味はGCP寄りの意味が多いかと思います。
→そういう意味ではAWSのRoleだけが特殊な気がします。(個人的感想)
おわりに
以上、ざっくりと調べた内容をまとめました。
普通に利用するにはまずはこの程度で良いのかなと思いますが、IAMは非常に奥が深い世界のようで、他にも色々な概念があるようです。
必要になったらIAMの別の用語についても、できるだけ難解な用語に頼らず、ざっくりとまとめられたらと思います。