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

AWSを始めるにあたって最初に耳にするであろう「IAM」ですが、

・IAMユーザー
・IAMグループ
・IAMポリシー
・IAMロール

などがあり、正直文字だけでは理解が難しいと感じました。

理解を深めるためには手を動かしてみよう！と言うことで、

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

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

このシリーズは全３回に渡ってハンズオンをしていきます。

<h3>AWSのIAMについて理解を深めるためのハンズオンシリーズ</h3>
[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)

<h1>会社の構成</h1>

![IAM_会社構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/44a9cacd-4f53-f163-8754-34eca5d5a81a.png)

今回登場する架空の会社は上記のような構成になっています。

社長がトップにおり、その配下に開発部と営業部があります。

各部署にはそれぞれ部長１名と部員が複数名おり、
開発部は仕事を一部外注先に委託しています。

<h1>ルートユーザー</h1>

ルートユーザーは1番権限の強いユーザーです。

クレジットカード情報を登録して作成したアカウント＝ルートユーザー

となります。

請求情報の確認ができるなど、全ての権限を持っているので、日常業務で使用するべきものではありません。

今回は社長にこの権限を割り当てます。

<h3>ルートユーザーの作成</h3>

AWSにアクセスし、アカウントの新規作成をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/f2f512c0-048c-d370-d9f7-c8196ab0bde9.png)

<h3>セキュリティ対策の実施</h3>

アカウントを作成した後は、セキュリティの観点から各種設定をしていきます。

<h4>多要素認証（MFA)の有効可</h4>

ルートユーザーに多要素認証を設定します。

画面右上部のユーザー名が表示されている箇所をクリックし、
「マイセキュリティ資格情報」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/8f4fbc0b-ba87-1da1-1087-151f2ff534e1.png)

多要素認証（MFA）タブを開いて、MFAの有効可をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/f04a9bd5-81a1-dc75-9b6a-1b8689e9398d.png)

MFAデバイスとして、３つの選択肢が表示されます。

Google AuthenticatorなどのAuthenticatorアプリケーションを使う場合は、仮想MFAデバイスを選択します。
おそらくほとんどの方は仮想MFAデバイスをご使用かと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/59df97f2-23b6-f623-0494-a31fccd37da0.png)

余談ですが、YubiKeyなどの物理MFAデバイスは海外のテック界隈で結構人気だそうです。
6000円ぐらいするのでなかなか買う気にはなりませんが・・・

話を元に戻します。

MFAデバイスを選択した後に、以下のような画面が表示されるので、
QRコードを表示し、お手持ちのAuthenticatorアプリで読み取ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/9a5ac6e5-06fb-4a64-d961-69eb076108a5.png)

QRコードを読み取ると、Authenticatorアプリに数字が出てくるはずです。
その数字をMFAコード欄１に入力します。

一定時間が経過すると、新しい数字に更新されるので、その数字をMFAコード２に入力し、
MFAの割り当てボタンをクリックします。

以上でルートユーザーへのMFA設定は完了です。

次回ログイン時には、メールアドレス・パスワードの他にMFAコードが要求されるようになります。

<h4>アクセスキー設定の確認</h4>

アクセスキーとは、主にプログラムがAWSリソースにアクセスする際に使用するものですが、
ルートユーザー権限が必要なプログラムはありません。

万が一、アクセスキーを設定してしまっている場合は削除しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/5ee0a02e-a865-9cfc-e066-458297bfd025.png)
※上の画像のように、アクセスキーが作成されていないことを確認してください。

<h1>パスワードポリシーの設定</h1>

AWSアカウントのセキュリティを高めるためには、パスワードポリシーを設定することも有効です。
社員が簡単すぎるパスワードを設定してしまっていたために、アカウントがハックされた！
なんてことがあるかもしれません。

IAMの「アカウント設定」からパスワードポリシーの設定変更をすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/7443cc84-c5ce-7262-908a-3a892828b9fa.png)



AWSでは、下記のオプションが存在します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/5836bb5f-466a-87af-ebc8-d94c7d82b928.png)

セキュリティを高めるために全ての項目にチェックをつけると、
ユーザーから苦情を言われる可能性があります。

ユーザビリティーを考慮して設定するようにしましょう。

ちなみに、PCIDSS（日本カード情報セキュリティ協議会）の要件を満たす設定は下記になります。
とりあえずこちらを設定しておくのがおすすめです。

・パスワードの最小長：8文字
・少なくとも 1 つの大文字が必要
・少なくとも 1 つの小文字が必要
・少なくとも 1 つの数字が必要
・パスワードの有効期間（日数）：90日

<h1>部長用のユーザー作成</h1>

今回はAWS環境を管理する部署が存在しないため、
各部署の部長に管理を任せる方針となっています。

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

各部署の部長ユーザーを作成していきます。

ユーザーは1人に対して１つ付与します。
ユーザーを共用してしまうと、アクティビティの監視をする際に「誰が」何をしたのかが追跡できなくなります。

IAMの「ユーザー」から、左上の「ユーザーを追加」をクリックします。
（すでに２つユーザーが作成されていますが、テスト的に作ったものなので無視してください。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/e7195ac0-d533-08fa-8514-7ca2eb0de398.png)

各部署の部長用ユーザーを作成します。
「別のユーザーを追加」を選択すると、１回で複数のユーザー作成ができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/c1890818-bfe3-6e3a-1ea3-3c21c54837b4.png)

なお、初回作成時のパスワードは一旦自動生成にしておきます。
会社によっては、会社標準の初期パスワードなどを設定することもあるかもしれません。

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

部長はあくまでAWSリソースを管理するだけで、
プログラム開発用途でAWSを使用しないことを想定しています。

<h3>ポリシーの設定</h3>

権限設定では、「ユーザーをグループに追加」を選択します。
「既存のポリシーを直接アタッチ」を選択するより、
グループを作成してあげたほうが部長の権限を変更する際に楽になります。

「既存のポリシーを直接アタッチ」だと、権限変更の際に各ユーザーごとに設定変更をしていかないといけません。
一方で「ユーザーをグループに追加」だと、同じポリシーを適用したい
複数のユーザーを同じグループに追加しておけば、
グループポリシーの設定を変えるだけで一気に全員のポリシー変更が可能になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/3d975d91-4d38-e244-62d2-3e866ddbe29c.png)

グループ名を入力し、ポリシー名の「AdministratorAccess」を選択します。
この権限は、ルートユーザーの次に強い権限を持つポリシーになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/ae00a900-5354-1166-899d-ee323543dcff.png)

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

タグの作成では、説明欄にある通り役職の説明文を入れることとします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/e995aabc-08bb-9acb-4b83-2c9ab1fd3ec6.png)


「ユーザーの作成」をクリックしたら、作成が完了します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/b3f0c2b9-9d4b-d4f6-dce3-3f7bea585333.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316676/0efad9b6-31a7-1cba-7c39-ccc1aed74623.png)

ここで表示されるパスワードを控えておいて、各ユーザーへログイン情報を送付しましょう。

作成完了後、社長ユーザーと同様にMFA認証を設定します。（説明割愛）


記事がだいぶ長くなってきてしまったので残りは次の記事で書こうと思います・・・！


<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