Livemigrieren von Hyper-V VMs die einen vTPM Chip haben #HyperV #TPM

Click here to go to the Englisch Version of the Blogpost!

Da wir zwei Azure Stack HCI Cluster mit TPM Version 2 Chip haben, dachte ich mir, es ist doch einen gute Idee unsere Domain Controller mit Bitlocker zu verschlüsseln. Unter Hyper-V ist es kinderleicht eine VM mit einem vTPM Chip auszustatten. Hierzu muss man nur in den Eistellungen einer Generation 2 VM die Checkbox „Enable Trusted Platform Module“ anhaken (siehe Screenshot).

Wenn der TPM Chip in der VM verfügbar ist kann man nun dieses z.B. für BitLocker nutzen. Im Screenshot sieht man links die TPM Informationen und Rechts den BitLocker Status.

Soweit so gut. Allerdings gibt es ein Problem wenn man die VM per Livemigration von einem Clusterknoten auf einen anderen Knoten schieben möchte. Hier schlagt die Livemigration mit der folgenden Fehlermeldung fehl:

Virtual machine migration operation for ‚vTPM2‘ failed at migration destination ‚TAROXS2D4‘. (Virtual machine ID 85D7A0BC-9979-4B64-A817-609B14278C67)The version of the device ‚Microsoft Virtual TPM Device‘ of the virtual machine ‚vTPM2‘ is not compatible with device on physical computer ‚TAROXS2D4‘. (Virtual machine ID 85D7A0BC-9979-4B64-A817-609B14278C67)The key protector for the virtual machine “ could not be unwrapped. HostGuardianService returned: One or more arguments are invalid (0x80070057) . Details are included in the HostGuardianService-Client event log. (Virtual machine ID )

Im Fehlertext wird der „HostGuardianService“ erwähnt. Bedeutet das, das wir diesen unbedingt brauchen? Zum Glück ist die Antwort nein. Versteht mich nicht falsch. Natürlich ist es für eine sichere Umgebung ratsam den Hostguardian Service oder besser einen Cluster aus Hostguardian Services zu bauen, aber es geht auch ohne.

Wir brauchen dazu allerdings zwei Zertifikate pro Host die auf allen Livemigrations Zielen importiert werden. Wie bekommen wir nun diese Zertifikate? Das ist relative einfach.

Wenn eine VM mit einem vTPM angelegt wird oder ein vTPM nachträglich bei einer bestehende VM aktiviert wird, erzeugt Hyper-V im lokalen „Certificate Store“ ein „Verzeichnis“ mit dem Namen „Shielded VM Local Certificates“. Darin werden dann die zwei benötigten Zertifikate, die jeweils für 10 Jahre gültig sind, erzeugt. Sie heissen:

  • „Shielded VM Encryption Certificate (UntrustedGuardian) (<Hostname>)“
  • „Schielded VM Signing Certificate (UntrustedGuardian) (<Hostname>

Diese Zertifikate muss man inclusieve des Private Keys exportieren und dann auf jedem Host der Ziel der Livemigration sein soll, was in einem Storage Spaces Direct Cluster jeder Knoten ist, importieren.

Da die Zertifikate nur erzeugt werden, wenn eine VM mit vTPM erzeugt wird, ist das Vorgehen folgendermassen:

  1. 1Auf jedem Host je eine VM mit vTPM erzeugen oder bei einer VM den TPM aktivieren
  2. 2Zertifikate von jedem Host einschliesslich des Private Keys exportieren
  3. 3Zertifikate auf jedem Host importieren

Nach dem das geschehen ist sollte der „Certificate Store“ auf jedem System wie im Screenshot aussehen.

Jetzt kann man die VM im Hyper-V Cluster auf jeden Knoten verschieben.

Ich habe zum Thema ein Video erstellt in dem alles nochmal erklärt wird.

Viel Spass beim anschauen. 

Carsten Rachfahl
 

Dipl. Ing. Carsten Rachfahl ist seit mehr als 25 Jahren in der IT-Branche tätig. Er ist einer der geschäftsführenden Gesellschafter der Rachfahl IT-Solutions GmbH & Co. KG und für den technischen Bereich verantwortlich.

Comments are closed