多要素認証（MFA）の有効化～テストをしてみた★

## はじめに
Hello Qiita! 初めまして。ぽやんい（[@poyan_i](https://x.com/poyan_i "Twitter")）です。
ServiceNowアドベントカレンダー2ページ目の24日へ滑り込み投稿です。
[ServiceNow Advent Calendar 2024](https://qiita.com/advent-calendar/2024/servicenow "ServiceNow Advent Calendar 2024")
~~ServiceNowデザイン靴下を返却したくない一心でネタ探してました。笑~~

この記事では、ServiceNow社のインスタンスがyokohama、またはそれ以降のリリースに
アップグレードするタイミングでMulti-Factor Authentication(以下MFA)のポリシーが強制的に有効化されます。
急に有効化されてあたふたしないために事前に見ておこう(設定してしまおう)という趣旨です。

## 背景
来るYokohanaリリースで[adaptive authentication – MFA context] ポリシーが
まだ無効化の場合は自動的にオンになりますよ。というお知らせがNow supportからありました。
アップグレード後に急にMFAが有効になるのかどうか、定かではありませんが、
ポリシーが有効になるってことはServiceNowでもMFAを有効化する準備をせねばならんのでは！？？？！！！？？という経緯です。

★詳しくはNow supportのKBをご確認ください（※Now supportのアカウントが必要です）
[Multi-Factor Authentication (MFA) Enforcement FAQ](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB1709783 "Multi-Factor Authentication (MFA) Enforcement FAQ")

★セットアップの手順（ドキュメント）
[マルチファクター認証 (MFA)](https://www.servicenow.com/docs/ja-JP/bundle/xanadu-platform-security/page/integrate/authentication/concept/mfa-config-landing.html "Multi-factor authentication (MFA)")

## どこが有効化される？
[すべて] > [マルチファクター認証] > [MFA コンテキスト]　が有効化されます。
[MFA (マルチファクター認証) コンテキスト](https://www.servicenow.com/docs/ja-JP/bundle/washingtondc-platform-security/page/integrate/authentication/concept/mfa-auth-context.html "MFA (マルチファクター認証) コンテキスト")
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/85d630af-27e2-bfdb-2208-f375154a1b79.png)

※ただここが有効化されたとて今すぐMFAが有効化されるわけではありません。
大前提としてプロパティのglide.authenticate.multifactorがTrueになっている必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/9be3306e-d851-1f2b-87d0-bb1c24a1bdf0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/a1305717-54f6-a39d-5177-a90aefe30bbe.png)

## 早速MFAを有効化するゾ
### プロパティの有効化
* 先ほど言ったMFAのプロパティを有効化します。ぽちっとな。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/041ff293-2ae8-6f6b-98a5-8524a92be7d5.png)

* システムプロパティのリストから変更する場合は
[すべて] > sys_properties.listからプロパティリストを表示して「glide.authenticate.multifactor」の値を[True]にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/5585ba20-1a59-0594-4081-1f1a511dea16.png)

これでまずMFAが有効化されました！

## MFAコンテキストのポリシーを確認
次にYokohamaリリース以降、有効化されるMFAコンテキストを見てみます。
[すべて] > [マルチファクター認証] > [MFA コンテキスト]
### 有効化する場所
表示された関連リンクに有効化のリンクがあります。ぽちっ。
これは有効化したあと、非アクティブ化にすることも可能です。（Yokohamaリリース後はどうなるんでしょうかね？）
ここでは、ユーザーに対してMFAの有効にする条件を定義する場所です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/46749610-17ad-aaa0-0dcb-bcddad849e4d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/a2295cd7-68d0-3f1c-2db0-b72131dabde9.png)


### デフォルトポリシーの種類
デフォルトポリシーは2種類あります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/e3748f92-38b5-226a-5120-7a56f5a47c96.png)
それぞれ以下のようになっています。
| デフォルトポリシー | 内容 |
|:-:|:-:|
| ステップアップ MFA ポリシー | ポリシーに合うユーザーにMFAが有効化されます。条件に合わないユーザーのMFAは無効になります。 |
| ステップダウン MFA ポリシー | 基本全ユーザーがMFAを有効になります。このポリシーに合うユーザーのみがMFAを無効になります。 |


簡単に言うと、MFAを有効化するユーザーに条件をつけるか、MFAを無効化するユーザーに条件をつけるか、ということですね。

### ポリシーに関して
ポリシーには3タブあります。
* ポリシー入力･･･どんなポリシーでユーザーをまとめるか定義します
* ポリシー条件･･･ポリシー入力に対しての条件を設定
* MFA要素ポリシー･･･MFAの要素の種類（EMail or SMS等）を設定します
#### ポリシー入力
ポリシー入力にはデフォルトでロールベースMFAとユーザーベースMFAがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/d6ae7bcb-8aac-9384-1537-1f27e6e44868.png)
それぞれ以下にようになっています。
| MFAポリシー | 内容 |
|:-:|:-:|
| Role Based MFA | ロールベースでポリシーを決定できます。このロールはマルチファクター基準から設定できます。（デフォルト設定の有効化も忘れずに！） |
| User Based MFA | ユーザーベースでポリシーを決定できます。sys_userテーブルの各ユーザーのフィールドにある[マルチファクター認証 (MFA) を有効化]がTrue/Falseで設定できます。 |

もっと大きくベースを設定する方法としてグループベースとかもできそうですね。
その場合はここで定義を作成します。
#### ポリシー条件
デフォルトポリシーがステップアップポリシー状態で設定されてあるポリシー条件を見てみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/5e372755-fb71-6c70-657d-387890dbb471.png)

デフォルトの条件を見るとユーザーベースMFAがTrueまたはロールベースMFAがTrueであるユーザーに対してMFAを有効化するということですね！
#### MFA要素ポリシー
MFAポリシーはユーザーのMFAに対してEMailとSMSで認証できるように表示をさせる設定をします。
SMSの認証に関しては別プラグイン（com.snc.authentication.sms_mfa）をインストールしてからこのSMSポリシーの設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/d30f979e-fd96-28ab-347b-f5d3478159ff.png)
※参考：[SMS を MFA 要素として設定](https://www.servicenow.com/docs/ja-JP/bundle/washingtondc-platform-security/page/integrate/authentication/task/configure-sms-as-mfa-factor.html "MFA (SMS を MFA 要素として設定")

## ロールベースの基準を有効化
ロールベースのMFAの基準を有効化します。
[すべて] > [マルチファクター認証] > [マルチファクター基準]
Role based multi-factor authenticationのレコードがありますので、フォームを開きActiveにチェックします。
デフォルトで以下のロールが登録されています。このロールを持っているユーザーはMFAが有効になります。
* user_admin
* security_admin
* admin
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/94f25045-7c12-fff4-e80d-a25b721ad6fd.png)

## Testユーザーを作成してログインテスト
ある程度設定を有効化したので、さっそく条件に合うユーザーを作成してテストログインしてみましょ～。
今回はデフォルトでステップアップポリシーを有効にしましたので、
ユーザーベースのMFAがTrueのユーザーとロールベースのMFAがTrueのやつらを作成しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/e52df2ce-fc35-4d3a-54d9-95bbb18d11e5.png)

作成したユーザーでログインを試したところMFAを求められました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/6af45c35-3909-ea0e-0c03-41cb0ab0e925.png)

## その他の設定
割と簡単にMFAは有効化できました。
プロパティリストやプロパティの設定から初期設定をバイパス（省略できる）回数やメールでの制限時間など設定を細かく指定することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/50e55f9a-2eca-77cf-20d4-72df8bb37a09.png)

## まとめ
FAQやドキュメントを見ながらなんとかPDIでMFAを設定することができました。
このように簡単に設定してテストができるのでみなさまも是非試してみてください。
認証まわり難しくて敬遠しがちですがこれを機に少しずつ理解が深まったような気がします。

靴下もGET★
![IMG_2253.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606773/30d11f6a-e690-cf4e-3a1c-29dcc915b98a.jpeg)


## 参考
[マルチファクター認証 (MFA)](https://www.servicenow.com/docs/ja-JP/bundle/xanadu-platform-security/page/integrate/authentication/concept/mfa-config-landing.html "Multi-factor authentication (MFA)")
[マルチファクター認証の詳細](https://www.servicenow.com/docs/ja-JP/bundle/washingtondc-platform-security/page/integrate/authentication/concept/explore-mfa.html "マルチファクター認証の詳細")
[MFA プラグインのアクティブ化](https://www.servicenow.com/docs/ja-JP/bundle/washingtondc-platform-security/page/integrate/authentication/task/t_ActivateMultifactorAuthenticator.html "MFA プラグインのアクティブ化")
[マルチファクター認証システムプロパティ](https://www.servicenow.com/docs/ja-JP/bundle/washingtondc-platform-security/page/integrate/authentication/reference/mfa-properties.html "マルチファクター認証システムプロパティ")
[Multi-Factor Authentication (MFA) Enforcement FAQ](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB1709783 "Multi-Factor Authentication (MFA) Enforcement FAQ")