
【PART2 ルートユーザー】ぜんぜんわからなかったIAMについてまとめてみました
こんにちはこぐまです。
PART1 認証と認可では以下を説明しました。
「認証」とは、誰であるか?を判断すること
「認可」とは、何を許すか?を判断し、与えること
そしてAWSのIAMはこの「認証」と「認可」を管理するサービスであるということをお伝えしました。
IAMの要素について、話を掘り下げていきたいところなのですが、その前にもう一つだけ理解しておくべき要素があります。
それは、「AWSアカウント」「ルートユーザー」です。
AWSアカウントとは?
AWSをはじめて利用するとき、最初に作成するのが「AWSアカウント」です。AWSアカウントは12桁の一意の番号(123456789012とか)とアカウント名(aws-kogumaとか)で識別されます。
番号はアカウント作成時にAWSから割り当てられ、アカウント名はアカウント作成時に決められます。(後で変更もできます)
AWSアカウント作成に必要なのは、「メールアドレス+パスワード」と支払い情報、連絡先情報等です。作成について詳しくはこちらを!
ルートユーザーとは?
AWSアカウントの作成が終わると、実際にAWSを利用できます。
AWSを利用するには、まず最初に「AWSマネジメントコンソール」にログインすることから始めます。その時に必要なのが、アカウント作成時に入力した「メールアドレス+パスワード」なのです。
AWSはこの情報を「認証」し、正当であると認めた場合、その人に「ルートユーザー」として「AWSマネジメントコンソール」に入ることを「認可」します。
同時に、AWSマネジメントコンソールで実行できるすべての作業も「認可」します。とても強力なユーザーであることが理解いただけるかと思います。

ここまでの説明の通り、「ルートユーザー」とは「AWSアカウントに直接紐付いたユーザー」ということになります。
なお、一つの「AWSアカウント」に存在できる「ルートユーザー」は一つだけです。

とても危険で不便では?
AWSアカウントごとに、AWSマネジメントコンソールに入るためのユーザーが「ルートユーザー」しかなくて、しかもルートユーザーは全権限を持っているなんて、とても危険で不便ではないですか・・?
その通りです。とても危険で不便です。
しかも「ルートユーザー」としてログインして通常作業を行うことは、AWSとしても推奨していません。
「ルートユーザー」しかないのに、「それを使うな!」って「ちょっと何言ってるかよくわかりません」ってなりますよね。
・・・もしかして
「ルートユーザー」以外にもマネジメントコンソールにログインするほかの方法があるのか・・?
はいあるんです。
そこで登場するのが「IAMユーザー」です。
IAMユーザーとルートユーザーの違いは・・?
IAMユーザーとは、マネジメントコンソールにログインできる、「ルートユーザーの代わり」です。(※1)
一つしか作れない「ルートユーザー」と違って、たくさん作ることができます。そしてそれぞれのIAMユーザーごとに、決まった範囲の「認可」を与えることができます。(※2)
だから、ルートユーザーとほぼ同じ権限を持ったIAMユーザーを「管理者用」として、管理部長に付与したり、
EC2の一覧しか参照できないような権限を持ったIAMユーザーを「サーバ閲覧用」として一般社員に付与したりできます。

(※1)
ここでは、マネジメントコンソールにログインするためにIAMユーザーがあると記載していますが、実際のIAMユーザー作成時には、「AWS CLI」によるコマンド実行するための認証情報や「CodeCommit」への認証情報などもあわせて作成することもできます。マネジメントコンソールにログインするため「だけ」にIAMユーザーが存在しているわけではありません。
(※2)
この決まった範囲の「認可」を与えるのが、「IAMポリシー」です。
具体的には、作成したIAMユーザーに(いろんな名前のついた)IAMポリシーを(いろんな方法で)アタッチするとポリシーで定義された「認可」をもらえることになります。これについてはまた後程・・。
IAMユーザーって誰が作るの?
最初の1つ目のIAMユーザーだけは、「ルートユーザー」で作成する必要があります。
2つ目以降のIAMユーザーは、「ルートユーザー」で作ることもできますが、「IAMユーザーを作成する権限を持ったIAMユーザー」から作成することができます。後述する通り、こちらのほうが良いです。
IAMユーザとルートユーザの使い分けは?
それぞれ適切な権限を持たせたIAMユーザーがあることで、ほとんどすべての通常作業時において「ルートユーザー」でのログインが不要となります。
AWSとしても、「ルートユーザー」でしかできない作業(アカウント閉鎖、ルートユーザーのパスワード変更など)の時のみ、ルートユーザーでログインしてください・・と言っています。
ですので、IAMユーザーを作成した後は、ほぼ(用途に応じた)IAMユーザーでログインします。最初のIAMユーザーを作成後、ルートユーザーでログインすることは実業務上でもほとんどありません。(※3)
(※3)
ルートユーザーはAWSアカウントに直接紐付いた何でもできるユーザーです。アカウントを閉鎖する権限もあります。ですので、くれぐれも慎重に取り扱う必要があります。ルートユーザー認証情報を公開しないことはもちろんですが、認証情報を取り扱うことができる範囲を限定したり、MFA認証を追加したり、自分たちで持たず信頼できる組織で管理して自分たちは最初からIAMユーザだけを利用する・・など、さまざまな対策があります。
IAMユーザーとルートユーザの違いについて説明してきました。
本日はここまで。
読んでくださってありがとうございました!