【AWS】IAMについて理解を深めるためのハンズオン②

前回の記事の続きです。

[AWSのIAMについて理解を深めるためのハンズオン①](
https://qiita.com/ymochi_camera/items/bdaec3d0f3cfa60e7b0d)

クラスメソッドさんの以下のブログに沿って、
架空の会社でAWSを使用することを想定し、
IAMのベストプラクティスを引き続き実装していきます。

[AWS を安全に使うために（IAM のベストプラクティス）](https://dev.classmethod.jp/articles/sugano-042-iam-best-practices/)

前回は各部署の部長を作成するところまで出来たので、
今回は各部署の部員の設定をしてきます。

<h1>営業部社員のユーザー作成</h1>

<h3>ユーザー作成</h3>

今までと同様に、IAMのユーザーから「ユーザーを追加」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/cbf05272-657e-bc2c-55aa-750826c29d66.png)

アクセスの権限は「AWSマネジメントコンソールへのアクセス」のみを選択し、
「プログラムによるアクセス」は選択しないでおきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/8a429df4-1223-e3da-f6d3-81dc96d7e5f6.png)


<h3>権限の定義</h3>

営業部社員のユーザーを作成するにあたって、何の権限が必要かを考える必要があります。

今回のシナリオでは、以下の権限を設定します。

・EC2 インスタンスを立ち上げたり、設定を変更するといった作業はしない
・何かあった時に AWS リソースの状況が見たい
・プログラムを使わないのでアクセスキーは不要

AWSリソースが確認できれば良いということがわかりました。

この条件をカバーできるポリシー「ReadOnlyPolicy」がデフォルトで存在するので、
そちらを適用することとします。

なお、ポリシーは営業部社員用のIAMグループを作成して適用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/899f0e0f-d8e2-ae6a-9bec-a48a363bf5d9.png)
※「ReadOnlyAccess」で検索すると、1番下の方に出てきます。

<h3>タグの作成</h3>

部長の時と同様に、役職のタグを付与します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/54713d79-45a1-3b0b-11e6-2cd5ec4ea636.png)

「ユーザーの作成」をクリックし、作成完了になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/f049727a-278f-ac40-5a33-7d6817c54b48.png)


作成されたユーザーのパスワード情報を控えて、各ユーザーへ送付しましょう。

ちなみに、適用されたポリシーは「▲」ボタンを押すと確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/b3c45772-8bd9-19d6-0597-5ea200260896.png)

複数のユーザーに同様のポリシーが適用されているのがわかります。

ユーザー作成完了後、MFA認証を設定しましょう。（説明割愛）

<h1>開発部社員のユーザー作成</h1>

<h3>ユーザー作成</h3>

必要な人数分のユーザーを追加していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/54b71d7c-0996-30fd-aa12-b60ecd60446c.png)

<h3>権限の定義</h3>

営業部員と同様に、グループを作成してユーザー作成をします。
また、今回のシナリオでは開発部員には以下の権限を付与することとします。

・各種 AWS リソースの設定変更作業がある
・IAM の管理権限は与えない（必要な場合は部長に依頼）
・自分のPCから aws-cli を使って AWS リソースを管理する
・会社からしかアクセスできないようにする

この条件をカバーできるポリシー「PwerUserAccess」がデフォルトで存在するので、
そちらを適用することとします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/90d53897-ae78-bde4-0870-8ed617eb2061.png)

<h3>タグの作成</h3>

これまでと同様に、役職のタグを付与します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/01346268-607e-4f2f-9d04-9a857d0be63d.png)


「ユーザーの作成」をクリックし、作成完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/b104db69-a51b-f00a-1ed0-c78e9b846a5a.png)

ユーザー作成完了後、MFA認証（以下省略）

<h3>アクセスキーの発行</h3>

今回の権限要件である「自分のPCから aws-cli を使って AWS リソースを管理する」という条件を満たすために、アクセスキーを発行する必要があります。

このアクセスキーはローカルPC上に保存するため、同じものを使い続けるのはセキュリティ的によくありません。
そのため、定期的に更新することが推奨されます。

IAMの「ユーザー」から、アクセスキーを発行するユーザーを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/96fe1f1c-bfb8-ab9d-90bb-57e467dffb1b.png)

認証情報タブを選択し、「アクセスキーの作成」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/2c3336aa-aad9-227b-22b6-c82d44ecb75b.png)

作成が完了すると、以下のポップアップ画面が出てきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/87435a84-9460-0f5b-72f8-877de2c28812.png)

アクセスキーの表示は、このポップアップ画面が最初で最後です。
必ずどこかに情報を控えておきましょう。
CSVファイルをダウンロードして、安全な場所に保管しておくのが良いでしょう。

万が一アクセスキーを忘れてしまった場合は、再発行する必要があります。

<h3>オリジナルポリシーの作成</h3>

開発部員に割り当てる権限の要件の中に、「会社からしかアクセスできないようにする」というものがありました。

こちらを実装するには、オリジナルのポリシーを作成し、JSONファイルの中にConditionエレメントの追加をする必要があります。

<h3>ポリシー作成</h3>

IAMのポリシーから、「ポリシーの作成」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/5f0a472c-3d3d-edeb-a287-4fed83c9f3ba.png)

JSONを選択し、社内のIPアドレス以外からのAWSアクセスを禁止するポリシーを記述します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/ed7e067b-3d6a-2d04-a255-90ace462ea12.png)


ポリシーに適当な名前と説明をつけて、作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/35968565-dbf4-4436-f760-da986aa88170.png)


<h3>グループへポリシーをアタッチ</h3>

ポリシーの作成が完了したら、IAMから「グループ」をクリックし、
適用するグループを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/2242c549-e44a-0bc2-2acd-be8adb333c91.png)

ポリシーのアタッチをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/6aaa0079-e318-56af-61a9-1b0986f621cc.png)

検索欄に先ほど作成したポリシー名を入力し、ポリシーを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/136ba302-7705-5c30-ff35-a890083e574d.png)


ポリシーが正常にアタッチされたことを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/e40059ea-48ed-49be-2256-5b335b82fe3d.png)

以上で追加のポリシー設定は完了です。

各部署の設定が完了したので、次回は外注先の設定をしていきます。

次回

[AWSのIAMについて理解を深めるためのハンズオン②](
https://qiita.com/ymochi_camera/items/e8fc4d58998a6ba8d28e)


<h1>参考</h1>

[AWS を安全に使うために（IAM のベストプラクティス）](https://dev.classmethod.jp/articles/sugano-042-iam-best-practices/)

[【AWS】IAM ユーザーに IP 制限](https://hacknote.jp/archives/43145/)

<h1>AWSのIAMについて理解を深めるためのハンズオンシリーズ</h1>
[AWSのIAMについて理解を深めるためのハンズオン①](
https://qiita.com/ymochi_camera/items/bdaec3d0f3cfa60e7b0d)

[AWSのIAMについて理解を深めるためのハンズオン②](
https://qiita.com/ymochi_camera/items/e8fc4d58998a6ba8d28e)

[AWSのIAMについて理解を深めるためのハンズオン③](
https://qiita.com/ymochi_camera/items/aac607413d54f50f1c25)

<h2></h2>

この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com