その他

Windows LAPS for Entra ID:管理者パスワード複雑化や権限剥奪運用の足がかりに

こんにちは。tsuji です!

今回は、Windows 端末のローカル管理者アカウントのパスワードを管理できる Windows LAPS についての紹介します。

Entra ID (旧名:Azure AD) 向けの Windows LAPS とは

Windows LAPS は、Windows 端末のローカル管理者のパスワードを管理 (パスワードの複雑化やパスワード変更など) することできるソリューションです。従来では Microsoft LAPS というソリューションにより簡易パスワードや複数端末による同一パスワードの使い回しなどを LAPS 機能で防止し、オンプレの Active Directory 環境などにおけるローカル管理者パスワードを悪用 (ハッシュ情報取得など) した Pass-the-Hash 攻撃などのリスクを軽減していました。Windows LAPS は、Microsoft LAPS の後継のもので Windows OS の機能として組み込まれるようになり、Entra ID へのパスワードバックアップや Intune による LAPS ポリシー管理、Microsoft Entra 管理センターでの監査ログ管理などの機能が拡張されています。

具体的には、Windows LAPS では以下のことができます。

  • Windows 端末のローカル管理者に対して
    • パスワードをランダムにすることができます
    • パスワードを定期的に自動で変更できます
    • ローカル管理者のパスワードを使用したあと一定時間後に自動でパスワード変更できます
  • Microsoft Intune 管理センター
    • 各端末のローカル管理者パスワードを確認できます
    • ローカル管理者のパスワード変更をリモートでプッシュできます
  • Microsoft Entra 管理センター
    • 各端末のローカル管理者パスワードを確認できます
    • パスワード変更などのログが確認できます
  • 端末
    • 適用ポリシーやパスワード変更などのログが確認できます

利用用途とその背景

Windows LAPS は、キッティングやトラブル対応用の管理者アカウントを共通パスワードで作成してしまっているアカウント強化や管理者権限が必要なタスク実行時に一時的にローカル管理者貸出などに利用できます。

利用イメージフローの例:

今日では Intune などによって端末の設定やアプリ配布などが自動化でき、業務ユーザーがローカル管理者権限を利用するシーンは少なくなっているものの、一部の作業はローカル管理者が必要なシーンがあり、業務ユーザー自身にローカル管理者を付与してしまっているケースが多くみられます。

一方で、ローカル管理者権限が付与されていると、マルウェア感染などにおける特権昇格のリモート実行や従業員による未承認アプリの導入や、セキュリティ設定変更によって生じる脆弱性などのリスクがあるため、通常は業務ユーザーに対してもローカル管理者が付与されていない状態が望ましいです。

Windows LAPS では、ユーザーが管理者権限が必要な操作を行うときに表示されるユーザーアカウント制御 (UAC) にローカル管理者パスワードを入力することで端末のユーザー切り替えを行うことなくローカル管理者権限操作を実行できるため、業務ユーザーに対して時限的にローカル管理者権限を貸し出したいニーズにも使えるでしょう。

最小権限の原則に則れば、1 つのタスクベースごとにローカル管理者権限が利用できることがベストですが、少なくとも業務ユーザーからローカル管理者権限を剥奪して運用する足がかりとしても Windows LAPS を利用することができると思います。

前提条件

今回ご紹介する方法の Windows LAPS の端末要件とライセンス要件を記載します。

  • 端末要件
    • Entra Join または Entra Hybrid Join ※ Entra Registered は対象外
    • Windows 10 / 11、Windows Server 2019 / 2022
  • ライセンス要件
    • 無料
      • 端末にて、Intune で Windows LAPS を管理する場合は、Intune Plan 1 が必要
      • Windows LAPS は CSP、GPO でも管理可能

構成方法

以下の流れで構成していきます。場合によって不要なものはスキップしてください。

3.1. Entra ID LAPS 有効化
初回だけ必要な手順。ボタンポチって有効化するだけ。

3.2. ローカル管理者作成ポリシー構成
Intune の構成プロファイルでローカル管理者を作成。すでにローカル管理者があるからいらないっていう人はやらないくて良い構成。

3.3. ローカル管理者グループ制限ポリシー構成
Intune のアカウント保護ポリシーで管理者としたいアカウント Administrators グループに追加。ついでに既存端末でローカル管理者権限が付与されてしまっているユーザーから権限を削除したい場合も。こちらも不要の人はスキップして良い構成。

3.4. LAPS ポリシー構成
Intune のアカウント保護ポリシーでローカル管理者パスワードの複雑さや有効期間、リセット方法などを構成。

ヒント

すでに Microsoft LAPS (レガシー) を利用している環境の場合は公式ドキュメントの移行シナリオを参考にしてください。

Entra ID LAPS 有効化

Entra ID の LAPS 機能を有効化します。

Microsoft Entra 管理センターへサインインします。

② 左メニューより [デバイス] > [すべてのデバイス] > [デバイス設定] へ移動します。

③ “Microsoft Entra Local Administrator Password Solution (LAPS) の有効化” を “はい” に変更して保存します。

ローカル管理者作成ポリシー構成

ローカル管理者を作成するポリシーを作成します。ローカル管理者を作成する必要がない場合は本手順をスキップしてください。
※ 今後のロードマップではローカル管理者が自動で作成される機能の実装が予定されています

ヒント

既定で組み込まれている Administrator アカウントは通常のローカル管理者とは違い、ユーザーアカウント制御が適用されず、また最上位の特権で行使できるため極力利用しない (無効のままにする) ことをおすすめします。

Microsoft Intune 管理センターへサインインします。

② 左メニューより [デバイス] > [構成プロファイル] > [+ プロファイルの作成] > [テンプレート] > [カスタム] を選択して作成します。

③ [基本] タブでは任意のポリシー名を入力して次の画面に進みます。

④ [構成設定] タブで [追加] ボタンをクリックします。

⑤ 作成したいローカル管理者を以下のように構成します。

  • 名前:<任意>
  • 説明:<任意>
  • OMA-URI:./Device/Vendor/MSFT/Accounts/Users/<作成したいローカル管理者名>/Password
    • ローカル管理者名は利用させたいユーザーがわかりやすいものをおすすめしますが、本例は “LocalAdmin01” で設定
  • データ型:文字列
  • 値:<任意>

⑥ 各設定を進めて設定を完了します。

ヒント

グループの割り当ての構成で、LAPS ポリシーではデバイスグループが推奨されているため、ポリシー管理の観点からもデバイスグループで統一することを推奨します。

ローカル管理者グループ制限ポリシー構成

端末のローカル管理者グループ (Administrators) へ LAPS 用に作成したローカルアカウントの追加と既存端末の利用ユーザーに付与されている不要なローカル管理者権限を削除します。本実施が不要な場合はスキップして次へ進みます。

Microsoft Intune 管理センターへサインインします。

② 左メニューより [エンドポイント セキュリティ] > [アカウント保護] > [+ ポリシーの作成] > [ローカル ユーザー グループ メンバーシップ] を選択して作成します。

③ [基本] タブでは任意のポリシー名を入力して次の画面に進みます。

④ [構成設定] タブで以下のように構成します。

  • ローカル グループ:管理者
  • グループとユーザーのアクション:追加 (置換)
  • ユーザー選択の種類:手動

⑤ “選択されたユーザー/グループ” で既定で組み込まれている “Administrator” や作成するローカル管理者アカウントを指定します。

ヒント

Entra Join 端末では、既定でグローバル管理者や Microsoft Entra 参加済みデバイス ローカル管理者の SID が端末の Administrators グループに組み込まれています。今回は別途ローカル管理者を追加するため特に必要なければ構成しなくても問題ありませんが、同様の構成にしたい場合はここで対象の SID を設定します。各 SID の確認方法については後半に記載している “5. グローバル管理者や Microsoft Entra 参加済みデバイス ローカル管理者の SID 確認方法” を参照してください。 Entra Hybrid Join 端末では、既定で Domain Admins グループが端末の Administrators グループに組み込まれています。同様の構成にしたい場合は Domain Admins グループを追加します。

⑦ 各設定を進めて設定を完了します。 ※ ローカル管理者作成ポリシー構成 手順同様、グループ割り当てはデバイスグループを推奨します。

LAPS ポリシー構成

ローカル管理者に対するポリシーの構成 (パスワードの複雑性や有効期限、リセットタイミングなど) を行います。

Microsoft Intune 管理センターへサインインします。

② 左メニューより [エンドポイント セキュリティ] > [アカウント保護] > [+ ポリシーの作成] > [Local Admin password solution (Windows LAPS)] を選択して作成します。

③ [基本] タブでは任意のポリシー名を入力して次の画面に進みます。

④ [構成設定] タブで以下を参考に構成します。

  • バックアップ ディレクトリ:パスワードの保存先を設定します。Entra ID の他、オンプレの Active Directory に保存することも可能ですが、特段要件なければ Entra ID で良いでしょう。
  • パスワード有効期間日数:定期的にパスワードがリセットされるまでの期間 (既定:30 日) とパスワードのバックアップ先を指定できます。
    • Entra ID にバックアップする場合の許容値:7 〜 365 日の間で設定が可能
    • Active Directory にバックアップする場合の許容値:1 〜 365 日の間で設定が可能
補足

Active Directory にバックアップする場合は、スキーマ拡張などが必要になります。スキーマ拡張については、公式ドキュメントの手順を参考にしてください。また、スキーマ拡張した際はベストプラクティスとして Entra Connect のディレクトリ スキーマも更新した方が良いようです。なお、Active Directory の機能レベルの条件はこちらの公式ドキュメントをご参考ください。
Entra ID へバックアップする場合は、スキーマ拡張などの作業は不要です。

  • 管理者のアカウント名:LAPS ポリシーを適用するアカウントを指定できます。ここでアカウントを指定してもそのアカウントがローカルに作成されるわけではないのでご注意ください。
  • パスワードの複雑さ:生成するパスワードの複雑さを設定します。以下の種類から選択が可能です。
    • 大文字
    • 大文字 + 小文字
    • 大文字 + 小文字 + 数字
    • 大文字 + 小文字 + 数字 + 特殊文字
  • パスワードの長さ:生成するパスワードの桁数 (既定:14 文字、許容値:8 〜 64 文字) を指定します。
    ※ Entra Hybrid Join 端末の場合は、Active Directory のパスワードポリシーも適用されるため、パスワードポリシーに準拠しない構成の場合更新に失敗するので注意
  • 認証後のアクション:ローカル管理者のパスワードが使用された場合にそのパスワードをどうするかを定義します。
    • パスワードのリセット:猶予期間が過ぎると、マネージドアカウントのパスワードがリセットされます。
    • このオプションは、アプリインストールなどでユーザーアカウント制御が実行された後、パスワード変更させたい場合などに有効です。
    • パスワードをリセットし、マネージドアカウントをログオフします。猶予期間が過ぎるとマネージドアカウントのパスワードがリセットされ、当該マネージドアカウントを使用しているすべての対話型ログオン セッションが終了します。
      • このオプションは、ローカル管理者を端末からサインインアウトさせたい場合に有効です。
    • パスワードをリセットして再起動する:猶予期間が過ぎると、マネージドアカウントのパスワードがリセットされ、マネージドデバイスが直ちに再起動します。
      • このオプションは、PowerShell など管理者権限で起動したままになっているアプリを強制終了させるなどに有効です。
  • 認証後のリセット遅延:上記のアクションを実行するまでの猶予期間 (既定値:24 時間、許容値:0 〜 24 時間) を設定します。 ※ 注意:0 時間はアクションが実行されません

⑤ 各設定を進めて設定を完了します。

ヒント

グループの割り当てでは以下の公式ドキュメントの内容に従い、デバイスグループで構成することをおすすめします。

競合の可能性を減らすために、ユーザー グループではなく、デバイス グループを介して各デバイスに 1 つの LAPS ポリシーを割り当てることをお勧めします。 LAPS ポリシーはユーザー グループの割り当てをサポートしていますが、異なるユーザーがデバイスにサインインするたびに LAPS 構成を変更するサイクルが発生する可能性があります。 ポリシーを頻繁に変更すると、競合が発生したり、デバイスの要件への準拠が不足したり、デバイスのローカル管理者アカウントが現在管理されているかが混乱する可能性があります。

https://learn.microsoft.com/ja-jp/mem/intune/protect/windows-laps-policy#about-intune-laps-policy

各動作の確認

構成したポリシーの適用確認や LAPS で利用できる機能について確認していきます。

各ポリシーの動作確認

ローカル管理者作成の確認

端末の [Windows] ボタン右クリック > [コンピューターの管理] > [ローカル ユーザー とグループ] > [ユーザー] よりポリシーで作成したローカル管理者が確認できます。

補足

ポリシー適用後は Intune 上の状態はエラーとなりますが、これは想定された動作になります。登録ステータス ページ (ESP) などでエラーで中断することはありませんが、エラーが嫌な場合はスクリプトを利用し、intunewin で配布するなどの対応が必要になるかと思います。

サポートされている操作は Add です。 GET 操作はサポートされていません。 この設定は、Intuneからデプロイされたときに失敗として報告されます。

https://learn.microsoft.com/ja-jp/windows/client-management/mdm/accounts-csp

ローカル管理者グループの確認

端末の [Windows] ボタン右クリック > [コンピューターの管理] > [ローカル ユーザー とグループ] > [グループ] > [Administrators] 右クリックよりポリシーで作成した管理者グループが確認できます。

LAPS ポリシーの確認

① まず Microsoft Entra 管理センターにログインしてローカル管理者権限のパスワードがバックアップされているか確認します。パスワードの確認 (回復) は [デバイス] > [すべてのデバイス] > [ローカル管理者パスワードの回復] から確認できます。

Microsoft Intune 管理センターでは [デバイス] > [Windows] > [Windows のデバイス] > [<対象デバイス>] > [ローカル管理者パスワード] から確認できます。

② 次にローカル管理者権限が必要な操作を実施します。(今回はアプリインストールの例)

② ユーザーアカウント制御 (UAC) が表示されたら、LAPS ポリシーを適用したローカル管理者アカウントを入力します。 ※ 注意:アカウント入力時、”.\<アカウント名>” もしくは “ホスト名\<アカウント名>” で入力する必要があります

③ エラーなく実行できることができました。

④ 認証後、イベントビューアを確認するとポリシーで設定した遅延の時間に認証後のアクションが実行されるようスケジューリングされているのが分かります。

イベント 10041, LAPS
LAPS は、現在管理されているアカウントが正常に認証されたことを検出しました。構成済みの猶予期間終了後に、構成済みの認証後アクションを実行するようにバックグラウンド タスクがスケジュールされました。
アカウント名: LocalAdmin01
アカウント RID: 0xXXX
パスワード リセット タイマー期限: ‎2023‎-‎08‎-‎16T02:52:54.338073000Z
※ パスワード リセット タイマー期限の表示時間は UTC 時刻

⑤ スケジューリングされた時間になると認証アクションが開始されます。パスワードリセットの他、ログオフや OS 再起動を LAPS ポリシーで設定している場合はここで実行されます。

⑥ パスワードがリセットされると管理センターの方でも反映されていることが確認できます。

リモートパスワードリセット

Microsoft Intune 管理センターから各端末の [概要] > […] > [ローカル管理者パスワードのローテーション] からリモートでリセットできます。

ログの確認

LAPS のログでは、端末と Microsoft Entra 管理センターから確認することができます。

端末での確認

端末ではイベントビューアより [アプリケーションとサービス ログ] > [Microsoft] > [Windows] > [LAPS] > [Operational] から確認できます。パスワード実行検出・変更スケジューリングのログや定期的に適用されている LAPS ポリシーの内容などが確認できます。

Microsoft Entra 管理センターでの確認

Microsoft Entra 管理センターでは、[デバイス] > [すべてのデバイス] > [監査ログ] から確認できます。 フィルターで以下のいずれかを指定することで確認できます。

  • Recover device local administrator password:管理センターでパスワードを表示したユーザーなどの情報を確認できます。
  • Update device local administrator password:端末でパスワードが変更されたログが確認できます。

グローバル管理者や Microsoft Entra 参加済みデバイス ローカル管理者の SID 確認方法

Entra Join 端末では、Entra Join 時にグローバル管理者や Microsoft Entra 参加済みデバイス ローカル管理者ロールの SID がローカル管理者のグループである Administrators グループに自動的に追加されます。この SID が追加されることによりグローバル管理者や Microsoft Entra 参加済みデバイス ローカル管理者ロールが付与されているアカウントはローカル管理者権限を利用することができます。オンプレ Active Directory を利用していた方に向けるといわゆる AD ドメインへ参加時に Domain Admins グループが Administrators グループに追加されるイメージです。

今回は、当該 SID をローカル管理者グループ制限ポリシー構成で追加したい場合にその SID の確認方法について説明します。確認方法としては次の 3 つの方法があります。

端末の設定画面から確認する方法

端末の [Windows] ボタン右クリック > [コンピューターの管理] > [ローカル ユーザー とグループ] > [グループ] > [Administrators] 右クリックより SID が確認できます。

端末からコマンドで確認する方法

コマンドから確認する方法では端末ローカルから確認する方法と MS Graph モジュールを利用してテナントから確認する方法があります。

端末から確認する方法

PowerShell で確認する場合は以下のコマンドで確認できます。

([ADSI]"WinNT://./Administrators").psbase.Invoke('Members') | % { ([ADSI]$_).InvokeGet('AdsPath')}

テナントから確認する方法

① 管理者権限で PowerShell を起動し、はじめにモジュールインストールとテナントへの接続を行います。

Install-Module Microsoft.Graph
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"

途中認証が走り、アプリ読み書き許可の承認が求められます。

② 接続後、以下のコマンドでグローバル管理者と Microsoft Entra 参加済みデバイス ローカル管理者の ID を確認します。

Get-MgDirectoryRole | Select-Object DisplayName,ID

③ 以下のコマンドでグローバル管理者と Microsoft Entra 参加済みデバイス ローカル管理者の SID が確認できます。

function Convert-AzureAdObjectIdToSid {
    param([String] $ObjectId)

    $bytes = [Guid]::Parse($ObjectId).ToByteArray()
    $array = New-Object 'UInt32[]' 4

    [Buffer]::BlockCopy($bytes, 0, $array, 0, 16)
    $sid = "S-1-12-1-$array".Replace(' ', '-')

    return $sid
}

Convert-AzureAdObjectIdToSid -ObjectId '<グローバル管理者の ID>'
Convert-AzureAdObjectIdToSid -ObjectId '<Microsoft Entra 参加済みデバイス ローカル管理者の ID>'

Q & A

予想されそうな Q & A 集も載せてみました。

Q1. パスワードリセットのタイミングで端末がシャットダウンしていたり、ネットワークに接続されなかった場合はどうなりますか。
A1. パスワードリセットするタイミングでリセットが施行できなかった場合は、30 分置きに再試行し続けます。

Q2. ローカル管理者のパスワードは各端末ごとに異なりますか。
A2. はい、異なります。

Q3. LAPS ポリシーの “パスワード有効期間日数” は Entra ID へバックアップする場合、最短 7 日なのですがパスワードの自動変更は 7 日より短い期間にできないのでしょうか。
A3. 定期的なパスワード変更は最小 7 日となってしまいますが、認証後のアクション (パスワードリセットなど) で時間指定 (1 〜 24 時間の間) が可能です。

Q4. ユーザーアカウント制御のポップアップでローカル管理者アカウントを利用する場合、一度端末にサインインしてローカル管理者のユーザープロファイルを作成する必要がありますか。
A4. いいえ、必要ありません。ユーザープロファイルを作成しなくてもローカル管理者アカウントを利用できます。

Q5. Windows LAPS はサードパーティ製の MDM でも利用できますか。
A5. はい、利用できます。ただし、端末は Entra Join または Entra Hybrid Join で登録されている必要があります。

Q6. パスワードを確認できる Entra ID ロールは何がありますか。
A6. パスワード確認できるのは、グローバル管理者、クラウド デバイス管理者、Intune 管理者になります。メタデータ (デバイス名、最後のパスワード ローテーション、次のパスワード ローテーションなど) のみであれば、ヘルプデスク管理者、セキュリティ閲覧者、セキュリティ管理者、グローバル閲覧者でも確認が可能です。
なお、Entra ID Premium ライセンスを持っている場合は、次の RBAC アクセス許可を持つカスタム ロールを作成することも可能です。

  • パスワードを確認したい場合:  microsoft.directory/deviceLocalCredentials/password/read
  • メタデータを確認したい場合:  microsoft.directory/deviceLocalCredentials/standard/read

Q7. パスワード管理で API は利用できますか。
A7. はい、利用可能です。詳細については以下のドキュメントを参考にしてください。

まとめ

いかがでしたでしょうか。設定や構成自体はシンプルなので、よければぜひ利用してみてください!

参考ドキュメント

tsuji

前職では Windows、Linux、クラウド周りのシステムエンジニアをやっていました。
趣味は アニメ鑑賞や料理、スキー、スノボー、サッカーが好きです!