22. 05. 09.
AI生成コンテンツは不正確または誤解を招く可能性があります。
ユーザーアカウントの管理が主な目的であり、ユーザーを管理し、アクセスレベルと権限を管理できる権限管理ソリューションです。
すべてのAWSに対してきめ細かいアクセス制御を提供します。IAMを使用すると、サービスとリソースにアクセスできるユーザーとアクセス条件を指定できます。IAMポリシーで人員とシステムの権限を管理し、最小権限を保証できます。
AWS IAMダッシュボードに記載されている説明です。IAMはIdentity and Access Managementの略で、鍵の形のロゴを使用しています。 
IAMはルートアカウントより低い、または制限された権限を持つサブアカウントを管理するサービスです。利用料金は無制限で無料であり、アカウント作成にも制限はありません。
IAMがAWSにアクセスできるユーザーを管理するサービスであることがわかりました。では、なぜ複数のアカウントを追加で作成し、わざわざ最小権限で維持・管理する必要があるのでしょうか?
正確ではありませんが、私が理解したことをもとに一つの仮定をしてみましょう。あなたが会社を運営しているとします。うーん...CTOだと仮定しましょう。そして、その会社がクラウドを利用したサービスを、特にAWSを利用してサービスを提供しているとすると、会社のAWSルートアカウントを作成するでしょう。まだよくわかりませんが、おそらく法人カードのようなものを使用するアカウントを作成するでしょう。会社にはさまざまな開発部署があるでしょう。それぞれ異なる部分の開発を担当する部署で管理すべきAWSリソースは異なるでしょう。ある部署が必要以上の管理権限を得ると、その必要もないし、誤ったアクセスで他の部署のサービスを壊してしまう可能性もあります。
また、あなたがあるサービスを開発していて、何らかの理由で.envファイルにAWSアクセスキーを書いていたとします。そしてGitHubにアップロードするとき、.gitignoreファイルの作成を忘れて、そのまま.envファイルをアップロードしてしまったら... さらにIAMを使用していなくてルートアカウントのアクセスキーが漏洩したら、このような記事の主人公になる可能性があります。 
もちろん状況が異なる場合もありますが、ハッキングやミスでキーが漏洩したという点は共通しています。このような状況を予防したり被害を軽減するためにIAMが存在します。
ここまでがIAMユーザーアカウントがなぜ必要かについての仮定でした。
IAM AWS認証情報タイプには2種類あります。アクセスキーを使用するプログラムによるアクセス、パスワードを使用するAWS管理コンソールアクセス今後、それぞれキー方式、パスワード方式と呼びます。
2種類のタイプを同時に選択することもでき、使用目的と環境に応じて選択すればよいです。
AWS管理コンソールにアクセスするためにパスワードを認証手段として使用します。
IAMユーザーアカウントは、ルートアカウントのようにWebダッシュボードにアクセスしてサービスをコントロールしますが、アカウントに対するすべての権限を持つルートアカウントとは異なり、ルートアカウントまたは上位権限グループで適用された制限された権限で管理できます。
AWS API、AWS CLI、AWS SDKにアクセスするためにアクセスIDとシークレットアクセスキーを認証手段として使用します。
プログラムによるアクセスのみが有効な場合、管理コンソールにはアクセスできませんが、API/CLI/SDKで与えられた権限の操作を実行できます。通常、IAMを初めて接するのはこの方式でしょう。(AWS CLI入門、AWS SDKを使用したプログラミング...パスワード方式に比べて使用がほぼ強制されるため)
IAMには数多くの権限が存在し、組織が大きくなるほど特定のグループで共有する権限、特定のユーザーに必要な特殊な権限などが生まれます。複雑になりがちなIAMアカウント管理を助ける機能を見てみましょう!
ユーザーグループはIAMユーザーのコレクションです。グループを使用してユーザーコレクションの権限を指定できます。
ユーザーをまとめたグループ文字通り、類似の役割を共有するユーザーを一つにまとめ、グループに共有するポリシーを設定しておくと、ポリシーをグループ単位で管理できるようになります。
IAMユーザーは、アカウントでAWSとやり取りするために使用される長期認証情報を持つIDです。
実際にアクセスする手段を提供するもの後で説明するロールと対照的に、長期認証情報を持っています自分が所属するユーザーグループのポリシーとユーザー固有の権限が適用されます
IAMロールは、短期間有効な認証情報を持つ特定の権限があるIDです。信頼できるエンティティがロールを引き受けることができます。
正直よくわかりません。ユーザーが存在し、そのユーザーに十分な権限があれば、作業に必要なロールを委任されて必要な作業を実行し、作業が終わったらロールを返す...そのような一時的な権限を指すようです。後でIAMロールだけ別途投稿してみようと思います。
ポリシーは権限を定義するAWSのオブジェクトです。
ポリシーはAWSリソースにアクセスできるユーザーとそのリソースで実行できる操作を指定したJSONドキュメントです。IDまたはリソースにポリシーをアタッチして権限を定義できるそうです。うーん...これもポリシーの書き方で別途投稿してみます。