コード整合性に対する仮想化ベースの保護を有効にする

適用対象

  • Windows 10
  • Windows 11

このトピックでは、ハイパーバイザーで保護されているコード整合性 (HVCI) を Windows 10 および Windows 11 で有効にするさまざまな方法について説明します。 デバイス ドライバーなど、一部のアプリケーションは HVCI と互換性がない可能性があります。 この非互換性により、デバイスやソフトウェアが誤動作する可能性があり、まれにブルー スクリーンが表示される可能性があります。 このような問題は、HVCI を有効にした後、または有効化プロセス自体の実行中に発生する可能性があります。 これらの問題が発生した場合は、「修復手順 のトラブルシューティング」を参照してください。

注意

HVCI は モード ベース実行制御を使用するため、Intel Kaby Lake または AMD Zen 2 以上の CPU でより適切に動作します。 MBEC なしのプロセッサは、制限付きユーザ モードと呼ばれるこの機能のエミュレーションに依存します。これは、パフォーマンスに大きな影響を与えます。

HVCI 機能

  • HVCI は、制御フロー ガード (CFG) ビットマップの変更を保護します。
  • また、HVCI では、Credential Guard などその他の Truslets に有効な証明書があることを確認します。
  • 最新のデバイス ドライバーには、EV (拡張検証) 証明書があり、HVCI をサポートしている必要があります。

Windows 10 および Windows 11 で HVCI を有効にする方法

エンタープライズ全体でサポート ハードウェアを含む Windows 10 および Windows 11 デバイスで HVCI を有効にするには、次のいずれかのオプションを使用します。

Windows セキュリティ アプリ

HVCI は、Windows セキュリティ アプリでメモリ整合性というラベルで示され [設定] > [更新とセキュリティ] > [Windows セキュリティ] > [デバイス セキュリティ] > [コア分離の詳細] > [メモリ整合性] でアクセスできます。 詳細については、「KB4096339」を参照してください。

Intune を使用して HVCI を有効にする

Intune で有効にするには、AppLocker CSP のコード整合性ノードを使用する必要があります。

グループ ポリシーを使用して HVCI を有効にする

  1. グループ ポリシー エディター (gpedit.msc) を使用して、既存の GPO を編集するか、新しい GPO を作成します。

  2. [コンピューターの構成] > [管理用テンプレート] > [システム] > [Device Guard] の順に移動します。

  3. 仮想化ベースのセキュリティを有効にする] をダブルクリックします。

  4. [有効] をクリックし、[コードの整合性の仮想化ベースの保護] で [有効] を選択して、HVCI をリモートで無効にできないか、[UEFI ロックなしで有効] を選択します。

    グループ ポリシーを使用して HVCI を有効にする。

  5. [OK] をクリックしてエディターを閉じます。

ドメインに参加済みのコンピューターに新しいポリシーを適用するには、再起動するか、管理者特権で gpupdate /force を実行します。

レジストリ キーを使ってコード整合性の仮想化ベースの保護を有効にする

HVCI を有効にするには、次のレジストリ キーを設定します。 これらのキーは、グループ ポリシーによって提供される構成オプションのセットとまったく同じセットを提供します。

重要

  • 以下のコマンドでは、[セキュア ブート][セキュア ブートと DMA 保護] の設定を選ぶことができます。 ほとんどの状況で、[セキュア ブート] の選択をお勧めします。 このオプションでは、そのコンピューターのハードウェアでサポートされている保護レベルでセキュア ブートが提供されます。 IOMMU (input/output memory management unit) が装備されているコンピューターでは、DMA 保護を適用したセキュア ブートを使用できます。 IOMMU が装備されていないコンピューターでは、セキュア ブートが有効になります。

  • これに対し、[セキュア ブートと DMA 保護] を指定した場合、セキュア ブートと VBS 自体が有効になります。ただし、DMA がサポートされているコンピューター、つまり IOMMU を装備したコンピューターのみが対象になります。 この設定を使用すると、IOMMU のないコンピューターは VBS または HVCI 保護を持たなくなりますが、Windows Defender アプリケーション制御を有効にすることはできます。

  • システム上のすべてのドライバーは、コード整合性での仮想化ベースの保護に対応している必要があります。対応していない場合は、システムでエラーが発生する可能性があります。 これらの機能は、ユーザーのコンピューターで有効にする前に、テスト コンピューターのグループで有効にして試すことをお勧めします。

Windows 10 バージョン 1607 以降および Windows 11 バージョン 21H2 の場合

推奨される設定 (UEFI ロックを使用せずにコード整合性ポリシーに対する仮想化ベースの保護を有効にする):

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t REG_DWORD /d 0 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Locked" /t REG_DWORD /d 0 /f

上記の推奨される設定をカスタマイズする場合は、次の設定を使用してください。

VBS を有効にするには

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

VBS を有効にし、セキュア ブートのみを要求するには (値 1)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

セキュア ブートと DMA で VBS を有効にするには (値 3)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 3 /f

UEFI ロックを使用せずに VBS を有効にするには (値 0)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t REG_DWORD /d 0 /f

UEFI ロックで VBS を有効にするには (値 1)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t REG_DWORD /d 1 /f

コード整合性ポリシーに対する仮想化ベースの保護を有効にするには

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 1 /f

UEFI ロックを使用せずにコード整合性ポリシーに対する仮想化ベースの保護を有効にするには (値 0)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Locked" /t REG_DWORD /d 0 /f

UEFI ロックを使用してコード整合性ポリシーの仮想化ベースの保護を有効にするには (値 1)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Locked" /t REG_DWORD /d 1 /f

Windows 10 バージョン 1511 以前の場合

推奨される設定 (UEFI ロックを使用せずにコード整合性ポリシーに対する仮想化ベースの保護を有効にする):

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "HypervisorEnforcedCodeIntegrity" /t REG_DWORD /d 1 /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Unlocked" /t REG_DWORD /d 1 /f

上記の推奨される設定をカスタマイズする場合は、次の設定を使用してください。

VBS を有効にするには (常に UEFI にロックされます)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

VBS を有効にし、セキュア ブートのみを要求するには (値 1)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

セキュア ブートと DMA で VBS を有効にするには (値 3)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 3 /f

コード整合性ポリシーに対する仮想化ベースの保護を有効にするには (既定で UEFI ロックが使用されます)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "HypervisorEnforcedCodeIntegrity" /t REG_DWORD /d 1 /f

UEFI ロックを使用せずにコード整合性ポリシーに対する仮想化ベースの保護を有効にするには

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Unlocked" /t REG_DWORD /d 1 /f

有効にした Windows Defender Device Guard のハードウェア ベースのセキュリティ機能を検証する

Windows 10、Windows 11 および Windows Server 2016 には、関連するプロパティや機能の WMI クラスである、Win32_DeviceGuard があります。 このクラスは、管理者特権の Windows PowerShell セッションから照会することができます。そのためには、次のコマンドを実行します。

Get-CimInstance –ClassName Win32_DeviceGuard –Namespace root\Microsoft\Windows\DeviceGuard

注意

WMI クラス Win32_DeviceGuard は、Windows 10 および Windows 11の Enterprise エディションでのみ利用できます。

注意

Mode Based Execution Control プロパティは、Windows 10 バージョン 1803 および Windows 11 version 21H2 から使用可能と表示されます。

このコマンドの出力には、使用可能なハードウェア ベースのセキュリティ機能と、現在有効になっている機能の詳細が表示されます。

AvailableSecurityProperties

このフィールドは、Windows Defender Device Guard の関連するセキュリティ プロパティの状態を列挙して報告する際に役立ちます。

説明
0. この値が設定されている場合は、デバイスには関連するプロパティがありません。
1. この値が設定されている場合は、ハイパーバイザーのサポートを利用できます。
2. この値が設定されている場合は、セキュア ブートを利用できます。
3. この値が設定されている場合は、DMA 保護を利用できます。
4. この値が設定されている場合は、セキュリティで保護されたメモリ上書きを利用できます。
5. この値が設定されている場合は、NX 保護を利用できます。
6. この値が設定されている場合は、SMM 移行を利用できます。
7. 存在する場合は、MBEC/GMET を使用できます。
8. この値が設定されている場合、APIC 仮想化を使用できます。

InstanceIdentifier

特定のデバイスに固有の文字列。 有効な値は、WMI によって決まります。

RequiredSecurityProperties

このフィールドでは、仮想化ベースのセキュリティを有効にするために必要なセキュリティ プロパティが説明されます。

設定値 説明
0。 セキュリティ プロパティは必要ありません。
1。 この値が設定されている場合は、ハイパーバイザーのサポートが必要です。
2。 この値が設定されている場合は、セキュア ブートが必要です。
3。 この値が設定されている場合は、DMA 保護が必要です。
4。 この値が設定されている場合は、セキュリティで保護されたメモリ上書きが必要です。
5。 この値が設定されている場合は、NX 保護が必要です。
6。 この値が設定されている場合は、SMM 移行が必要です。
7. 存在する場合は、MBEC/GMET が必要です。

SecurityServicesConfigured

このフィールドは、Windows Defender Credential Guard または HVCI サービスが構成されているかどうかを示します。

説明
0。 サービスは構成されていません。
1。 この値が設定されている場合は、Windows Defender Credential Guard が構成されています。
2. この値が設定されている場合は、HVCI が構成されています。
3. この値が設定されている場合は、System Guard セキュア起動が構成されています。
4. この値が設定されている場合は、SMM Firmware Measurement が構成されます。

SecurityServicesRunning

このフィールドは、Windows Defender Credential Guard または HVCI サービスが実行中であるかどうかを示します。

設定値 説明
0. 実行中のサービスはありません。
1. この値が設定されている場合は、Windows Defender Credential Guard が実行されています。
2. この値が設定されている場合は、HVCI が実行されています。
3. この値が設定されている場合は、System Guard セキュア起動が実行されています。
4. この値が設定されている場合は、SMM Firmware Measurement が実行されています。

バージョン

このフィールドには、WMI クラスのバージョンが示されます。 現在有効な値は 1.0だけです。

VirtualizationBasedSecurityStatus

このフィールドには、VBS が有効になっているかどうか、また実行中であるかどうかが示されます。

設定値 説明
0. VBS は有効になっていません。
1。 VBS は有効になっていますが、実行されていません。
2。 VBS は有効になっており、実行されています。

PSComputerName

このフィールドには、コンピューター名が示されます。 コンピューター名として有効なすべての値。

Windows Defender Device Guard の利用可能な機能や有効になっている機能を判断する別の方法として、管理者特権の PowerShell コマンド セッションから msinfo32.exe を実行する方法があります。 このプログラムを実行すると、[システムの要約] セクションの下部に Windows Defender Device Guard プロパティが表示されます。

[システムの概要] に表示された Windows Defender Device Guard のプロパティ。

トラブルシューティング

A. デバイス ドライバーが読み込みに失敗するか、または実行時にクラッシュする場合は、デバイス マネージャーを使用してドライバーを更新できる可能性があります。

B. 上記の手順を使用して HVCI を有効にした後にソフトウェアまたはデバイスの誤動作が発生したが、Windows にサインインできる場合は、SIPolicy.p7b ファイル <OS Volume>\Windows\System32\CodeIntegrity\ の名前を変更または削除してからデバイスを再起動することで、HVCI をオフにすることができます。

C. 上記の手順を使用して HVCI を有効にした後、ブート中に重大なエラーが発生した場合や、システムが安定しない場合は、Windows 回復環境 (Windows RE) を使用して回復できます。 Windows RE を起動するには、Windows RE テクニカル リファレンスを参照してください。 Windows RE にサインインした後、SIPolicy.p7b ファイルの名前を変更するか<OS Volume>\Windows\System32\CodeIntegrity\ から削除した後、デバイスを再起動することによって、HVCI を無効にすることができます。

HVCI をオフにする方法

  1. 管理者特権でのプロンプトから次のコマンドを実行して、HVCI レジストリ キーをオフに設定します。

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 0 /f
    
  2. デバイスを再起動します。

  3. HVCI が正常に無効になっていることを確認するには、[システム情報] を開き、実行中の仮想化ベースのセキュリティ サービスを調べます。現在は何も値が表示されません。

仮想マシンでの HVCI の展開

HVCI は、物理マシンの場合と同様に、Hyper-V 仮想マシンを保護することができます。 Windows Defender アプリケーション制御を有効にする手順は、仮想マシン内と同じです。

WDAC は、ゲスト仮想マシンで実行されるマルウェアに対する保護を提供します。 ホスト管理者からの追加の保護は提供されません。 ホストから、仮想マシンに対して WDAC を無効にすることができます。

Set-VMSecurity -VMName <VMName> -VirtualizationBasedSecurityOptOut $true

Hyper-V 仮想マシンで HVCI を実行するための要件

  • Hyper-V ホストでは、Windows Server 2016 または Windows 10 Version 1607 以降を実行している必要があります。
  • Hyper-V 仮想マシンは第 2 世代であることが必要です。また、Windows Server 2016 または Windows 10 以上を実行している必要があります。
  • HVCI と入れ子になった仮想化は同時に有効にすることができます。 仮想マシンで Hyper-V ロールを有効にするには、まず、Windows 入れ子になった仮想化環境に Hyper-V ロールをインストールする必要があります。
  • 仮想ファイバー チャネル アダプターは HVCI と互換性がありません。 仮想ファイバー チャネル アダプターを仮想マシンに接続するには、その前にまず Set-VMSecurity を使って仮想化ベースのセキュリティを無効にする必要があります。
  • パススルー ディスクの AllowFullSCSICommandSet オプションは HVCI と互換性がありません。 AllowFullSCSICommandSet を使ってパススルー ディスクを構成するには、その前にまず、Set-VMSecurity を使って仮想化ベースのセキュリティを無効にする必要があります。