AWS初心者は必ず読むべき！必見！AWSの基本⑪IAMでアクセス権限管理

# この記事の概要
インフラの運用において情報が安全に守られているかを確認するセキュリティを扱います。

# IAMとは
AWSを利用するユーザーの権限を管理するサービスです。

⚫︎```ポリシー```
アクセス許可のことで、どのサービスの、どのリソースに、どんな操作するか

⚫︎```ユーザー```
個々のアカウントのユーザー

⚫︎```グループ```
IAMユーザーの集合

⚫︎```ロール```
一時的にアクセスを許可したアカウントが発行でき、EC2やLambdaなどのAWSリソースに
権限を与えるために使います。

ポリシー グループ ユーザー ロールの関係性を表した資料です。

https://milestone-of-se.nesuke.com/sv-advanced/aws/iam-policy-role-group/

https://qiita.com/ninoko1995/items/79ab8c7c40825c9b68f5


# IAMポリシーを作成
```Developerポリシー```と```Directorポリシー```を作成します。

⚫︎```Developerポリシー```
***EC2、RDSの全操作***ができます。

⚫︎```Directorポリシー```
***EC2の読み取り***に使えます。

IAMを開いてポリシーを開き、***ポリシーを作成***していきます。

![スクリーンショット 2022-10-13 2.30.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/44133ed3-f3fd-8429-ec89-2df802bf0dff.png)

***developerポリシー***から作っていきます。サービスの選択をクリックします。EC2を入力します。

![スクリーンショット 2022-10-13 2.31.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/9e2d73e4-18cc-606b-f96c-4a088aacaaa9.png)

![スクリーンショット 2022-10-13 2.33.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/fb310840-f747-5374-1e5e-14b1bcb669e2.png)

全てのリソースを選びます。
![スクリーンショット 2022-10-13 2.34.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/e8dd432e-7d3a-0883-8f4f-f8f74cbbf370.png)

サービスの追加からRDSも同じように設定します。
![スクリーンショット 2022-10-13 2.35.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/e7274820-d1ae-c965-449c-bf3ab3f31fa8.png)

![スクリーンショット 2022-10-13 2.36.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/1006fcf4-7f4e-2acc-b022-83d714f10cd8.png)

ポリシーを作成していきます。
![スクリーンショット 2022-10-13 2.37.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/69748f76-964c-717a-f3bc-853c0f3c62c5.png)

developer-policyができました。
![スクリーンショット 2022-10-13 2.38.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/14dd2302-5608-dd5a-ab47-46e9f4c967e0.png)


***Directorポリシー***から作っていきます。ポリシーの作成をクリックします。
アクションは読み込みだけできるようにします。
![スクリーンショット 2022-10-13 2.41.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/8b808ce1-ec5d-db16-a37b-b93d4cbdfc5a.png)

リソースは全てのリソースを選びます。
![スクリーンショット 2022-10-13 2.42.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/93548e65-d997-ac37-2dfb-b5ec829036cf.png)

ポリシーを作成していきます。
![スクリーンショット 2022-10-13 2.43.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/73da96bd-b903-e542-f58a-89f91118c12d.png)

こうしてポリシーが2つできました。
![スクリーンショット 2022-10-13 2.44.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/1fd335cb-40cd-513f-a9fd-4f287226814e.png)



# IAMとグループとユーザーを作成
上で作ったポリシーをベースにグループを作っていきます。
DevelopersにはLuffyとZoroというユーザーを作ります。DirectorsにはAceというユーザーを作ります。

IAMに移動します。そしてユーザーグループからグループを作成します。

![スクリーンショット 2022-10-15 9.59.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/9e0d6993-0aab-2a47-880f-1322445d2caa.png)

![スクリーンショット 2022-10-15 10.00.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/91986b2b-fd43-6073-6991-9dd44ad16cbe.png)

developerポリシーを選択します。そしたらグループの作成をします。
![スクリーンショット 2022-10-15 10.01.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/fa33fa1f-c00e-9557-73c4-190ba80f3a48.png)


こうしてグループが作成されました。

![スクリーンショット 2022-10-15 10.02.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/76e4b45a-267c-a60f-bda5-3a8b7edf2f34.png)

そしてdirectorsグループも作ります。

![スクリーンショット 2022-10-15 10.03.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/bc49aa05-3252-eb3c-2be2-d5cdef8c8dd7.png)

directorポリシーを選択します。そしてグループを作成します。
![スクリーンショット 2022-10-15 10.04.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/668f4c1f-a22f-7327-1c0c-cd50ec72ef82.png)

こうしてグループができました。
![スクリーンショット 2022-10-15 10.04.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/a66b907b-0c4b-a522-f156-4b5beabdd9f1.png)

次にユーザーを追加していきます。

![スクリーンショット 2022-10-15 10.06.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/df205ac7-ac8d-255c-d82f-32c7b2489679.png)

まずはdevelopersからです。

![スクリーンショット 2022-10-15 10.07.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/0da78104-104b-80fa-7a01-311b9a1eedd6.png)

![スクリーンショット 2022-10-15 10.09.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/f6aca450-57db-a0d3-5b25-9b1bf4441828.png)

アクセス許可の設定ですが、ユーザーグループの追加です。
developersにチェックを入れます。
![スクリーンショット 2022-10-15 10.10.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/83098e0b-7dac-d840-f08e-2628206833ac.png)

タグは今回は入力不要です。最後は確認をしてユーザーを作成します。
Eメールで送信しておきましょう。そしてcsvのダウンロードをしておきます。

![スクリーンショット 2022-10-15 10.12.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/171e0572-251a-5e10-c65e-751d9b09252f.png)

こうしてユーザー名のLuffy,Zoroが作成されました。グループがdevelopersの方に所属しています。
![スクリーンショット 2022-10-15 10.17.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/180ecdfc-30e9-ddcb-dadb-5b5d6b827bde.png)

次にdirectorsユーザーを作成していきます。ユーザー追加します。手順はdevelopersとほぼ同じです。

![スクリーンショット 2022-10-15 10.21.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/575eab31-1f66-abee-e315-0dab2bcddcc6.png)

![スクリーンショット 2022-10-15 10.22.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/bfc2e818-508d-d65a-57bb-3a8be0aa9164.png)

アクセス許可の設定ではdirectorsの方を選びます。
![スクリーンショット 2022-10-15 10.22.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/3f9d2ce0-1013-fc20-9796-14157ba4f5d8.png)

タグはつけずにユーザーを作成していきます。

こうしてユーザーが作成されました。メールを送信してcsvをダウンロードします。
![スクリーンショット 2022-10-15 10.24.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/c68f3ec6-ba4e-c108-f859-99d8b4b88478.png)

こうしてAceユーザーが作成されました。directorsになっているのを確認してください。
![スクリーンショット 2022-10-15 10.27.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/94026587-b741-131d-d3cb-dd191f2f68c2.png)


一回サインアウトして作成したユーザーでログインしてください。
ユーザー名をLuffy、Zoro、Aceにしてみてください。パスワード変更の画面になるはずです。

![スクリーンショット 2022-10-15 10.34.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/36f9771a-3661-bb34-2f1b-fd3e186875ad.png)

ユーザー名がLuffyでログインできました。developersユーザー(Luffy)はEC2とRDSの全操作ができます。
![スクリーンショット 2022-10-15 10.50.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/360097e9-883f-e9dc-8e6f-1c0e9e8a1412.png)

EC2で動かしてみます。

インスタンスを作成してください。developersの方はEC2が起動できるはずです。
サインアウトをしてdirectorsユーザー(Ace)からログインしてください。
こちらでもEC2を作成していきます。するとインスタンスの作成ができないことがわかると思います。
これらが***IAMで行う権限管理***です。それぞれの***グループに適切な権限を割り当て適切な管理***をします。

最後に自分のユーザーに戻っておいてください。

# IAMロールを作成
IAMロールは一時的にアクセスを許可したアカウントが発行でき、EC2やLambdaなどのAWSリソースに
権限を与えるために使います。

ここでは***Webというロールを作成***します。
まずはEC2のインスタンスを開きます。パブリックIPアドレスをコピーします。こちらでSSH接続してください。

![スクリーンショット 2022-10-15 11.25.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/5a44c26b-9e8e-75f5-50e9-dce0b7cdb693.png)

```
Downloads % ssh -i "aws-infra-ssh-key.pem" ec2-user@52.194.227.41 
#省略
[ec2-user@ip-10-0-12-220 ~]$
```
S3のバケットを取得していきます。
```
[ec2-user@ip-10-0-12-220 ~]$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
```
上のようにEC2からS3を操作できない状態です。
そこでIAMを開きます。ロールを選び、ロールを作成します。
![スクリーンショット 2022-10-15 11.33.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/da70309f-58da-8c04-c6b0-de654cbadea8.png)

今回はEC2からS3を操作するのでEC2を選択します。

![スクリーンショット 2022-10-15 11.34.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/6fc8821f-17dd-0dc2-d6e4-59ef5b59cc60.png)

ポリシーはS3で検索してAmazonS3FullAccessを選択します。
![スクリーンショット 2022-10-15 11.36.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/88a344d9-9ad9-2e70-72dc-b05db9cabcfa.png)

ロールの詳細などを見ていきます
![スクリーンショット 2022-10-15 11.38.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/30da0122-3f09-d3e2-041b-7f0c324aaff7.png)

ポリシーがAmazonS3FullAccessになっていることを確認します。そしてロールを作成します。
![スクリーンショット 2022-10-15 11.38.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/14dd8487-6224-a1d6-86f6-71e503ad4845.png)

ロールができたことを確認したらEC2にいきます。
![スクリーンショット 2022-10-15 11.40.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/2bcfe6d0-3abe-54db-0b3c-48f4543f5284.png)

ここからSSH接続していきます。
![スクリーンショット 2022-10-15 11.41.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/5d5f305d-20c6-fb20-7023-cf7cfd11a6a7.png)

そのために今作ったaws-infra-webを今作ったロールにアタッチします。
アクションからセキュリティを選び、IAMのロールを変更します。

![スクリーンショット 2022-10-15 11.48.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/dbd77d7a-79e9-95af-36a6-044e00de637f.png)

IAMロールをaws-infra-webにします。そしてIAMロールを更新します。
![スクリーンショット 2022-10-15 11.48.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/8be502f5-3a31-25b9-b9c0-792a78e5ec1e.png)

IAMロールがaws-infra-webになりました。
![スクリーンショット 2022-10-15 11.57.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/e2f5e261-27bc-8f05-60fd-49a4e9f0bfb5.png)

アタッチができたと確認したらターミナルに戻ります。そしてS3のバケット一覧を取得します。
```
[ec2-user@ip-10-0-12-220 ~]$ aws s3 ls  
2022-08-29 09:57:04 aws-cloudtrail-logs-709517189173-62bafeba
2022-08-29 09:50:56 aws-cloudtrail-logs-709517189173-64fea852
2022-08-29 10:14:45 aws-cloudtrail-logs-709517189173-a4b38cbc
2022-08-29 09:52:56 aws-cloudtrail-logs-709517189173-dfae4e54
2022-09-13 09:24:09 aws-infra-wordpress-nori-backet
2022-09-21 07:00:16 cf-templates-cald7ahrw4fu-ap-northeast-1
2022-09-21 10:08:50 cf-templates-cald7ahrw4fu-us-east-1
```
こうして　***ロールをアタッチしたことでEC2からS3の操作ができる***ことがわかりました。
****ロールはEC2やLamdaから別のAWSサービスを操作する時***に使えます。

# IAMのベストな方法
1. ```個々にIAMユーザーの作成```をします。
2. ```ユーザーをグループに所属させ、グループに権限を割り当てます。```
3. ```権限を最小限```にします。
4. EC2インスタンスから実行し、アプリケーションにはロールを使います。
5. 定期的に```不要な認証情報を削除```します
  

# 資料
https://www.udemy.com/course/aws-and-infra/?aEightID=s00000016735001&AID=190908007224&a8=PlQKLlknX1zBDBaq.wzJncu_p1fqzQucJwA5k1yg05hnX1QlC1QHRJzHrD0GZGuAv56JgVQTvlQKjs00000016735001