AWS  IAM( Identity and Access Management)とは

#IAM( Identity and Access Management)とは

•AWS Identity and Access Management (IAM) は、AWS リソースへの**アクセス**を安全に管理するための ウェブサービスです。IAM を使用して、リソースを使用するために**認証 (サインイン)**され、**許可された (アクセス許可を持つ)** ユーザーを制御します。
• 各AWSリソースに対して別々のアクセス権限を**ユーザー毎**に付与できる
• **多要素認証(Multi-Factor Authentication : MFA)**によるセキュリティの強化
• 一時的な認証トークンを用いた権限の委任
• 他のIDプロバイダーで認証されたユーザーにAWSリソースへの一時的なアクセス
• 世界中のAWSリージョンで同じアイデンティティと権限を利用可能
• データ変更は結果整合性を保ちながら全リージョンに伝搬
• AWS IAM自体の利用は無料
#主要トピック
<img width="800" alt="スクリーンショット 2020-03-03 11.14.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/a4988d5b-1252-b0b9-89d2-2182a69da59f.png">

#1. ユーザー(ルートユーザーとIAMユーザー)
###ルートユーザ
- AWS ルートユーザはAWS **アカウントの作成時**およびAWS へのサインインに使用するアカウント。アカウント内の全てのリソースに**無制限にアクセスできる**。
- また、各サービスのマネジメントコンソールにはルートユーザーとしてサインインできる。
- アカウントの作成時に指定したメールアドレスとパスワードの組み合わせをルートユーザー認証情報と呼ぶ。
- 公式ではセキュリティ的な観点から**「日常のアクセスには、ルートユーザー認証情報を使用しないこと**を推奨」している。
<img width="800" alt="スクリーンショット 2020-03-03 11.29.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/2a6fa6f0-f383-bb72-60f3-27cf1a81d80a.png">

###IAMユーザー
IAMポリシー内でAWSサービスを利用できるユーザー。基本操作はIAMユーザーで実施する。
#2.グループ
###IAMグループ
- 同じ権限を持ったユーザーの集まり。
- グループはAWSへのアクセス認証情報は保持しません。認証はあくまでユーザーで行い、グループは認証されたユーザーかどういった権限（サービスの利用可否）を持つかを管理します。
- グループの目的は、権限を容易かつ正確に管理する事。
- 複数のユーザーに同一の権限を個別に与えると、権限の付与漏れや過剰付与などのミス発生が高くなる。
<img width="714" alt="スクリーンショット 2020-03-03 11.48.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/70a8928e-f0d6-8128-a895-2ec9ee71b5fb.png">
<img width="928" alt="スクリーンショット 2020-03-03 11.32.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/5b17d97e-b9e4-bbff-ab55-36ada49fbca7.png">


#3.ポリシー（IAMポリシー）
- IAMアイデンティティやAWSリソースに関連づけることによってアクセス許可を定義することができるオブジェクト
- AWSサービスやAWSリソースに対する操作権限をJSON形式で定義したものがIAMポリシー
- ポリシードキュメントは1つ以上のStatementブロックで構成

| 項目 | 内容 |
|:--|:--|
| Version | IAMポリシーの文法バージョン |
| Effect | ここで定義するポリシーが許可を与えるポリシー（Allow)か拒否するポリシー（Deny)かを設定 |
| Action | 「どのAWSサービス」に対する「どのような操作」を許可(拒否)するかを設定 |
| Resource | 「どのAWSリソース」に対する操作を許可(拒否)するかを設定 |

<img width="820" alt="スクリーンショット 2020-03-03 12.03.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/aa93eca0-d948-cd9e-a97c-1bd47a3ac29a.png">
##管理ポリシー
AWSが提供する代表的なPolicy（管理者権限、EC2フルアクセスなど）と利用者が作成するカスタムポリシーがあります。どちらの場合も、Management PolicyはUserやRoleに与えることができるため、なんらかのPolicyを幾つかのUserやRoleで再利用する場合に便利です。
###よく使われるもの
AdministratorAccess （管理者権限）
ReadOnlyAccess （読み込み権限）
AmazonEC2FullAccess （EC2に関する全権限）
AmazonS3FullAccess （S3に関する全権限）
AmazonS3ReadOnlyAccess （S3に関する読み込み権限）
<img width="940" alt="スクリーンショット 2020-03-03 12.03.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/a4166fd3-0ab0-2bd4-eea3-70b829da4eb3.png">
###インラインポリシー
Inline Policy（インラインポリシー）は、細かくアクセス許可を設定できますが、各Userや各Roleに直接設定するため、再利用はできません（Groupに設定した場合は、属するUser全体に適用できます）。

Inline PolicyはPolicy DocumentにJSON形式で記述します。 Policy Documentでは、どんなリソースに対し、どんなアクションを許可（不許可）とするかを細かく設定できます。
<img width="940" alt="スクリーンショット 2020-03-03 12.04.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/7cc49a67-f511-391e-ca30-890bcaa572ef.png">
###参考　AWS : IAMについて今更学ぶ
https://qiita.com/qiita-kurara/items/b6123be16fbbc82bfee6

#4.ロール（IAMロール）
- AWSサービスやアプリケーション等のエンティティに対してAWSリソースの操作権限を付与するための仕組み
- ユーザーまたはアプリケーションがロールを一時的に“引き受ける”ことで関連付けられたアクセス許可を受けることができる
- IAMユーザーやグループには紐付かない
<img width="678" alt="スクリーンショット 2020-03-03 12.10.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/40e37516-d842-748c-ff5d-056f8f623f88.png">

### A.AWSリソースへの権限付与
EC2インスタンス上で稼働するアプリケーションに一時的にAWSリソースへのアクセスする権限を与えたい

###B.クロスアカウントアクセス
複数のAWSアカウント間のリソースを一つのユーザーで操作したい

###C.IDフェデレーション
社内のADサーバーに登録されているアカウントを使用して、AWSリソースにアクセスしたい

###D.WEB　IDフェデレーション
FacebookやGoogleアカウントを使用してAWSリソースにアクセスしたい

#AWSリソースにアクセスするしくみ
<img width="947" alt="スクリーンショット 2020-03-03 10.58.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/02914905-9650-eee9-9431-88d22aa3da02.png">


#最後に
まだまだわからない部分もありますが、イメージしやいように
アップデートもしていきたいと思います。