かつて山市良と呼ばれたおじさんのブログ
セイテクエンジニアのブログ かつて山市良と呼ばれたおじさんのブログ メモ. 仮想TPM(vTPM)には仮想化ベースのセキュリティ(VBS)が必要|Windowsトラブル解決
2025年11月21日配信
執筆者:山内 和朗
Hyper-Vの第2世代仮想マシン(VM)で利用可能な「トラステッドプラットフォームモジュール(TPM)」は、仮想TPMやvTPMとも呼ばれます。vTPMはWindowsの「仮想化ベースのセキュリティ(Virtualization-Based Security《VBS》)」によって利用可能になるVM向けの仮想デバイスです。逆に言えば、VBSが実行中でなければ、vTPMを利用することはできません。
Windows Server 2016の第2世代VMからサポートされるようになったvTPMは、ゲストOSでTPM 2.0セキュリティチップとして認識され、BitLockerドライブ暗号化の暗号化キーの格納や、資格情報ガード(Credential Guard)、デバイスガード(Device Guard)などのセキュリティ機能のシステム要件として利用できます。vTPMのサポートがなければ、TPM 2.0を必須のシステム要件とするWindows 11を、Hyper-V VMにインストールして動かすことはできません。
vTPMはWindowsの「仮想化ベースのセキュリティ(VBS)」で利用可能になる機能の1つです。もう少し細かく言うと、VBSが提供する「仮想保護モード(Virtual Secure Mode)」という隔離コンテナーでTPM機能をエミュレーションしています。物理的なTPMデバイスには依存しないため、Hyper-VホストがTPMデバイスを備えているかどうかに関係なく、VMにvTPMを提供できます。そしてvTPMは、Windows Server 2016で導入されたHost Guardianサービス(HGS)およびシールドされたVMに必須の機能です。
仮想保護モード|Windows(Microsoft Learn)
WindowsやWindows ServerにHyper-Vをインストールすると、ポリシー設定やレジストリ設定で明示的に構成しなくても、既定でVBSが有効になり、“実行中”の状態になります(画面1)。そのため、VMでvTPMを利用できることに、VBSが関係していることに気付く人はいないかもしれません。

画面1 VMでvTPMを利用できるのは、Hyper-VホストでVBSが実行中だから
VBSの現在の状態は、「システム情報」(msinfo32.exe)ユーティリティで確認することができます。VBSのポリシー設定は、以下の場所にあり、既定は「未構成」になっています。
| コンピューターの構成\Windows コンポーネント\システム\Device Guard\仮想化ベースのセキュリティを有効にする |
Hyper-Vは入れ子になった仮想化(Nested Virtualization)をサポートしており、Hyper-V VMの中のゲストOSで、ハイパーバイザー機能(Hyper-VやVBSなど)を利用可能にできます。しかし、入れ子になった仮想化が有効な、Windows Server 2022以降をゲストOSとして実行するVMでは、VBSの状態が「有効(停止中)」になることがあることを確認しています。詳しくは、以下のメモを参照してください。そして、VBSが実行中でない場合、vTPMが有効なVMは起動しようとしても、vTPMを利用できないため、エラーで起動に失敗します(画面2)。
メモ. 仮想化ベースのセキュリティ(VBS)の有効化方法(最新版)と最近気づいた問題、疑わしい犯人(更新あり)|Windowsトラブル解決
※この記事ではVBSの一部の機能とHyper-Vは同時に有効にはできないのではないかと書きましたが、その後、同居させる方法を追加しています
画面2 VBSの状態が“実行中”でないと、vTPMが有効なVMは起動に失敗する
VBSを実行中に修正するには、「仮想化ベースのセキュリティを有効にする」ポリシーを有効にし、プラットフォームのセキュリティレベルとして「セキュアブート」を選択してください(画面3)。他のオプション項目、未構成または無効にするか、必要であれば適宜構成してください。ハイパーバイザーによるコードの整合性の強制(HVCI)と資格情報ガード(Credential Guard)は、有効(ロックなしで有効化)に構成することで、VM環境でも実行状態になることを確認しました。ブートDMA保護(Boot DMA Protection)とセキュア起動(Secure Launch《DRTM》)は、VM環境ではサポートされないようです。

画面3 プラットフォームのセキュリティレベルとして「セキュアブート」を選択してVBSを有効にする
VBSを再構成して再起動したら、「システム情報」(msinfo32.exe)ユーティリティで“実行中”であることを確認します。また、vTPMが有効なVMを起動して、起動できることを確認します(画面4)。

画面4 VBSが“実行中”の状態になり、vTPMが有効なVMが起動できるようになった