AWS内のEC2やS3などの各リソースにアクセス・操作するためのユーザーや権限の管理を『IAM』という機能で行っています。
AWSを操作する際に必要となる基本的な機能ではありますが、いろいろ用語が多く頭の中が混乱することもあるため、整理して概要を解説したいと思います。
- IAMは『誰が』『何をできるのか』を管理するための機能だよ
- 基本的な要素は『ユーザ』『ユーザグループ』『ロール』『ポリシー』の4つ
- 『ユーザ』『ユーザグループ』『ロール』に『ポリシー』を適用することでアクセス管理を行っているよ
そもそもIAMとは?
IAMについて
AWS Identity and Access Managementの略です。直訳すると『身元とアクセスの管理』となる通り、ユーザとアクセス権限の管理を行います。
目的
- 誰が(あるいは何が)AWSアカウントにアクセスできて
- その人はどの何をできるのか
を管理するための機能です。
主な管理要素
上記の目的を果たすため、以下を作成、管理します。
ユーザ
AWSリソースにアクセスする個々人に権限を割り当てるための管理単位。
ユーザグループ
複数のユーザに権限を割り当てるための管理単位。
ロール
AWSリソースにアクセスする人以外のものに権限を割り当てるための管理単位。
※AWSではリソース間での通信にもアクセス権限が必要(EC2からS3にアクセスする場合、EC2にS3へのアクセス権を設定する必要がある)。
人の操作はユーザやユーザグループでアクセス権限を管理するが、リソースはユーザではないため別の管理が必要となる。そこで、ロールという概念を作り、内部的に人以外のアクセス管理をユーザと同じく扱えるようにしている。(ということじゃないかなと筆者は思っている。)
ポリシー
アクセス権限の定義本体。
ポリシーをユーザ、グループ、ロールに紐づける(アタッチ)ことで権限付与する。
とりあえずこれら4つの言葉を押さえてください。
IAMによるアクセス制御
アクセス制御のイメージ
AWSリソース(EC2など)へのアクセスは、ユーザ/グループ/ロールにポリシーをアタッチすることで制御します。アタッチされたポリシーで許可されている操作のみ可能となります。
プリンシパルにより使用するIAMエンティティが異なります。
- 人が直接操作する場合はIAMユーザ
- 人以外が操作する場合はIAMロール
を使うと考えてください。別のアカウントからの操作は自アカウントから見るとシステムからの操作であるためIAMロールになります。
また、ポリシーはユーザ、グループ、ロールだけでなく、アクセス先のIAMリソース側に付与し、『特定のユーザーだけ接続可』などとすることもできます。(後で解説します)
IAMが管理しているリソースは以下の4つの階層に分けられます。似たような用語があり混乱しやすいため図も含めて記載しておきます。
IAMリソース | IAMで保存・管理するもの全般。 ユーザ、グループ、ロール、ポリシーなど。 |
---|---|
IAMアイデンティティ | グループ化して管理するためのIAMリソース。 ユーザ、グループ、ロール。 ポリシーで管理できる単位と考えれば良いかも。 |
IAMエンティティ | 認証の実体単位。 ユーザ、ロール。 |
プリンシパル | ユーザ、ロールを使用する人またはアプリケーション。 操作主体。 |
参考元
とりあえずフワッとだけ知りたい人はここまででOKです。
次記事ではポリシーについてもう少し掘り下げて解説していきたいと思います。