IAMユーザーにMFA登録しましょう！！【Microsoft Authenticator、WinAuth】

# はじめに
こんにちは、itayaです。
この度、ANGEL Calendarの企画に参加しております！
記事一覧は下記のOrganizationアカウントの一覧をチェックしてみてください！

https://qiita.com/organizations/2024-angel-dojo

https://qiita.com/har1101/items/637ba82948aa7670fb9f

# 導入
皆様、IAMユーザーにMFAは登録されているでしょうか？

(〇)セキュリティ的にOKな例
![MFA有効化_修正版.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/ef687e92-0268-7b06-afcd-cf17c2e756be.png)

(×)セキュリティ的に見直すべき例
![MFA無効化_修正版.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/fa7ab995-1742-c52a-d60a-4d01d5dfd4aa.png)

もし、MFAが有効化になっていない場合は見直しましょう！
以下にMicrosoft Authenticator又はWinAuthを用いてMFAを有効化するやり方を記載していきます。


### IAMとは
AWS IAM(AWS Identity and Access Management)のことです。主に、AWSリソースへのアクセスを制御できるサービスです。IAMは、AWSアカウントの認証と認可を制御するために重要であることを覚えておきましょう。(IAMを適当に設定すると、権限制御の考え的に良くないです、、)

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/introduction.html

### MFAとは
MFA（Multi-Factor Authentication）のことです。
認証の際に、安全性を高めるために2つ以上の要素を組み合わせる手法です。
MFAのメリットとして、
・なりすまし、パスワード漏洩リスクを軽減があげられます。
※多要素認証により、フィッシング等によるパスワードの漏洩、なりすましのリスクを軽減できます。

https://aws.amazon.com/jp/what-is/mfa/

# MFA登録のやり方(Microsoft Authenticatorを用いる場合)

### Microsoft Authenticator
iPhoneのApp Store等からインストールできる以下のアプリを使用してMFA登録を行います。

![アプリ_修正版.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/263cc361-c7ce-54a2-2f4f-9c2dab736d50.png)


# MFA登録
IAMの「ユーザ」から、自分のユーザ名を選択＞「セキュリティ認証情報」タブを表示
「MFAデバイスの割り当て」を押下する

![MFAデバイス登録_修正.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/eb697995-29f6-2480-e72a-cdcc3556f1bd.png)


MFA device nameのデバイス名に適当な名前を入力
MFA deviceは認証アプリケーションを選択し、「次へ」ボタンを選択する。

![MFAデバイス_修正.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/8d646fad-6ab9-3167-9e3d-adc3db894104.png)

以下のような画面になりましたらMicrosoft Authenticatorを起動してください。
ここからスマホでの作業になります。
![QRコード_修正後1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/3583673f-ca52-c93c-b1d9-0218ae97419f.png)

アプリ画面右上の "+" ボタンをおす
![ホーム画面_修正版.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/7eced259-35fd-db99-d661-47d120f98a13.png)

「その他 (Google、Facebook など)」をえらぶ
![アカウントを追加_修正版.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/e41f3cd8-f7c3-99d4-3c2a-5089d18910b7.png)

AWSコンソールに表示されている、QRコードを読み込む
画面に表示されるワンタイムパスワードコードをAWS側の画面に入力する。
![QRコード_修正後2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/9ec321f3-f7a6-4130-dd90-79c8920221d3.png)

こちらで登録完了です！！！

# MFA登録のやり方(WinAuthを用いる場合)

### WinAuth

WinAuth.exeを起動し「インストール」する
「Add」ボタンを押し、「Authenticator」を選択
![winAuth_修正後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/dd47c767-be22-1827-3d49-605f8609f098.png)

シークレットコードを入力し、「Verify Authenticator」ボタンを押す
※以下にシークレットコード表示の仕方を載せます。
![winsuth_ホーム画面_修正版.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/305f6367-7fe7-31a9-a00f-1e7e92682bb0.png)

「シークレットキーを表示」ボタンを押すと、シークレットコードが表示される
![winAuth_シークレットキー_修正後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/93a0bbc6-a98c-485f-e2b9-b2904bbc3a97.png)

WinAuth上にMFAコードが表示されるので、それをAWS側の画面に入力する　
![winsuth_ホーム画面_MFAコード_修正版.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/d09ec17a-08c0-7afd-dc7d-0f03accf4a14.png)

こちらで登録完了です！！

# IAMの権限について(PowerUserAccess、IAMFullAccess、AdministratorAccess)

IAMの許可ポリシーによって自分自身でMFA登録ができるのか？が決まります。
具体的に、許可ポリシーがPowerUserAccess、IAMFullAccess、AdministratorAccessの場合どうなるか？説明させていただきます。



PowerUserAccessの場合「自分自身でMFA登録ができないため、AdministratorAccess権限の方が画面共有をしてPowerUserAccessの方のMFA登録を行う」
IAMFullAccessの場合「自分自身でMFA登録ができるため、自分のマネジメントコンソール画面からMFA登録を行う」
AdministratorAccessの場合「自分自身でMFA登録ができるため、自分のマネジメントコンソール画面からMFA登録を行う」 


以下にポリシーで定義されている許可(JSON形式)について載せます。

PowerUserAccess権限
PowerUserAccessはIAMの権限自体がフルで入っていないため個々でMFAができないんだと思います。
![PowerUserAccess_修正.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/2983d284-0aa8-9e57-d4f7-02df8a1045f1.png)

IAMFullAccess権限
IAMFullAcceessのポリシーの詳細を見ると、IAMの権限が全部あるため、MFA作成できそうです。
![IAMFullAcceess_修正版.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/56d1d0c7-2138-712b-153a-4c79cdaa0a9c.png)

AdministratorAccess権限
AdministratorAccessのポリシーの詳細を見ると、「全てのAWSアクションを全てのリソースに対して許可する」ことを意味し、事実上フルアクセスを提供しており、自分自身又は他のユーザのMFA登録もできそうです。

![AdministratorAccess_修正版.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3871422/71def802-9e69-47a6-c30a-e4be8f93cbd4.png)


PowerUserAccess権限の方のみ、自分自身でMFA登録できないですね。。
ここは注意が必要です！
また、AdministratorAccess権限の方は、他のPowerUserAccess権限の方のMFA登録ができるので、MFA登録の流れの理解は必須となります。


1. PowerUserAccess
概要: 多くのAWSリソースを管理・操作できる強力な権限を持っていますが、IAM関連の操作には制限がある。
具体的な権限:
IAMユーザーやグループの作成、削除、ポリシーのアタッチといったIAM管理操作ができない。
それ以外のAWSリソース（EC2、S3、RDSなど）に対してはフルアクセス権限を持っている。

2. IAMFullAccess
概要: IAMに関する操作ができる権限。
具体的な権限:
IAMユーザー、グループ、ロール、ポリシーの作成・管理・削除が可能。
他のAWSリソースに対する権限は含まれていない。
 
3. AdministratorAccess
概要: AWSアカウント内の全てのリソースに対するフルアクセス権限を持つ最も強力な権限。
具体的な権限:
すべてのAWSリソース（IAMを含む）に対する完全なアクセス権限を持ち、制限なく操作可能。


## 簡単なまとめ

### MFA
Microsoft AuthenticatorがインストールできるならMicrosoft Authenticatorを活用してMFA登録しましょう！！
Microsoft Authenticatorが難しいなら、WinAuthでMFA登録しましょう！！

### IAMの権限
PowerUserAccess: IAM以外のリソースにフルアクセス。IAM管理は不可。自分自身でMFA登録するのは無理！！
IAMFullAccess: IAM関連のフルアクセス。他のAWSリソースにはアクセス不可。
AdministratorAccess: すべてのリソースにフルアクセス。最も強力な権限。

# 参考

https://qiita.com/frozencatpisces/items/67f00817b260f8c340b7#:~:text=%E5%A4%9A%E8%A6%81%E7%B4%A0%E8%AA%8D%E8%A8%BC%20(%20Mu

https://it-infomation.com/winauth/

https://docs.aws.amazon.com/ja_jp/aws-managed-policy/latest/reference/PowerUserAccess.html

https://docs.aws.amazon.com/ja_jp/aws-managed-policy/latest/reference/IAMFullAccess.html

https://docs.aws.amazon.com/ja_jp/aws-managed-policy/latest/reference/AdministratorAccess.html