In diesem Dokument wird beschrieben, wie Sie Secure Boot oder ein virtualisiertes Trusted Platform Module (vTPM) auf einer VM-Instanz in einer Air-Gap-Appliance von Google Distributed Cloud (GDC) aktivieren.
Dieses Dokument richtet sich an Entwickler in Plattformadministrator- oder Anwendungsoperatorgruppen, die Secure Boot und vTPMs auf VMs in einer GDC-Appliance-Umgebung mit Air Gap konfigurieren.
Secure Boot
Secure Boot ist eine Funktion, die dafür sorgt, dass das System nur authentische Software ausführt. Dazu wird die digitale Signatur aller Bootkomponenten überprüft und der Vorgang angehalten, wenn die Überprüfung fehlschlägt. Sie verwendet die Unified Extensible Firmware Interface (UEFI)-Firmware, um Zertifikate und Schlüssel zu verwalten, die Hersteller zum Signieren von Systemfirmware, Bootloadern und geladenen Binärdateien verwenden.
Bei jedem Start überprüft die UEFI-Firmware die digitale Signatur jeder Komponente anhand der gespeicherten genehmigten Schlüssel und blockiert alle nicht signierten oder falsch signierten Komponenten.
Wenn Sie Secure Boot auf Ihrer VM-Instanz aktivieren möchten, müssen Sie den bootloader-Typ der VM auf uefi festlegen.
Die offizielle UEFI-Dokumentation finden Sie unter https://uefi.org/sites/default/files/resources/UEFI_Secure_Boot_in_Modern_Computer_Security_Solutions_2013.pdf.
Virtual Trusted Platform Modules
Ein vTPM ist ein spezieller virtueller Computerchip, der die Schlüssel und Zertifikate schützt, die zur Authentifizierung des Systemzugriffs verwendet werden. Weitere Informationen zu vTPMs finden Sie unter https://trustedcomputinggroup.org/trusted-platform-module-tpm-summary/.
Sie können auch ein vTPM verwenden, um Secrets durch Abschirmung oder Versiegelung zu schützen. Weitere Informationen zum versiegelten Speicher finden Sie unter https://en.wikipedia.org/wiki/Trusted_Computing#SEALED-STORAGE. Auf GitHub finden Sie im Projekt Go-TPM (https://github.com/google/go-tpm) Beispiele dafür, wie Sie in der Sprache Go ein vTPM für diesen Zweck verwenden.
Hinweis
Wenn Sie die Befehlszeilenbefehle (Command-Line Interface, CLI) von gdcloud verwenden möchten, müssen Sie die gdcloud-CLI heruntergeladen, installiert und konfiguriert haben.
Für alle Befehle für die GDC-Air-Gap-Appliance wird die gdcloud- oder kubectl-Befehlszeile verwendet. Außerdem ist eine Betriebssystemumgebung erforderlich.
Pfad der kubeconfig-Datei abrufen
Damit Sie Befehle für den Management API-Server ausführen können, benötigen Sie die folgenden Ressourcen:
Suchen Sie den Namen des Management API-Servers oder fragen Sie Ihren Plattformadministrator danach.
Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Management API-Server, falls Sie noch keine haben.
Verwenden Sie den Pfad, um
MANAGEMENT_API_SERVER{"</var>"}}in dieser Anleitung zu ersetzen.
IAM-Rollen anfordern
Wenn Sie Secure Boot oder vTPM auf Ihrer VM aktivieren möchten, wenden Sie sich an Ihren Projekt-IAM-Administrator, um die Rolle Project VirtualMachine Admin (project-vm-admin) anzufordern.
Alle VM-Rollen müssen an den Namespace des Projekts gebunden sein, in dem sich die VM befindet. Folgen Sie der Anleitung, um Ihren Zugriff zu bestätigen.
Secure Boot aktivieren
Secure Boot für eine VM aktivieren. Verwenden Sie die folgende Anleitung für eine VM mit dem Namen VM_NAME im Namespace des Projekts (PROJECT_NAMESPACE).
Benutzerdefinierte VM-Ressource aktualisieren, um Secure Boot zu aktivieren:
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $' spec: shieldConfig: bootType: uefi enableSecureBoot: true 'Wenn die VM ausgeführt wird, starten Sie sie neu. Folgen Sie dazu der Anleitung zum Neustarten einer VM.
Prüfen Sie, ob Sie Secure Boot aktiviert haben. Stellen Sie eine SSH-Verbindung zu Ihrer VM her und führen Sie den folgenden Befehl aus:
mokutil --sb-stateWenn Sie Secure Boot erfolgreich aktiviert haben, gibt der Befehl
SecureBoot enabledzurück.Wenn das Tool
mokutilmeldet, dass Sie Secure Boot nicht aktiviert haben, folgen Sie der Anleitung im Abschnitt Fehlerbehebung bei der Secure Boot-Konfiguration.
Fehlerbehebung bei der Konfiguration von Secure Boot
Öffnen Sie die benutzerdefinierte VM-Ressource in einem Editor:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACESuchen Sie nach fehlenden Feldern oder Werten, wie im Feld
specunter „Führen Sie den folgenden Befehl aus“ beschrieben. Diese sind erforderlich.Wenn Felder fehlen oder falsch sind, bearbeiten Sie
spec, um die fehlenden Felder hinzuzufügen und falsche Werte zu korrigieren.Speichern Sie die Datei.
Folgen Sie der Anleitung unter VM neu starten.
Wenn das Problem durch die vorherigen Schritte nicht behoben wird, prüfen Sie in der Dokumentation für das Betriebssystem der VM, ob die Betriebssystemversion Secure Boot unterstützt.
Virtual Trusted Platform Module (vTPM) aktivieren
vTPM für eine VM aktivieren Folgen Sie der Anleitung für eine VM mit dem Namen VM_NAME im Namespace des Projekts (PROJECT_NAMESPACE).
Benutzerdefinierte VM-Ressource aktualisieren, um vTPM zu aktivieren:
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $' spec: shieldConfig: enableVtpm: true 'Wenn die VM ausgeführt wird, starten Sie sie neu. Folgen Sie dazu der Anleitung zum Neustarten einer VM.
Prüfen Sie, ob Sie vTPM aktiviert haben. Stellen Sie eine SSH-Verbindung zu Ihrer VM her und führen Sie den folgenden Befehl aus:
dmesg | grep -i tpmWenn Sie vTPM erfolgreich aktiviert haben, gibt der Befehl das TPM-Modul als Teil der ACPI-Tabellen zurück. Die Ausgabe sieht dann ungefähr so aus:
[ 7.620985] tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1, rev-id 1)Wenn das TPM-Modul nicht angezeigt wird, folgen Sie der Anleitung im Abschnitt Fehlerbehebung bei der vTPM-Konfiguration.
ACPI tables
Fehlerbehebung bei der vTPM-Konfiguration
Öffnen Sie die benutzerdefinierte VM-Ressource in einem Editor:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACESuchen Sie nach fehlenden Feldern oder Werten, wie im Feld
specunter Führen Sie den folgenden Befehl aus beschrieben. Diese sind erforderlich.Wenn Felder fehlen oder falsch sind, bearbeiten Sie
spec, um die fehlenden Felder hinzuzufügen und falsche Werte zu korrigieren.Speichern Sie die Datei.
Folgen Sie der Anleitung unter VM neu starten.
Wenn das Problem durch die vorherigen Schritte nicht behoben wird, prüfen Sie in der Dokumentation für das Betriebssystem der VM, ob die Betriebssystemversion vTPM unterstützt.