こんにちは!たつみんです。
2023.10のリリースノートでOkta Deskop MFA for WindowsがGA(一般公開)されましたので早速検証してみました。
3行まとめ
- Windows端末のログイン時や画面ロック解除時にMFAを行うことができるよ
- オンラインMFA、オフラインMFAのどちらにも対応できるよ
- Windows Helloとバッティングするのでレジストリで制御したほうがいいかもしれないよ
はじめに
Okta Desktop MFA for WindowsはWindows端末のログイン時やスリープ解除時にMFAを行うことができるというこれまでのOktaがカバーしていたSaaS等の認証から飛び出して端末自体の認証に関わることができるようになりました。
端末セキュリティを向上させたいと考えている情シス担当者にとって参考になればと思います。
Okta Desktop MFA for WindowsはOkta Device Accessという新しいライセンスで提供されます。ご利用を検討する場合はOkta取り扱い代理店へお問合せください。
設定後の挙動について
まずはOkta Desktop MFA for Windowsを導入するとどのような挙動となるかからご紹介いたします。
下記ではログイン時の挙動を動画でご紹介しますが、画面ロック解除時も同様の挙動となります。
オンライン時のMFA
パスワード入力後に手元のスマートフォンに設定済みのOkta Verifyアプリに届くPush通知に応答することでMFAを実現しています。
オフライン時のMFA
パスワード入力後に手元のスマートフォンのOkta Verifyで設定済みのオフライン用OTPを確認し入力することでMFAを実現しています。
検証時の環境について
今回の検証では以下の環境で実施しました。
- Okta Identity Engine環境を利用している
- OktaとMicrosoft Entra ID(Azure AD)はフェデレーション設定済み
- 検証ユーザーのOktaアカウントはモバイル版Okta VeifyでPush通知を設定済み
- 検証Windows端末がMicrosoft Entra joinしている
- 検証Windows端末のOSはWindws 10 Pro 22H2 64bit
設定方法
- 参照ドキュメント
Oktaでアプリケーションの作成
- Okta管理画面>Applications>ApplicationsからBrowse App Catalogをクリックします。
- Desktop MFAを検索しAdd integrationをクリックします。
Desktop MFA機能が利用できるOktaテナント以外ではAdd Integrationをクリックした時にThis feature isn’t enabledと表示され追加することができません。 - General Settingsでは特に変更する箇所がないため、Nextをクリックします。
- Sign OnではApplication username formatを指定しますが、ここでは初期値であるOkta usernameのまま進め、Doneをクリックします。
- Assignmentsタブから検証ユーザーをアサインします。
- Generalタブに表示されているClient IDおよびClient secretをコピーしておきます。これらの値は次の工程であるIntune側設定で利用します。
Authentication Policyについて
作成したアプリケーションDesktop MFAには専用のAuthentication Policyが作成されます。このポリシーではオンライン時のMFAについてどのような挙動とするかを設定できます。必要に応じてルールを調整しましょう。
今回はAny 1 Factorとしました。というのも最初はAny 2 Factorとしていましたが、実際の挙動ではパスワードが必ず必要となります。パスワードはこのAuthentication PolicyのFactorとしてはカウントされないため、Any 2 Factorとしてしまうとパスワード入力後さらに2 Factorが必要となってしまいます。これはOkta Verify Push通知とFace ID(もしくはTouch ID)などの所持情報と生体情報という組み合わせを同時に利用できない場合にはログイン不可となってしまうためAny 2 Factorは適さないと判断しました。
IntuneでのOkta Verify配布
IntuneではOktaの設定で生成されたClient IDおよびClient secretを付加した状態でWindows向けにOkta Verifyアプリを配布する作業を行います。
以下では検証目的を達成するための最低限の設定内容のみに触れます。
- Okta管理画面のSettings>DownloadsからOkta Verify for Windows (.exe)のDownload General Availabilityをクリックしexeファイルをダウンロードします。
- 以下のドキュメントを参考にダウンロードしたファイルをintunewinファイルに変換します。
Microsoft Intune にアップロードする Win32 アプリを準備する | Microsoft Learn - Intune管理センターのアプリの追加からアプリの種類をWindowsアプリ(Win32)を選択します。
- ファイルの選択でアプリのパッケージ ファイルを手順2.で選択したintunewinファイルを指定します。
- アプリ情報の発行元は必須項目のため、今回はokta.comを入力し進めました。
- プログラムでは以下のように設定を行います。
インストールコマンドOktaVerifySetup-x.x.x.x-xxxxxxx.exe /q SKU=ALL ORGURL=https://<yourOktaOrgURL>.okta.com/ CLIENTID=0oa8uxxxxxxxxxxxxxx CLIENTSECRET=xxxxxxx
アンインストールコマンドOktaVerifySetup-x.x.x.x-xxxxxxx.exe /uninstall /q
- 必要条件では64bitとWindows 10 1709のみを指定しました。
- 検出規則は以下のように設定を行いました。
- 依存関係や置き換えについては今回は何も設定せずに進めました。
- 最後に割り当てにて検証Windows端末が所属しているグループを指定しました。
動作確認
割り当てを行った検証Windows端末に対してOkta Verifyアプリが配布されたら起動します。以下のようにデバイスアクセスタブを表示します。ここからオフライン時のMFAとしてワンタイムパスワードやYubikeyを登録します。
以下のようにワンタイムパスワードは検証Windowsの端末名が登録されます。
検証Windows端末を再起動し、オンライン状態とオフライン状態で動作確認をします。冒頭で紹介した動画のように動作確認が取れればOKです。
レジストリ設定
Desktop MFA for Windowsの挙動のいくつかの項目はレジストリによって制御することが可能です。
以下のドキュメントを参考に設定値を決定します。
今回は画面ロック解除時にMFAを要求するまでの時間がデフォルトでは60分と長く、動作確認を行うためにもっと短くしたいと思いました。
その他の項目もせっかくなので設定します。最終的に以下のようなPowerShellファイルをOktaDesktopMFA.ps1ファイルとして作成しIntuneから配布することにしました。
## キーの追加 New-Item 'HKLM:\\SOFTWARE\\Policies\\Okta\\Okta Device Access' -Force ## MFA登録までのログイン上限 New-ItemProperty -LiteralPath 'HKLM:\\SOFTWARE\\Policies\\Okta\\Okta Device Access' -Name 'MaxLoginsWithoutEnrolledFactors' -PropertyType 'DWord' -Value 30 ## オフラインログイン上限 New-ItemProperty -LiteralPath 'HKLM:\\SOFTWARE\\Policies\\Okta\\Okta Device Access' -Name 'MaxLoginsWithOfflineFactor' -PropertyType 'DWord' -Value 3 ## 画面ロック解除時のMFA要求までの分数 New-ItemProperty -LiteralPath 'HKLM:\\SOFTWARE\\Policies\\Okta\\Okta Device Access' -Name 'MFAGracePeriodInMinutes' -PropertyType 'DWord' -Value 5
もし、ログイン画面でのDesktop MFAのみを利用したい場合はPoweShellに以下のスクリプトを追記することでWindows HelloとPINを無効にすることができます。この場合でもFastPass利用時にWindows Helloが呼び出されてパスワードレス認証を行うことができました。
## 除外する資格情報プロバイダー New-ItemProperty -LiteralPath 'HKLM:\SOFTWARE\Policies\Okta\Okta Device Access' -Name 'CredProvidersToExclude' -PropertyType 'MultiString' -Value ('{8AF662BF-65A0-4D0A-A540-A338A999D36F}', '{D6886603-9D2F-4EB2-B667-1971041FA96B}')
Intuneでのレジストリ配布方法
以下では検証目的を達成するための最低限の設定内容のみに触れます。
- Intune管理管理センター>デバイス>スクリプトの追加からWindows10以降をクリックします。
- 名前を入力し、次へをクリックします。
- スクリプトファイルをアップロードし、下図のように設定をし、次へをクリックします。
- 割り当てで検証Windows端末が所属するグループを指定し、次へをクリックします。
- 確認画面で設定内容を確認し、追加をクリックします。
しばらく待ち検証Windows端末でレジストリエディタを開き設定値が反映されたかを確認します。
レジストリが正しく配布されたこと確認したらそれぞれの挙動を確認します。今回は画面ロックから5分経過して解除時にMFAが求められるかを端末がオンライン状態、オフライン状態の両方で確認してみました。
最後に
Desktop MFA for Windowsについて検証をしてみました。ログイン時にMFAを効かせることができる点のみならず、画面ロック解除時もMFAを求めることができる点は厳格なセキュリティ要件がある組織ではフィットするのではないでしょうか。
検証時に最初に気になったのはWindows Helloの存在です。Desktop MFAよりもWindows Helloでのログインを優先的に行おうとするので、エンドユーザーの体験としては少しチグハグな印象を受けました。しかし、レジストリで資格情報プロバイダーからWindows HelloとPINを除外すればDesktop MFAのみにすることができるのでエンドユーザーの体験として統一できます。
冒頭で記載したようにOktaが端末認証の分野に積極的に進出したことは、個人的に情シスが今後のセキュリティ構成を考える上で選択肢が広がることにつながるため大歓迎です。
それではまた別の記事でお会いしましょう!