Weisheiten - der Netz-Weise Blog
TPM für Hyper-V VM mit Powershell aktivieren
Virtuelle Maschinen mit Hyper-V anzulegen ist in Powershell mit den beiden Cmdlets New-VM und Set-VM relativ einfach, da die Cmdlets alle wesentlichen Funktionen einer virtuellen Maschine mit den Standard-Parametern abbilden. Das Aktivieren des virtuellen TPMs gestaltet sich aber überraschend schwierig. Während man im Hyper-V Manager nur ein Häkchen setzen muss, wirft das Cmdlet Enable-VMTPM die Fehlermeldung "Die ausgewählten Sicherheitseinstellungen eines virtuellen Computers können ohne eine gültige konfigurierte Schlüsselschutzvorrichtung nicht geändert werden."
Die Ursache liegt in der Art und Weise, wie Microsoft das virtuelle TPM implementiert hat. Das TPM (Trusted Platform Module) ist auf einem physikalischen Rechner ein eigenständiger Rechner, meist auf ARM-Basis, der u.a. dafür verwendet werden kann, Verschlüsselungs-Schlüssel quasi wie in einem Tresor zu speichern. Bei virtuellen Maschinen passiert das über Public Private Key-Verschlüsselung mit Hilfe eines privaten Schlüssels und eines Zertifikats. Diese werden aber von Powershell im Gegensatz zum Hyper-V Manager nicht automatisch angelegt. Stattdessen muss man mit den Cmdlets New-HgsGuardian und New-HgsKeyProtector die Funktionalität für virtuelle TPMs zu aktivieren, um dann mit Set-VMKeyProtector das TPM einer einzelnen virtuellen Maschine zu sichern. Erst danach kann Enable-VMTpm verwendet werden. Der komplette Powershell-Code zum Aktivieren der ersten VM sieht dann so aus:
$HostGuard = New-HgsGuardian -Name 'VMGuardian' -GenerateCertificates $KeyProtector = New-HgsKeyProtector -Owner $HostGuard -AllowUntrustedRoot Set-VMKeyProtector -VMName 'Server1' -KeyProtector $Kp.RawData Enable-VMTPM -VMNAME 'Server1'
Das das Zertifikat und der private Schlüssel lokal auf dem Hyper-V Server angelegt werden, ist eine Verschieben oder Kopieren der virtuellen Maschine jetzt aber nicht mehr ohne weiteres möglich.
Kommentare