VM-Metadaten


Die Metadaten jeder VM-Instanz werden auf einem Metadatenserver gespeichert. Ihre VM hat automatisch ohne zusätzliche Autorisierung Zugriff auf die Metadatenserver-API. Die Compute Engine verwaltet die Metadatenschlüssel und ‑werte für Ihre VMs und Projekte in Verzeichnissen. In jedem Verzeichnis werden Metadateneinträge in Form von Schlüssel/Wert-Paaren gespeichert. Einige Verzeichnisse enthalten Unterverzeichnisse.

In diesem Dokument erhalten Sie einen Überblick über VM-Metadaten und es werden die Typen und Attribute von VM-Metadaten erklärt.

Verwendungszwecke von VM-Metadaten

In den folgenden Abschnitten werden einige Szenarien beschrieben, in denen Sie Metadateneinträge zum Verwalten Ihrer VMs verwenden können.

Start- und Shutdown-Skripts

Der Metadatenserver ist besonders in Kombination mit Startskripts und Shutdown-Skripts von Vorteil, da Sie mit ihm programmatisch und ohne zusätzliche Autorisierung eindeutige Informationen über eine Instanz erhalten.

So können Sie zum Beispiel ein Startscript schreiben, das das Metadaten-Schlüssel/Wert-Paar für die externe IP-Adresse einer VM abruft, und diese IP-Adresse in Ihrem Script verwenden, um eine Datenbank einzurichten. Da die vordefinierten Metadatenschlüssel von Compute Engine auf jeder VM identisch sind, können Sie Ihr Script wiederverwenden, ohne es für jede VM aktualisieren zu müssen. So müssen Sie weniger problemanfälligen Code für Ihre Anwendungen erstellen.

Hostwartung

Der Metadatenserver stellt Informationen zu einer Planungsoption für eine VM im Metadatenverzeichnis scheduling/ mithilfe des Schlüssels maintenance-event bereit. Sie können diese Metadatenwerte verwenden, um sich benachrichtigen zu lassen, wenn ein Wartungsereignis bevorsteht. So können Sie Ihre Umgebung für das Ereignis vorbereiten. Weitere Informationen finden Sie unter Live-Migrationshinweise erhalten.

Gastattribute

Gastattribute sind ein spezieller Typ benutzerdefinierter Metadaten, in die Anwendungen Daten schreiben können, während sie auf der VM ausgeführt werden. Verwenden Sie Gastattribute nur für Anwendungsfälle, in denen kleine Datenmengen erforderlich sind, die sich nicht häufig ändern. Weitere Informationen zu Gastattributen finden Sie unter Gastattribute festlegen und abfragen.

Partnerattribute

Partnerattribute sind ein bestimmter Typ von Instanzmetadaten. Google Cloud-Dienste können Partnerattribute verwenden, um einen Namespace zu erstellen, in dem Instanzmetadateneinträge definiert werden können. Sie können die Werte der Metadateneinträge der Instanz festlegen, aktualisieren, löschen und aufrufen, um diesen Dienst zu konfigurieren.

Wenn Sie beispielsweise verwaltete Arbeitslastidentitäten für die Compute Engine verwenden, können Sie die Konfigurationsdetails in den Metadateneinträgen des Namespaces dieses Dienstes angeben.

Überlegungen zur Metadatensicherheit

Wenn Sie eine Anfrage zum Abrufen von Informationen vom Metadatenserver senden, verlassen Ihre Anfragen und die nachfolgende Metadatenantwort niemals den physischen Host, auf dem die VM ausgeführt wird.

Jeder Prozess, der die Metadaten-URL abfragen kann, hat Zugriff auf alle Werte auf dem Metadatenserver. Dazu gehören auch alle benutzerdefinierten Metadatenwerte, Clientzertifikate und privaten Schlüssel, die Sie auf den Server schreiben. Google empfiehlt, beim Schreiben vertraulicher Werte auf den Metadatenserver und bei der Ausführung von Drittanbieterprozessen vorsichtig vorzugehen. Alle Prozesse, die nicht auf den Metadatenserver zugreifen dürfen, müssen in einer Sandbox ausgeführt werden.

Metadatenserver-Endpunkte

Auf den Metadatenserver kann über die folgenden Endpunkte zugegriffen werden:

  • Einen HTTP-Endpunkt: http://metadata.google.internal/computeMetadata/v1. Darauf kann von allen VMs, einschließlich Shielded VMs, zugegriffen werden.
  • Einen HTTPS-Endpunkt: https://metadata.google.internal/computeMetadata/v1. Dieser Zugriff ist nur über Shielded-VMs möglich.

HTTPS-Metadatenserver-Endpunkt

Der HTTPS-Metadatenserver-Endpunkt (https://metadata.google.internal/computeMetadata/v1) bietet zusätzliche Sicherheit für die Übertragung von Informationen zwischen dem Metadatenserver und der VM. Dieser Endpunkt ist nur für Shielded VMs verfügbar.

Vorteile der Verwendung des HTTPS-Metadatenserver-Endpunkts

Die Verwendung des HTTPS-Endpunkts zum Abfragen des Metadatenservers bietet folgende Vorteile:

  • Verbessert die Sicherheit: Hilft, unbefugten Zugriff auf Ihre sensiblen Metadaten zu verhindern. So wird verhindert, dass Angreifer eine der folgenden Aktionen ausführen können:

    • Spoofing oder Identitätsdiebstahl des Metadatenservers, um Zugriff auf eine VM zu erhalten
    • Angesehene oder manipulierte vertrauliche Metadaten, bevor sie die VM erreichen
  • Kostenreduzierung: Sie können die Kosten vermeiden, die mit Sicherheitsverstößen verbunden sind.

So funktioniert der Prozess

Bei geschützten VMs, auf denen die Gastumgebung installiert ist, werden auf der VM die folgenden Prozesse ausgeführt:

  1. Wenn Ihre VM hochgefahren wird, führt Compute Engine die folgenden Schritte aus:

    1. Die Compute Engine erstellt drei Zertifikate:

      • Selbst signiertes Root-Zertifikat: Ein eindeutiges Zertifikat, das für die VM generiert wird.
      • Server-Identitätszertifikat: Ein Zertifikat für den Metadatenserver.
      • Zertifikat für die Clientidentität: Ein Zertifikat für den Client. Dieses Zertifikat wird nicht im Metadatenserver im Cache gespeichert und bei jedem Aufruf des Clientzertifikatendpunkts aus der Gastumgebung neu erstellt.

        Informationen zu Speicherorten von Zertifikaten für die Clientidentität und Stammzertifikate finden Sie unter Wo werden Zertifikate gespeichert?

    2. Die Compute Engine überträgt den öffentlichen Teil des Stammzertifikats mithilfe einer von Google generierten UEFI-Variablen in die Gastumgebung der VM. Dieses Root-Zertifikat wird dann auf der VM gespeichert.

  2. Die Gastumgebung fordert regelmäßig ein Client-Identitätszertifikat an. In diesem Fall lädt der Gastagent dieses Zertifikat vom Metadatenserver herunter und validiert es mit dem Stammzertifikat für diese VM.

Wenn Sie eine Abfrage an den HTTPS-Metadatenserver-Endpunkt stellen, geben Sie die Client-Identitätszertifikate an, die dann vom Metadatenserver und der VM verwendet werden, um zu prüfen, ob diese Abfrage autorisiert ist.

Wo werden Zertifikate gespeichert?

In den folgenden Abschnitten wird der Speicherort für Root- und Client-Identitätszertifikate aufgeführt, die von der Compute Engine generiert werden.

Root-Zertifikate

CentOS/RHEL/Rocky

Root-Zertifikate für CentOS-, Red Hat Enterprise Linux (RHEL)- und Rocky Linux-VMs werden an den folgenden Speicherorten abgelegt:

  • /run/google-mds-mtls/root.crt
  • /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

Debian/Ubuntu

Root-Zertifikate für Debian- und Ubuntu-VMs werden an den folgenden Speicherorten gespeichert:

  • /run/google-mds-mtls/root.crt
  • /etc/ssl/certs/ca-certificates.crt

Fedora

Root-Zertifikate für Fedora-VMs werden an den folgenden Speicherorten gespeichert:

  • /run/google-mds-mtls/root.crt
  • /etc/pki/tls/certs/ca-bundle.crt

SLES

Root-Zertifikate für SUSE Linux Enterprise Server (SLES)-VMs werden an den folgenden Speicherorten gespeichert:

  • /run/google-mds-mtls/root.crt
  • /etc/ssl/ca-bundle.pem

Windows

Root-Zertifikate für Windows-VMs werden an den folgenden Speicherorten gespeichert:

  • C:\ProgramData\Google\ComputeEngine\mds-mtls-root.crt
  • Cert:\LocalMachine\Root
Clientidentitätszertifikate

Auf Clientidentitätszertifikate können alle Prozesse zugreifen, die auf der VM ausgeführt werden. Dies ist erforderlich, damit alle Prozesse über den HTTPS-Endpunkt Zugriff auf den Metadatenserver haben, ähnlich wie beim HTTP-Endpunkt. Weitere Informationen finden Sie unter Überlegungen zur Metadatensicherheit.

Linux

Zertifikate für die Clientidentität für Linux-VMs werden an folgendem Speicherort gespeichert:

/run/google-mds-mtls/client.key

Windows

Clientidentitätszertifikate für Windows-VMs werden an den folgenden Speicherorten gespeichert:

  • C:\ProgramData\Google\ComputeEngine\mds-mtls-client.key
  • Cert:\LocalMachine\My

Vordefinierte und benutzerdefinierte Metadatenschlüssel

Jeder Metadateneintrag wird auf dem Metadatenserver als Schlüssel/Wert-Paare gespeichert. Bei Metadatenschlüsseln wird zwischen Groß- und Kleinschreibung unterschieden. Ihre Schlüssel können entweder vordefinierte oder benutzerdefinierte Metadatenschlüssel sein.

Vordefinierte Metadatenschlüssel

Vordefinierte Metadatenschlüssel sind Metadatenschlüssel, die von Compute Engine erstellt werden. Wenn Sie eine VM erstellen, legt Compute Engine automatisch die Metadatenwerte für einige dieser Schlüssel auf dieser VM fest, z. B. die VM-Instanz-ID oder die Projekt-ID. Für vordefinierte Schlüssel, bei denen Compute Engine nicht automatisch einen Wert festlegt, können Sie aus einer Reihe von Werten auswählen, die je nach Systemkonfiguration verfügbar sind. Wenn Sie beispielsweise OS Login für eine VM aktivieren möchten, können Sie den Wert des vordefinierten Schlüssels enable-oslogin für diese VM auf TRUE setzen. Wenn Sie OS Login für diese VM deaktivieren möchten, können Sie den Wert des Schlüssels auf FALSE aktualisieren. Sie können nur die Werte für diese Schlüssel aktualisieren, nicht jedoch die Schlüssel selbst.

Weitere Informationen zu vordefinierten Metadatenschlüsseln und eine Liste dieser Schlüssel finden Sie unter Vordefinierte Metadatenschlüssel.

Benutzerdefinierte Metadatenschlüssel

Mit benutzerdefinierten Metadaten können Sie eigene Metadaten-Schlüssel/Wert-Paare auf einer einzelnen VM oder in einem Projekt erstellen und verwenden. Sie können neue benutzerdefinierte Metadatenschlüssel hinzufügen, die Werte vorhandener Schlüssel aktualisieren und benutzerdefinierte Metadateneinträge entfernen, wenn Sie diese nicht mehr benötigen. Das Festlegen benutzerdefinierter Metadaten ist nützlich, um beliebige Werte an VMs in einem Projekt zu übergeben. Es ist auch nützlich zum Erstellen von Startscripts und Shutdown-Scripts.

Informationen zum Hinzufügen, Aktualisieren oder Entfernen benutzerdefinierter Metadaten für Ihre VMs finden Sie unter Benutzerdefinierte Metadaten konfigurieren.

Arten von Metadaten

VM-Metadateneinträge können spezifische Informationen für eine einzelne VM oder ein Projekt enthalten. Die Metadaten werden anhand des Bereichs, in dem Sie die Metadaten festgelegt haben, in Projekt-, zonale und Instanzmetadaten unterteilt.

Projektmetadaten

Projektmetadaten werden auf Projektebene definiert und enthalten Informationen, die für alle VMs in einem Projekt gelten. Wenn Sie diese Metadaten festlegen, werden die Metadateneinträge an alle VMs in diesem Projekt weitergegeben.

Sie können sowohl vordefinierte als auch benutzerdefinierte Metadatenschlüssel verwenden, um Projektmetadaten festzulegen. Weitere Informationen finden Sie unter Vordefinierte Projektmetadatenschlüssel und Benutzerdefinierte Projektmetadaten festlegen.

Zonale Metadaten

Zonale Metadaten werden mit einem zonalen Bereich innerhalb eines Projekts definiert und liefern Informationen über VMs in dieser Zone im Projekt. Wenn Sie zonale Metadaten festlegen, werden die Metadateneinträge an alle VMs in dieser konfigurierten Zone in diesem Projekt weitergegeben. Im Vergleich zu Projektmetadaten helfen zonale Metadaten bei der Fehlerisolation und bieten eine höhere Zuverlässigkeit.

Compute Engine stellt keine vordefinierten Schlüssel für zonale Metadaten bereit. Sie müssen eigene benutzerdefinierte Metadatenschlüssel erstellen, um zonale Metadaten festzulegen. Weitere Informationen zum Festlegen benutzerdefinierter zonaler Metadaten

Instanzmetadaten

Instanzmetadaten stellen Informationen zu einer bestimmten VM-Instanz bereit. Instanzmetadaten werden für jede einzelne VM-Instanz separat festgelegt.

Sie können sowohl vordefinierte als auch benutzerdefinierte Metadatenschlüssel verwenden, um Instanzmetadaten festzulegen. Weitere Informationen zu vordefinierten Instanzmetadatenschlüsseln und zum Festlegen von benutzerdefinierten Instanzmetadaten

Anordnung von Metadaten

Compute Engine speichert und verwaltet die Metadatenschlüssel und -werte für Ihre VMs und Projekte in Verzeichniseinträgen. Je nach der Art der Metadaten speichert Compute Engine Metadateneinträge in einem der folgenden Verzeichnisse:

Art der Metadaten Verzeichnis
Projektweite und projektzonale Metadaten
  • httpEndpoint:
    http://metadata.google.internal/computeMetadata/v1/project
  • https-Endpunkt (Vorabversion):
    https://metadata.google.internal/computeMetadata/v1/project
Instanzmetadaten
  • httpEndpoint:
    http://metadata.google.internal/computeMetadata/v1/instance
  • https-Endpunkt:
    https://metadata.google.internal/computeMetadata/v1/instance

In jedem Verzeichnis werden Metadateneinträge in Form von Schlüssel/Wert-Paaren gespeichert. Bei einigen Metadaten-Einträgen handelt es sich um Verzeichnisse, die andere Metadatenschlüssel enthalten. Die Metadateneinträge, die als Verzeichnisse fungieren, sind durch einen abschließenden Schrägstrich (/) im Namen des Metadatenschlüssels gekennzeichnet. Beispiel: /project/attributes/ ist ein Verzeichnis im Verzeichnis project/, das andere Metadatenschlüssel enthält. Wenn Sie einen eigenen Metadaten-Verzeichniseintrag erstellen möchten, müssen Sie beim Erstellen des benutzerdefinierten Metadateneintrags einen abschließenden Schrägstrich (/) im Namen des Metadatenschlüssels verwenden.

Projekt- und zonale Metadateneinträge werden im selben Verzeichnis project/ gespeichert. Wenn Sie verschiedene Werte für dieselben benutzerdefinierten Metadatenschlüssel für VMs auf Projektebene und auf zonaler Ebene festlegen, haben die zonalen Metadatenwerte für diese Schlüssel Vorrang vor den Projektmetadatenwerten in den entsprechenden Zonen.

  • Wenn Sie einen zonalen Metadatenwert für einen Metadatenschlüssel hinzufügen, der bereits einen Projektmetadatenwert hat, überschreibt Compute Engine den Projektmetadatenwert für die VMs in der angegebenen Zone und aktualisiert das Verzeichnis /project mit dem zonalen Wert.
  • Wenn Sie einen neuen Projektmetadatenwert für einen Metadatenschlüssel hinzufügen, der bereits einen zonalen Metadatenwert hat, ändert sich nichts. Compute Engine behält den zonalen Metadatenwert im Verzeichnis /project der jeweiligen Zone bei.
  • Wenn Sie keinen zonalen Metadatenwert für einen benutzerdefinierten Metadatenschlüssel in einer bestimmten Zone angeben, der Schlüssel jedoch einen Projektmetadatenwert hat, haben Ihre VMs in diesen Zonen weiterhin die Projektmetadatenwerte.

Angenommen, Sie definieren das projektweite Metadatenpaar key-1=value-1. Angenommen, Sie definieren auch ein zonales Metadatenpaar key-1=zonal-value-1 nur für die Zone us-central1-a. Alle VMs in der Zone us-central1-a für Ihr Projekt übernehmen key-1=zonal-value1 als Metadatenpaar. Das Metadatenpaar bleibt key-1=value-1 für alle VMs in anderen Zonen, in denen Sie keine zonalen Metadaten für key-1 festgelegt haben.

Nächste Schritte