はじめに
AWS SAAの過去問を解いているとIAM系の用語をあまり理解していないことに気づいたので、備忘録的にまとめて、整理してみます。
まず「IAMとは何か」を一言で
「誰が・何に・何をできるか」を管理する仕組みです。
この「誰が」「何を」という軸で整理すると、各用語の役割がすっきり見えてきます。
「誰に権限を与えるか」の3つ
IAMユーザー
人間やアプリが使う固定のアカウントです。
- ID・パスワードやアクセスキーを持つ
- 漏洩したら永続的に悪用されるリスクがある
IAMグループ
IAMユーザーをまとめる入れ物です。
- グループ自体はログインできない
- グループにポリシーを設定すると、所属ユーザー全員に一括適用できる
- 「開発チーム」「経理部門」など部署単位で権限をまとめるときに便利
IAMロール
一時的に借りる権限セットです。
最初は「ユーザーと何が違うんや?」と思っていたのですが、決定的な違いはパスワードが存在しないことです。
IAMユーザー → 固定のパスワード・アクセスキーを持つ
IAMロール → 使うたびに一時トークンが自動発行される(15分〜数時間で期限切れ)
EC2インスタンスがS3やRDSにアクセスするとき、コードにパスワードを書く必要がなくなります。これがIAMロールの最大のメリットです。
使い分けのイメージ
| 対象 | 使うもの |
|---|---|
| 社員・開発者 | IAMユーザー |
| 部署・チーム | IAMグループ |
| EC2・Lambda・他AWSアカウント | IAMロール |
「何を許可するか」= IAMポリシー
IAMポリシーは、権限のルールをJSONで書いたものです。
ユーザー・グループ・ロール単体では何もできません。IAMポリシーをアタッチして初めて「これができる」という権限が生まれます。
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
このポリシーは「my-bucketのオブジェクトを読み取っていいよ」という意味です。
ポリシーの種類
| 種類 | 内容 |
|---|---|
| AWS管理ポリシー | AWSが用意している既製品。AmazonS3FullAccessなど |
| カスタマー管理ポリシー | 自分で作成するポリシー |
| インラインポリシー | ユーザー・ロールに直接埋め込むポリシー |
おわりに
こちらの記事は、IAMロールを詳しく解説してくれてて、おすすめです。
同じように勉強中の方の参考になれば嬉しいです。