【初心者向け】IAM完全攻略アルティマニア

##はじめに

これまでAWSの以下のサービスについて記事を投稿してきました。
**・S3**
**・Lambda**
**・API Gateway**
**・DynamoDB**

AWSのアカウントを作成して早3ヶ月ですが、今更ながらIAMユーザーを作成しましたので記事として投稿したいと思います！

そろそろ夏が来ましたね〜
![young-woman-1745173_640.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/2f8b5b80-3076-6790-29d5-822e2d04d844.jpeg)
><a href="https://pixabay.com/ja/users/adamkontor-79075/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1745173">adamkontor</a>による<a href="https://pixabay.com/ja/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1745173">Pixabay</a>からの画像

##アジェンダ
####1.そもそもIAMとは？
####2.IAMを使用する目的は？
####3.IAMユーザーの作り方（所要時間：5分）
####4.まとめ

##1.そもそもIAMとは？
以下[Black Belt](https://www.slideshare.net/AmazonWebServicesJapan/20190129-aws-black-belt-online-seminar-aws-identity-and-access-management-iam-part1)より参照

>AWS Identity and Access Management(IAM)とは

>・AWSリソースをセキュアに操作するために、認証・認可の仕組みを提供するマネージドサービス

要するにAWSの各サービスを安全に使用するための仕組みを提供するサービスです。
IAMを使用する目的については次章で説明します。

##2.IAMを使用する目的は？

S3のバケットポリシーなどAWSの各サービスはそれぞれセキュリティを高めるための設定が用意されています。
では、IAMを使用する目的とは何でしょう？

**その目的とはルートユーザーの保護ができるという点です！**

######・ルートユーザーとは？
→AWSアカウントに紐付くユーザーのことです。
つまり、AWSアカウント作成時に登録したメールアドレスとパスワードでAWSコンソールに
ログインできるユーザです。

![スクリーンショット 2019-06-15 13.33.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/5af1f07b-ec40-5f99-945e-d9c8e5d296ae.png)


ルートユーザーはAWSの全てのサービスの使用・設定ができる最も強力な権限を持つユーザーです。
ですので、ルートユーザーだけでS3やLambda等の使用・設定もできます。

しかし、最も強力な権限を持つルートユーザーの情報が流出した場合は、AWSサービスの不正利用やセキュリティ情報が流出するなどの非常に大きなリスクが発生します。

以下のサイト等で説明されていますが、不正利用によりAmazonから高額請求される恐れもあります。
[AWSの認証キーを奪われて仮想通貨を採掘される攻撃が発覚](http://gihyo.jp/dev/clip/01/tech_information/vol79/0003)

AWSではセキュリティ保護の観点から、基本的にはIAMで作成した「IAMユーザー」を使用し、極力ルートユーザーを使用しないことを推奨しています。
（とはいえ、例えば「AWSサポートサービスの変更」などの一部のタスクについてはルートユーザーで実行する必要があります）

次章では実際に私がIAMユーザーを作成した時の手順を説明します。

##3.IAMユーザーの作り方（所要時間：5分）

IAMでは以下の設定が行えます。
**・IAMユーザー**
**・IAMポリシー**
**・IAMグループ**
**・IAMロール（今回は設定しません）**

**IAMユーザーはAWSで使用できるユーザーです。**
前章でも述べましたが、ルートユーザーの代わりとして使用できるユーザーの作成が可能です。
また、ひとつのAWSアカウントで複数人で開発を行う場合は、各メンバ用のIAMユーザーを作ることも可能です。

**IAMポリシーはAWSサービスのアクセス・使用許可を設定できるオブジェクトです。**
IAMポリシーにはAWSであらかじめ用意されている「AWS管理ポリシー」や、
ユーザーが独自に定義できる「カスタム管理ポリシー」などがあります。
（他にも「インラインポリシー」と呼ばれるひとつのIAMユーザーやIAMポリシー、IAMグループに直接設定するポリシーがあるみたいですが、想定されるユースケースは少ないそうです）

**IAMグループはIAMユーザーの集合体です。**
ひとつのIAMユーザーに対して、最大10個のIAMグループを設定できます。

**IAMロールはAWSサービスの捜査権限をアプリケーションやAWSサービスに付与できる仕組みです。**
IAMロールを設定することで、各種アプリケーションからAWSサービスの操作が可能となります。
今回は使用しません。

**AWSでは必要最小限の権限を持ったIAMポリシーを設定したIAMグループを作成し、
IAMユーザーに作成したIAMグループを設定することを推奨しています。**
（これによって、IAMユーザーに新たな要望（例えば「会社の所属部署が変わったため、権限を変更したい」など）が発生した場合、必要な権限を持ったIAMグループを切り替えるだけで簡単に解決できます）

今回の目的はルートユーザーの代わりとして使用できる「IAMユーザー」の作成です。
ですので以下の手順で作成していきます。

**① ルートユーザーに近い権限を持ったIAMポリシーを付与したIAMグループを作成する**
**② ①で作成したIAMグループを設定したIAMユーザーを作成する**

###【手順】
####①ルートユーザーに近い権限を持ったIAMポリシーを付与したIAMグループを作成する
######・AWSマネジメントコンソールからIAMを選択する。
![スクリーンショット 2019-06-15 14.15.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/a9d6c3c6-4fbc-e66e-9f43-5d7a58dc578c.png)

選択後、IAMのホーム画面（ダッシュボード）に遷移します。
![スクリーンショット 2019-06-15 14.26.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/34eb6f80-7399-186b-9847-61a71db13372.png)

######・サイドバーの「グループ」を選択する。
![スクリーンショット 2019-06-15 14.21.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/1523ff85-1e68-1014-3eee-4db79c194da4.png)

######・「新しいグループの作成」を選択する。
![スクリーンショット 2019-06-15 15.10.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/e5ffd625-ef80-d9a3-b644-395a1aad6fbd.png)

######・「グループ名」を入力し、「次のステップ」を選択する。
![スクリーンショット 2019-06-15 15.13.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/151d7821-f748-9538-c4e5-903265d53af9.png)

######・グループに設定（アタッチ）する「IAMポリシー」にチェックをつけて「次のステップ」を選択する。
（今回は`AdministratorAccess`を選択しました。(※)）
![スクリーンショット 2019-06-15 15.34.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/68741a86-3e0e-ea59-4d82-7e64119ca6c8.png)

(※)ポリシーについて
こちらではよく使用される「AWS管理ポリシー」について説明します。
詳細については[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_job-functions.html)を参照してください。

**・AdministratorAccess**
いわゆる「管理者権限」に該当するポリシーです。
ルートユーザーの次に強力な権限があります。

IAMを含めたAWSのあらゆるサービス・リソースにアクセス・使用できる権限があります。
ただし、請求コンソールへのアクセスなどはできません。

**・PowerUserAccess**
いわゆる「開発者権限」に該当するポリシーです。
`AdministratorAccess`に次に強力な権限があります。

`AdministratorAccess`同様、AWSのあらゆるサービス・リソースにアクセス・使用できる権限がありますが、IAMへのアクセス・使用できる権限はありません。

今回は目的を達成できる`AdministratorAccess`を選択していますが、
**基本的には「AWS管理ポリシー」を使用し、必要に応じて「カスタム管理ポリシー」を作成する方針で良いと思います。**

######・設定情報を確認し、「グループの作成」を選択する。
![スクリーンショット 2019-06-15 15.56.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/2d2b187a-bd82-62d0-2a1a-b1add16eb11e.png)

**これでグループの作成は完了しました！**
####② ①で作成したIAMグループを設定したIAMユーザーを作成する
######・サイドバーの「ユーザー」を選択する。
![スクリーンショット 2019-06-15 16.03.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/7bd07225-17c5-1b35-bba4-a2cd752a535d.png)

######・「ユーザーを追加」を選択する。
![スクリーンショット 2019-06-15 16.06.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/4f967963-75b6-135b-159f-89f689085c74.png)

######・「ユーザー名」の入力と「アクセスの種類」にチェックをつけて「次のステップ：アクセス権限」を選択する。
![スクリーンショット 2019-06-15 16.10.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/cf3af1c3-fa6f-0cb5-c5ca-50047e467036.png)

「アクセスの種類」ですが、今回は「AWSマネジメントコンソールへのアクセス」と「プログラムによるアクセス」の両方にチェックを入れました。
![スクリーンショット 2019-06-15 16.15.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/6a66a785-2e1a-a00f-ca54-82de7222b34a.png)

また、「AWSマネジメントコンソールへのアクセス」にチェックをつけると以下の項目が表示されます。
・コンソールのパスワード
・パスワードのリセットが必要

今回は上記のデフォルトの設定のままにしておきます。

######・「ユーザーをグループに追加」を選択後、①にて作成した「IAMグループ」にチェックをつけて「次のステップ：タグ」を選択する。
![スクリーンショット 2019-06-15 16.20.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/32f65d28-0b67-51a8-6056-7d321ab97ff2.png)

（ちなみに）
この画面では作成するIAMユーザーに「IAMポリシー」を設定することもできます。
![スクリーンショット 2019-06-15 16.27.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/266aec5f-1f98-d0af-b9d8-0958f28699b7.png)

また、既に作成済みの「IAMユーザー」の権限をコピーすることもできます。
![スクリーンショット 2019-06-15 16.28.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/94677330-7ada-d87f-8a91-9f03a347ca11.png)

######・必要に応じてタグの設定を行い、「次のステップ：確認」を選択する。

![スクリーンショット 2019-06-15 16.42.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/64836687-7449-6ff9-3397-cbefbbf9b354.png)

######・設定内容を確認し、「ユーザーの作成」を選択する。
![スクリーンショット 2019-06-15 16.45.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/ca6d2c52-e8fb-29f4-16f2-ded999ca58d9.png)

これで「IAMユーザー」の作成は完了しました！
ですが、喜ぶのはまだ早いです。

######・画面に表示される「アクセスキーID」、「シークレットアクセスキー」、「パスワード」を必ず控えておくこと！(※)
![スクリーンショット 2019-06-15 16.48.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/a707ff21-da7c-71ec-8973-51048ddcc5c9.png)


(※)ユーザー作成時に「アクセスの種類」にてチェックをつけた項目により、画面の表示内容は変わります。
**・「AWSマネジメントコンソールへのアクセス」にチェック**
→「パスワード」が表示される
**・「プログラムによるアクセス」にチェック**
→「アクセスキーID」、「シークレットアクセスキー」が表示される

**アクセスキーを紛失した場合は再発行となりますので必ずメモする、「csvダウンロード」・「Eメールの送信」を行ってください。**

**これでルートユーザーの代わりとなる「IAMユーザー」の作成が完了しました！！**

##4.まとめ

長々と書きましたが、IAMユーザーの作成は短時間で行えます。


私はAWSアカウントを作成後、しばらくはルートユーザーを使用していましたが
これからAWSアカウントを作成される方　あるいは作成された方はいち早くIAMユーザーを作成することをお勧めします！