【AWS初学者向け・図解】IAMとは?現役エンジニアがわかりやすく解説 – エンジニア女子の自習室
AWS

【AWS初学者向け・図解】IAMとは?現役エンジニアがわかりやすく解説

※この記事にはプロモーションが含まれています。

AWS初学者
AWS初学者

AWSサービスがなかなか理解できないなぁ..

おつまみ
おつまみ

そのお悩みを解決します!

AWSを学び始めた皆さん。
学習は順調に進んでいますか?

AWSはたくさんサービスがあって、1つ1つのサービスを学ぶのに苦労しますよね。

そこで本記事では「IAM」について、初心者にわかりやすいよう図解付きで解説していきます。

結論として、このようにまとめることができます。

今はまだ分からなくても全然大丈夫です!
本記事を読んだ後に「IAMってこういうサービスなんだなぁ」って思ってもらえれば嬉しいです。

またなんとなくIAMを分かっているつもりの方も「理解できていなかった」と思うポイントが隠されているかもしれません..!

AWSを学んでいる方の参考になれば嬉しいです!それではどうぞ!

本記事の対象者
  • これからAWSを学んでいく初学者の方
  • IAMって何?という疑問を持っている方
  • なんとなくIAMを分かったつもりでいるけど、改めて復習したい方
本記事で解説していないこと
  • IAMのベストプラクティス
  • IAMポリシーのポリシータイプ
  • IAMの評価理論

IAMとは

IAM(Identity and Access Management)とは「認証」・「認可」を設定するサービスです。

AWSはデフォルトではEC2やRDSといったAWSサービスを利用することは禁止されています。

そのため、AWSサービスを使用するためにはIAMで「認証」・「認可」を設定し、アクセスできる範囲を制御する必要があります。

認証・認可とは(別物です)

AWS初学者
AWS初学者

認証・認可ってどう違うの?

おつまみ
おつまみ

このような違いがあるよ!

認証:「誰であるか」を確認、実証すること
認可:「何をしていいか」の権限を確認、実証すること

具体的な例をあげると、このように表すことができます。

認証は身分証明証での「本人確認」、認可はお酒を購入する許可を与える行為をイメージすると分かりやすいです。

認証と認可は別の行為ですが、セットで行われることでアクセス権限を与えることができます。

IAMの要素

IAMには「認証」・「認可」を設定するために4つの要素があります。

  1. IAMユーザー
  2. IAMユーザーグループ
  3. IAMポリシー
  4. IAMロール

1つ1つどのような要素か解説していきますね。

IAMユーザー

IAMユーザーはAWSへアクセスするためのユーザのことを指します。

IAMユーザー自体には認可情報はなく、こちらの2つの認証情報を提供します。

  1. AWSマネジメントコンソールへログインするためのパスワード認証
  2. プログラムによるアクセスを行うためのアクセスキーとシークレットアクセスキーによる認証

後述する「IAMポリシー」を付与することで、AWSサービスへのアクセス権を可能にします。

IAMユーザーグループ

IAMユーザーグループはIAMユーザーをグループ化する機能です。

IAMユーザーがクラスの各メンバーだとすると、IAMユーザーグループはクラスのまとまりを指します。

IAMユーザーグループを使うことで、IAMユーザ毎に後述するIAMポリシーを付与するといった煩雑な権限管理を防ぐことができるメリットがあります。

IAMポリシー

IAMポリシーはAWSサービスやリソースへのアクセス権限を設定する機能です。

認可情報を提供し、ポリシーをJSON形式のドキュメントで定義することができます。

JSON形式のドキュメントでは、こちらの内容を定義しています。

定義内容
  • Principal:誰が
  • Action:どのAWSサービスの、どのような操作を
  • Resource:どのリソースに対して
  • Effect:許可または拒否するのか

具体例をあげると、こちらのようになります。(※わかりやすいように要素を入れ替えています)

定義内容
  • Principal:6組の山田くんと佐藤さんが(誰が)
  • Resource:カレーの鍋から(どのリソースに対して)
  • Action:鍋から皿に盛り付けることを(どのような操作を)
  • Effect:許可する:(許可または拒否するのか)

IAMポリシーでは「カレーを配膳する」や「後片付けをする」といった行為が許可されていると思ってもらえれば大丈夫です。

このIAMポリシーを前述のIAMユーザー・IAMユーザーグループに付与することで、AWSサービスへ権限を絞ってアクセスすることができるようになります。

しかし、行為そのものを人毎に付与すると管理が煩雑になりますよね
そこで、IAMロールの出番となります。

IAMロール

IAMロールとは、AWSリソースや一時的な権限を必要とする人に認可情報を付与する役割を持つ機能です。

前述のIAMポリシーと同様に認可情報を提供します。
IAMロールは簡単に言うと、1つ1つのIAMポリシーをまとめたものだと思ってもらえれば大丈夫です。

具体例をあげると、こちらがIAMロールでIAMポリシーをまとめることにあたります。

  • IAMポリシー:「カレーを配膳する」「後片付けをする」
  • IAMロール:「給食当番」の役割(IAMポリシーを含む)

IAMロールにより必要時のみ適切な役割を付与し、アクセス権限を行うといったセキュリティの高い運用が可能になります。

またIAMロールはIAMユーザー・IAMユーザーグループだけでなく、EC2などのAWSのサービスや他のアカウントに対してもAWS の操作権限を付与することができます

6組のメンバーだけでなく、他のクラスのメンバーも給食当番になれるということですね。
ただ誰にでもIAMロールを付与して、権限を与えることはセキュリティ的にもNGです。

そこでIAMロールを説明する上で忘れてはいけない、STSについても解説します。

STS

STS(Security Token Service)とは、AWSリソースに対して一時的な認証情報を発行するサービスです。

先ほど解説したIAMロールは誰でも使用できるものではなく、信頼できるユーザーにのみ引き渡す必要があります。

STSを使用する方法はこちらの通りです。

STSの使用方法
  1. 権限を引き受けるIAMユーザで認証情報の要求をする
  2. STSから一時的な認証情報が発行される
  3. IAMロールを引き受ける

…..ちょっと分かりにくいですね。
これを給食に置き換えると、このようになります。

STSの使用方法
  1. 山田くんが「俺、給食当番だった!」と気づき、給食当番になろうとする。(認証情報の要求)
  2. 給食時間にその日の当番が山田くんだった場合、その時間のみ当番になれる権限が与えられる。(認証情報が発行される)
  3. 給食当番になれる。(IAMロールを引き受ける)

なんとなく理解できたのではないでしょうか?

この行為を行うことで一時的に信頼できるユーザーにのみ権限を付与することができます。
よって、セキュリティの高い運用が可能になります。

以上がIAMについての解説でした。
最後に冒頭でお見せした図を改めて確認してみましょう。

また、IAMで知っておいてほしいポイントはこちらです。

ポイント
  1. IAMロールはIAMユーザーグループ・IAMユーザに付与して、はじめて効果がある。
    給食当番という役割だけでは、意味がない。
  2. IAMロールはIAMユーザに対して1つのみ付与可能。
    給食当番中は給食当番の役割に従順する。(さぼるなよ)
  3. 直接IAMユーザーグループ・IAMユーザにIAMポリシーも付与可能
    でもIAMロール(給食当番の役割)作っておいた方が楽だよね。
  4. 一時的な認証の場合IAMロールは認証にSTSを使用する。
    給食当番は給食の時間のみ役割を持つ

なんとなくIAMについて分かって頂けたかなと思います!

まとめ

今回はAWSサービスの中からIAMについてご紹介しました。

IAMはAWSサービスを操作するための、「認証」・「認可」を行う重要なサービスです。とても奥が深く、1度で理解するのは難しいと思います。

そのため、IAMは単体で触るよりも他のAWSサービスと一緒に触ることで徐々に理解を深めていきましょう!

AWS初学者の方は会員制コミュニティ付きの動画で学べるAWS学習オンラインスクールCloudTechがおすすめ!
CloudTechについてはこちらの記事でご紹介しているので、参考にしてみて下さい。

おつまみ
おつまみ

今だけお得に入会できるクーポンコード配布中!

それでは、これからも一緒に学んで、自己価値を高めていきましょう〜!

最後まで、お読み頂きありがとうございました!

参考文献

こちらの記事を作成するにあたり、こちらのブログ記事や本を参考にさせて頂きました!

①AWSエンジニア入門講座――学習ロードマップで体系的に学ぶ

②AWSの知識地図 〜現場必修の基礎から構築・セキュリティまで

今回解説していないIAMポリシーのポリシータイプ、IAMの評価理論、IAMのベストプラクティス等も詳しく解説されています。
どれもAWS初学者にとって、とても分かりやすい内容になっていますよ!

よかったら参考にしてみて下さい!

コメント

タイトルとURLをコピーしました