AWS IAM Identity Center で多要素認証を設定してみた

# 背景・目的
[AWS SSOを試してみた](https://qiita.com/zumax/items/70a3756665c00fe95375)では、以前 AWS SSO（現在 Indentity Center）を整理しました。
今回は、AWS IAM Identity Centerの多要素認証について設定してみます。

# まとめ
下記に特徴をまとめます

| 特徴 | 説明 |
|:--|:--|
|IAM Identity Center で<BR>使用可能な MFA タイプ|・FIDO2 認証機能<BR>・仮想認証アプリ<BR>・RADIUS MFA|
|FODO2 認証の特徴|・FIDO2は、CTAP2とWebAuthnを含む標準<BR>・パブリックキー暗号に基づく<BR>・認証情報が作成されたWebサイト固有のもの<BR>・フィッシング詐欺に対して強固|
|FIDO2の一般的なタイプ|・組み込みの認証機能<BR>・セキュリティキー<BR>・パスワードマネージャー、パスキープロバイダー、その他の FIDO 認証機能|
|仮想認証アプリの特徴|・認証アプリは、OTPベースのサードパーティ認証機能を備えている<BR>・モバイルデバイスやタブレットにインストールされた認証アプリを許可されたMFAデバイスとして使用できる<BR>・TOTPアルゴリズムのRFC6238に準拠|
|RADIUS MFAの特徴|・RADIUSとは、リモート認証ダイヤルインユーザサービスの略<BR>・業界標準のクライアント/サーバプロトコル<BR>・ユーザをNWサービスに接続するための認証・認可・アカウント管理が行える|


# 概要
[Identity Center ユーザー用の多要素認証](https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/enable-mfa.html)を下に整理します。

> 多要素認証 (MFA) は、デフォルトの認証メカニズムであるユーザー名とパスワードに加えて、さらに保護レイヤーを追加するシンプルで安全な方法です。

- ユーザ名+パスワードに加えて、保護レイヤーを追加する

>管理者が MFA を有効にした場合、ユーザーは次の 2 つの要素で AWS アクセスポータルにサインインする必要があります。

> - ユーザー名とパスワード。これは最初の要素であり、ユーザーが知っていることです。
> - コード、セキュリティキー、または生体認証のいずれか。これはもう 1 つの要素で、ユーザーが所有している (所有) または存在している (生体認証) ものです。第 2 の要素は、モバイルデバイスから生成された認証コード、コンピューターに接続されたセキュリティキー、またはユーザーの生体認証のスキャンのいずれかです。

- ユーザ所有か生体認証
- モバイルデバイスから生成された認証コード、セキュリティキー、ユーザ生体認証のスキャン

## IAM Identity Center で使用可能なMFA タイプ
> 多要素認証 (MFA) は、ユーザーのセキュリティを強化するためのシンプルで効果的なメカニズムです。ユーザーの最初の要素であるパスワードは、ユーザーが記憶する秘密であり、ナレッジファクターとも呼ばれます。その他の要素としては、所有要素 (セキュリティキーなど、所有しているもの) や継承要素(生体認証のスキャンなど、ユーザーが持っているもの) があります。MFA を設定して、アカウントのセキュリティをさらに強化することを強くお勧めします。

- ナレッジファクター
    - ID&パスワード
- 所有要素
    - セキュリティキー
- 継承要素
    - 生体認証

> IAM Identity Center MFA は、以下のデバイスタイプをサポートします。すべての MFA タイプは、ブラウザベースのコンソールを通じたアクセスと、AWS CLI IAM Identity Center による v2 の使用の両方でサポートされています。

> - FIDO2 認証機能 は、組み込みの認証機能とセキュリティキーを含みます。
> - 仮想認証アプリ
> - RADIUS MFA 独自の実装は AWS Managed Microsoft AD を介して接続されます。

IAM Identity Centerでは、下記のデバイスをサポートする
- FIDO2
- 仮想認証アプリ
- RADIUS MFA

### FIDO2認証機能
> FIDO2 は CTAP2 と WebAuthn を含む標準であり、パブリックキー暗号に基づいています。FIDO 認証情報は、認証情報が作成された Web サイト (AWS など) 固有のものであるため、フィッシング詐欺に対して強固です。

- FIDO2は、CTAP2とWebAuthnを含む標準
- パブリックキー暗号に基づく
- 認証情報が作成されたWebサイト固有のもの
- フィッシング詐欺に対して強固

#### 組み込み認証機能
> MacBook の TouchID や、Windows Hello 対応のカメラなどの多数のコンピューターや携帯電話は組み込みの認証アプリシステムを装備しています。デバイスに FIDO 互換の組み込みの認証アプリがある場合は、指紋、顔、またはデバイスの PIN を 2 つ目の要素として使用できます。

- MacのTouchID、Windows Hello対応のカメラ等
- デバイスにFIDO互換の組み込み認証アプリがある場合、指紋、顔、デバイスのPINを2つ目の要素として使用できる


#### セキュリティキー
> セキュリティキーは FIDO 互換の外部ハードウェア認証機能です。ご購入の上 USB、BLE、または NFC 経由でデバイスに接続できます。MFA を要求されたら、キーのセンサーでジェスチャーを完了するだけです。セキュリティキーの例としては YubiKeys や Feitian キーがあり、最も一般的なセキュリティキーはデバイス向けの FIDO 認証情報を作成します。互換性のあるFIDO 認定のセキュリティキーの全リストについては、「FIDO 認定製品」 をご覧ください。

- FIDO互換のHW認証機能を指す
- USB、NFC経由でデバイスに接続できる
- キーのセンサーでジェスチャーを完了する
- セキュリティキーの例
    - YubiKeys
    - Feitianキー


#### パスワードマネージャー、パスキープロバイダー、その他の FIDO 認証機能
> 複数のサードパーティプロバイダーが、パスワードマネージャー、FIDO モードのスマートカード、その他のフォームの要素の機能として、モバイルアプリケーションの FIDO 認証をサポートしています。これらの FIDO 互換デバイスは IAM Identity Center で動作しますが、このオプションを MFA で有効にする前に FIDO 認証機能をご自身でテストすることをお勧めします。

- サードパーティプロバイダーがモバイルアプリのFIDO認証をサポートしている


### 仮想認証アプリ
> 認証アプリは、基本的にワンタイムパスワード (OTP) ベースのサードパーティー認証機能を備えています。モバイルデバイスやタブレットにインストールされた認証アプリケーションを、許可された MFA デバイスとして使用することができます。サードパーティー認証アプリケーションは、6 桁の認証コードを生成できる標準ベースのタイムベースドワンタイムパスワード (TOTP) アルゴリズムである RFC 6238 に準拠している必要があります。


- 認証アプリは、OTPベースのサードパーティ認証機能を備えている
- モバイルデバイスやタブレットにインストールされた認証アプリを許可されたMFAデバイスとして使用できる
- サードパーティ認証アプリは、6桁の認証コードを生成できる標準ベースのタイムベースドワンタイムパスワード（TOTP）アルゴリズムのRFC6238に準拠している必要がある

### RADIUS MFA
> リモート認証ダイヤルインユーザー サービス (RADIUS) は、業界標準のクライアント/サーバープロトコルであり、ユーザーをネットワークサービスに接続するための認証、認可、アカウント管理を行うことができます。AWS Directory Service には、MFA ソリューションを実装した RADIUS サーバーに接続する RADIUS クライアントが付属しています。詳細については、「AWS Managed Microsoft AD の多要素認証を有効にする」 を参照してください。

- RADIUSとは、リモート認証ダイヤルインユーザサービスの略
- 業界標準のクライアント/サーバプロトコル
- ユーザをNWサービスに接続するための認証・認可・アカウント管理が行える
- AWS　Directory Serviceには、MFAソリューションを実装したRADIUSサーバに接続するRADIUSクライアントが付属している

> ユーザーポータルへのサインインには、IAM Identity Center で RADIUS MFA または MFA のいずれかを使用できますが、両方を使用することはできません。IAM Identity Center での MFA は、ポータルへのアクセスに AWS ネイティブの二要素認証が必要な場合に、RADIUS MFA の代わりに使用されます。

- ユーザポータルへのサインインには、IAM Indentiy Centerで下記のいずれかを使用できるが、両方はできない
    - MFA
    - RADIUS MFA

> IAM Identity Center で MFA を有効にすると、ユーザーは AWS アクセスポータルにサインインするために MFA デバイスが必要になります。これまで RADIUS MFA を使用していた場合、IAM Identity Center で MFA を有効にすると、AWS アクセスポータルにサインインしたユーザーの RADIUS MFA が効果的に上書きされます。ただし、RADIUS MFA は、Amazon WorkDocs など、AWS Directory Service と連携する他のすべてのアプリケーションにサインインする際に、ユーザーに課題を与え続けます。
> IAM Identity Center コンソールで MFA が 無効 になっていて、AWS Directory Service で RADIUS MFA を設定している場合、RADIUS MFA が AWS アクセスポータルのサインインを管理します。これは、MFA が無効になっている場合、IAM Identity Center は RADIUS MFA 設定にフォールバックすることを意味します。


- MFAを有効にすると、ユーザはサインインのためにMFAデバイスが必要
- RADIUS MFAを使用していた場合に、MFAを有効化すると、RADIUS MFAが上書きされる

# 実践
[MFA を設定](https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/mfa-configure.html)を下に試します

## IAM Identity Center で MFA を有効にする前に考慮すること
> MFA を有効化する前に、次の情報を考慮してください。
> - ユーザーには、有効なすべての MFA タイプについて、複数のバックアップ認証の登録を推奨します。これにより、MFA デバイスが壊れたり、置き忘れたりした場合に、ユーザーがアクセスできなくなることを防げます。
> - ユーザーが E メールにアクセスするために AWS アクセスポータルにサインインする必要がある場合は、[E メールで送信されたワンタイムパスワードの提供を要求する]のオプションを選択しないでください。例えば、ユーザーは AWS アクセスポータルを Microsoft 365 使用して E メールを読む可能性があります。この場合、ユーザーは認証コードを取得することができず、AWS アクセスポータルにサインインすることができなくなります。詳細については、「MFA デバイス強制の設定」を参照してください。
> - AWS Directory Service で設定した RADIUS MFA を既に使用している場合は、IAM Identity Center 内で MFA を有効化する必要はありません。IAM Identity Center の MFA は、IAM Identity Center Microsoft Active Directory ユーザーにとって、RADIUS MFA の代替となるものです。詳細については、「RADIUS MFA」を参照してください。
> - ID ソースが IAM Identity Center の ID ストア、AWS Managed Microsoft AD または AD Connector で設定されている場合、IAM Identity Center の MFA 機能を使用できます。IAM Identity Center の MFA は、現在、外部 ID プロバイダー による使用はサポートされていません。


- MFAデバイスの損傷、置き忘れたりすることに備えて、複数のバックアップ認証の登録を推奨
- ユーザーが E メールにアクセスするために AWS アクセスポータルにサインインする必要がある場合は、「E メールで送信されたワンタイムパスワードの提供を要求する」のオプションを選択しないこと。認証コードを取得することができなくなる
- AWS Directory Service で設定した RADIUS MFA を既に使用している場合は、IAM Identity Center 内で MFA を有効化する必要はない
-  ID ソースが IAM Identity Center の ID ストア、AWS Managed Microsoft AD または AD Connector で設定されている場合、IAM Identity Center の MFA 機能を使用可能

::: note info

:::

## IAM Identity Center で MFA を有効化する
1. AWSにサインインします
1. IAM Identity Centerに移動します
1. ナビゲーションペインの「設定」をクリックします
1. 「認証」タブをクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/c4eec4eb-ac23-9ec1-e83a-e9ba34a8e016.png)

1. 多要素認証セクションで「設定」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/bbc67c08-f0fb-a3eb-dfaf-e7a12d537ca1.png)

1. 下記の設定を行い、「変更を保存」をクリックします
    - MFAのプロンプトをユーザに表示
    - ユーザはこれらのMFAタイプで認証できます
    - 登録されたMFAデバイスをユーザが持っていない場合
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/d7599ff3-bc5b-1da4-e3c9-33a5e95331c4.png)

1. 設定されました
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/56427997-b345-ff7a-99a0-38dbc48a2921.png)
    

## MFAデバイスの登録〜サインイン
1. SSOポータルにアクセスします
1. ユーザとパスワードを入力します
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/7969386f-31c8-ed1f-9fab-f61c96d9a3fa.png" width=300 />

1. MFAデバイスの登録が表示されますので、選択し、「Next」をクリックします
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/1396a9b3-cafd-d762-9ac4-d9e217eb5ec6.png" width=300 />

1. (認証アプリの場合）下記のステップで設定し、「MFAを割り当て」をクリックします
    1. アプリのインストール
    1. QRコードのスキャン
    1. 6桁のコードを入力
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/fafd6ce5-e242-10aa-16d1-b91df8fc76f3.png" width=400 />

1. 認証アプリが登録されたので、「完了」をクリックします
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/b058bead-4466-4487-86fc-8362f1a25d26.png" width=300 />

1. 再度サインイン画面が表示されるので、IDとパスワードを入力します
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/e2f7246a-b6bc-6d35-f15f-335021d113fc.png" width=300 />

1. MFAコードが求められました。入力しサインインをクリックします
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/0a0e4c85-edb2-195e-43ff-3fda502a08b5.png" width=300 />

1. サインインできました（ポータルが表示されました）
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/be97a13c-f801-1135-79ba-e3bd73437267.png" width=500 />

## MFAデバイス登録の確認
1. Identity Centerの管理ができるユーザでサインインします
1. IAM Identity Centerに移動します
1. ナビゲーションペインの「ユーザ」をクリックします
1. 先ほど、MFA登録したユーザをクリックします
1. 「MFAデバイス」タブをクリックします。MFAデバイスが登録されていました。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/d85806b1-bcee-ebe6-9500-7595e554fb52.png)


# 考察
今回、AWS IAM Identity CenterでMFAを設定しました。簡単に設定することができました。
また、今まで多要素認証について雰囲気で理解していました。今後は、機会があったらFIDO２など詳細を確認してみようと思いました。

# 参考
https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/enable-mfa.html

https://qiita.com/zumax/items/70a3756665c00fe95375

https://www.w3.org/TR/webauthn-2/

https://fidoalliance.org/fido2/