Azure EntraユーザのMFA認証にet-optを設定してみました。

## はじめに
Microsoftより段階的なMFA設定必須の移行が計画されており、2024年10月15日からは、Azure ポータルのMFA設定が必須になるようです。（延長申請により実施時期の調整可能）

https://learn.microsoft.com/ja-jp/entra/identity/authentication/concept-mandatory-multifactor-authentication

https://jpazureid.github.io/blog/azure-active-directory/update-on-mfa-requirements-for-azure-sign-in/

Microsoft AuthenticatorによるAzure EntraユーザのMFA設定方法は、よく紹介されておりますが、今回は、Windows Server上に認証アプリを設定して利用したい用途があり、et-otp（ソフトウェアトークン）を利用して、MFA設定をしたいと思います。

## 設定手順
### et-otpの入手
以下のサイトにアクセスし
http://ecki.github.io/et-otp/
画面中段にある
github.com/ecki/et-otp/raw/gh-pages/et-otp-1.2.jar
というリンクをクリックしてjarファイルをダウンロードします。
jarファイルが実行できる環境であれば、クリックするだけでet-otpの画面が起動されます。

### Microsoft Entra ID で使用できる認証方法の設定
Microsoft Entra ID で使用できる認証方法を有効にします。
こちらは、各ユーザで実行するのではなく、テナント単位の設定となります。
1\. Azureポータルのサービス検索窓で、「認証方法」で検索し、サービス「Microsoft Entra IDの認証方法」を選択します。
![認証方法検索画面.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/f31f09bf-c929-94b6-58ba-96872e73e437.png)

2\. 認証方法画面の「ポリシー」を選択し、認証に利用するメソッドを有効にします。
今回は、et-optを有効にしたいので、「サード パーティ製のソフトウェア OATH トークン の設定」をクリックして有効化します。
![認証方法ポリシー修正.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/e5f2b2de-e96e-01c2-a0a9-43ffdd7ef91c.png)

![認証方法有効化.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/31b5eb63-778b-c1d5-41c6-81f45ba7fe02.png)

認証方法に関しては、認証に利用できる手段を有効化するだけです。Microsoft Authenticatorをはじめ、SMSや複数の認証方法を有効にすることが可能です。

### et-otpを利用したMFA設定を実施
では、本題のet-otpを利用したMFA設定を実施します。
まずは、MFA設定は各ユーザで実施しますので、設定するAzure EntraユーザでAzureポータルにログイン済みの状態で作業を開始します。

1\. https://aka.ms/mysecurityinfo
にアクセスしマイアカウント情報を表示し、「セキュリティ情報」を選択します。
※セキュリティ情報を選択時に、再度認証情報を求められる事がありますが、その際は、ログインしているユーザで再度認証を実施ください。
![マイアカウント.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/d8ca36b3-bbc7-c360-528d-c67d2c332bcf.png)

2\. セキュリティ情報設定で、サインインの方法を追加します。
![サインイン追加.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/5a69682b-4974-e47a-3485-cbc5750af1b4.png)

認証アプリを追加します。
![サインイン追加認証アプリ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/3486d3bf-1a7e-8c8c-4068-487dd497f96a.png)

認証アプリ追加時は、Microsoft Authenticatorのセットアップを促されますが、今回はet-otpを設定する為に、「別の認証アプリを使用します」をクリックし、認証アプリの設定を継続します。
![別のアプリを使用します.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/b9621c2b-6fef-8d99-7833-b1d573452080.png)

![別認証アプリ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/d63f9a44-a554-c805-62e8-43dcfdc5a45c.png)

et-otpに画像をスキャンする機能はない為、「画像をスキャンできませんか？」をクリックし秘密鍵コードを入手します。
![別認証アプリ1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/504296ce-d934-8754-85a9-c2f66f631e74.png)

秘密鍵コードの表示画面まで到達したら、次は、et-otpでの設定を実施します。

3\. et-otpの設定を実施します。
et-otpを画面を起動し、「Settings」メニューより、Azureの認証アプリ設定画面で表示した秘密鍵コードを設定します。
![et-otp設定.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/86db0e29-bf7a-c868-7e26-8e3fe2a00f8f.png)

![et-otp設定2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/5036e243-898d-522e-0023-8f312ca6be94.png)

4\. et-otpのワンタイムコードを利用して、認証アプリの登録を完了させます。
et-otpの「Calc」ボタンをクリックして、ワンタイムコードを発行し、先程のAzureの認証アプリの登録画面で、発行されたワンタイムコードを設定し、認証アプリの登録を完了させます。
![et-otp連携１.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/3576b1f8-a4cd-c845-62ef-0a926f5c9e7a.png)
et-otpで表示されているワンタイムコードを入力し「次へ」を押下します。
![et-otp連携2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/1931104e-992e-3498-ed61-4568b05cc120.png)
無事、セキュリティ情報に認証アプリが追加されています。
![et-otp連携3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672779/04d5d5a2-479f-d10b-25b1-074c78fefaa3.png)

これで、Azure EntraユーザのMFA認証にet-optを追加する作業は完了です。

但し、この設定を完了した後でも、Azure portalからのログイン時に、MFA認証は求められません。
こちらは別途、Azure portalからのログイン認証時に、MFA認証を強制する設定を実施する必要がある為です。

MFA認証を強制する方法としては、主に、条件付きアクセスポリシーを設定する方法、又は、セキュリティの規定値群を有効化にしてMFAを強制化する方法があります。こちらは、公式サイトをご参考ください。

※セキュリティの規定値群での設定は、条件付きアクセスポリシーと併用できません。

■一般的な条件付きアクセス ポリシー: Azure 管理でMFAを必須にする

https://learn.microsoft.com/ja-jp/entra/identity/conditional-access/howto-conditional-access-policy-azure-management

■セキュリティの規定値群を有効化

https://learn.microsoft.com/ja-jp/entra/fundamentals/security-defaults

設定したMFA設定を確認する方法として、一度Azure potalからサインアウト　→　再度サインインし
https://aka.ms/mysecurityinfo
にアクセス、マイアカウント情報を表示し、「セキュリティ情報」を選択すると再度認証を求められ、その時に設定したMFA認証を求められますので、MFA認証強制前の確認には、こういった確認方法もとれます。

## 最後に
普段は、AWSを利用することが多く、Azureに関しては、まだまだ分からない事が多いのですが、Microsoftからの段階的なMFA設定必須の移行の通知を機会に、AzureのMFA認証設定を追加する機会を得ました。今回の投稿が、同じような作業を実施する方の、少しでもお役に立てばいいなと思います。
Azureに関しては、認証や認可（権限周り）が、AWSと大きく異なりますので、差異を理解しながら、今後も理解を深めていきたいです。