AWSのルートユーザーにハードウェアMFAデバイスによる多要素認証を有効化する

AWSのSecurity Hubのチェック項目の一つとして、ルートユーザーにはハードウェアMFAを有効にすることが推奨されています。

https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/iam-controls.html#iam-6

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/8e7d2e44-eae9-5b61-b480-8754336f5080.png)

重要度も最も高い **非常事態（Critical）** のため、個人利用のAWSアカウントでも対応しておきたいところです。

:::note
Security Hubのチェックでは他に

[IAM.9] ルートユーザーに対して MFA を有効にする必要があります

というものもあります。こちらのチェックはハードウェアではなく仮想MFAの利用であってもOKになります。重要度はこちらも非常事態（Critical）です。
:::

Google Storeで販売されている[Titan セキュリティ キー](https://store.google.com/jp/product/titan_security_key?hl=ja)を使って、ハードウェアMFAを有効化しました。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/9bed274a-bc9b-f6b2-bfc1-3e2243e92fc1.png)


## ハードウェアMFAデバイスを登録する

1. ルートユーザーでログインし、`セキュリティ認証情報`をクリックします。

    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/f6174fad-b169-7d37-e1e2-8aae97fd06be.png)

1. `MFA デバイスの割り当て`をクリックします。
    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/2bfb7036-35a3-305c-5b39-257193080742.png)

1. デバイス名を入力し、MFA deviceとして`Security Key`を選択します。
    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/07f2644e-fe90-8ff0-c92d-7762cb53c256.png)

1. ブラウザの画面がセキュリティキーの応答を待つ画面になります。
    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/bf99f9cd-81ca-a1be-0e89-188504d91e01.png)

1. Windowsの機能でパスキーを選択するモーダルダイアログが表示されます。ウィザードに従い進めます。`セキュリティ キー`を選択します。
    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/a8a0e9e9-2158-ec2d-b9f2-baf892f2e53e.png)

1. 初めてキーを使用する際にPINの設定が必要です。
    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/3cad73ce-adbc-d33c-a3bc-d3a3edd2198e.png)

1. セキュリティ キーをUSBポートに差し込みます。
    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/f6fecf20-eecf-41d7-7872-0f2ee2b35e3c.png)

1. セキュリティ キーが点滅を始めます。（ちょっとかっこいいです！）光っている部分に指をタッチします。特に指紋を読み取っているとかではなく、タッチをします。
    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/53237139-8a5b-0e55-fd93-9e765ae9a652.png)

    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/bfb5983f-6e18-7886-5700-896095f480a7.gif)

    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/8a9fa3a9-4007-88dd-3c1a-39e372a4acf8.png)

ウィザードが終了すると、登録完了です。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/f7ccc9b6-6013-4d82-84d4-d6301f0bc3b3.png)


## ハードウェアMFAデバイスを使用してログインする

1. ルートユーザーのメールアドレスを入力、次の画面でパスワードを入力し通常通りログインします。
    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/654bc57a-d3dd-c721-77dc-c6a21a3469ff.png)

1. セキュリティ キーをUSBポートに差し込み、タッチします。
    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/ce674518-99cd-c0e4-fbea-f93d7779a032.png)

ログインできました。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/93400caa-f54b-c7a5-7517-382c3d96432f.png)

## その他

### 1つのセキュリティ キーは、1つのルートユーザー専用か？？

同じセキュリティ キーを使って、2つのAWSアカウントのそれぞれのルートユーザーに対して設定とログインができました。

### 1つのルートユーザーに対して指定できるMFAデバイスは1つ？？

[ドキュメント](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_mfa_enable_physical.html)によると、ルートユーザーとIAMユーザーに対して、最大8個のMFAデバイスの指定ができるようです。

### セキュリティ キーは他の用途にも使える？？

同一のセキュリティキーをIAM Identity CenterによるSSO時のMFAや、Googleアカウントのセキュリティキーとして設定ができました。

### スマホの場合のログインは？

ユーザー名パスワード入力のあと、デバイスの認証が求められます。USBに接続しタッチすることで認証できます。（NFCにも対応しているはずなのですが、私の環境ではうまくいきませんでした）

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/352859c6-82be-ecaa-7de7-29421c0ce6ec.png)