Instanzmetadaten abrufen

Der Instance Metadata Service (IMDS) enthält Informationen über eine laufende Instanz, einschließlich einer Vielzahl von Details über die Instanz, die angehängten virtuellen Netzwerkkarten (VNICs), zugehörige Multipath-fähige Volume-Anhänge und benutzerdefinierte Metadaten, die Sie definieren. IMDS stellt auch Informationen für cloud-init bereit, eine Methode, die Sie für verschiedene Systeminitialisierungsaufgaben verwenden können.

Einige dieser Informationen finden Sie in der Konsole auf der Seite Instanzdetails. Alle Informationen erhalten Sie nach Anmeldung bei der Instanz über den Metadatenservice. Der Service wird auf jeder Instanz ausgeführt und ist ein HTTP-Endpunkt, der 169.254.169.254 überwacht. Wenn eine Instanz über mehrere VNICs verfügt, müssen Sie die Anforderung mit der primären VNIC senden.

Wichtig

Um die Sicherheit von Metadatenanforderungen zu erhöhen, empfehlen wir dringend, dass Sie alle Anwendungen so aktualisieren, dass diese den Endpunkt von IMDS-Version 2 verwenden, sofern dies vom Image unterstützt wird. Deaktivieren Sie anschließend Anforderungen an IMDS-Version 1.

Informationen zu Berechtigungen finden Sie unter Erforderliche IAM-Policy für das Arbeiten mit Instanzen.

Auf Instance Metadata Service v2 upgraden

Der Instance Metadata Service ist in zwei Versionen verfügbar: Version 1 und Version 2. IMDSv2 bietet eine erhöhte Sicherheit im Vergleich zu v1.

Wenn Sie IMDSv1 deaktivieren und Anforderungen nur an IMDSv2 zulassen, ändern sich die folgenden Dinge:

  • Alle Anforderungen müssen an die v2-Endpunkte (/opc/v2) gestellt werden. Anforderungen an die v1-Endpunkte (/opc/v1 und /openstack) werden mit einem Fehler "404 - Nicht gefunden" abgelehnt.
  • Alle Anforderungen an die v2-Endpunkte müssen einen Autorisierungsheader enthalten. Anforderungen, die den Autorisierungsheader nicht enthalten, werden abgelehnt.
  • Anforderungen, die mit den HTTP-Headern Forwarded, X-Forwarded-For oder X-Forwarded-Host weitergeleitet werden, werden abgelehnt.

Führen Sie zum Upgrade des Instance Metadata Service auf einer Compute-Instanz die folgenden allgemeinen Schritte aus:

  1. Prüfen Sie, ob die Instanz ein Image verwendet, das IMDSv2 unterstützt.
  2. Identifizieren Sie Anforderungen an Legacy-v1-Endpunkte.
  3. Migrieren Sie alle Anwendungen, um die v2-Endpunkte zu unterstützen.
  4. Deaktivieren Sie alle Anforderungen an Legacy-v1-Endpunkte.

Unterstützte Images für IMDSv2

IMDSv2 wird auf den folgenden Plattformimages unterstützt:

  • Oracle Autonomous Linux 8.x-Images
  • Oracle Autonomous Linux 7.x-Images, die im Juni 2020 oder später veröffentlicht wurden
  • Oracle Linux 8.x-, Oracle Linux 7.x- und Oracle Linux 6.x-Images, die im Juli 2020 oder später veröffentlicht wurden

Andere Plattformimages, die meisten benutzerdefinierten Images und die meisten Marktplatzimages unterstützen IMDSv2 nicht. Benutzerdefinierte Linux-Images können IMDSv2 unterstützen, wenn cloud-init auf Version 20.3 oder höher und Oracle Cloud Agent auf Version 0.0.19 oder höher aktualisiert wird. Benutzerdefinierte Windows-Images können IMDSv2 unterstützen, wenn Oracle Cloud Agent auf Version 1.0.0.0 oder höher aktualisiert wird. Cloudbase-init unterstützt IMDSv2 nicht.

Anforderungen an Legacy-IMDSv1-Endpunkte identifizieren

Um die spezifischen IMDS-Endpunkte zu identifizieren, an die Anforderungen gestellt werden, und die Agents, die die Anforderungen stellen, verwenden Sie die Metrik InstanceMetadataRequests.

So identifizieren Sie, welche IMDS-Versionen für eine Instanz aktiviert sind:

  • Konsole verwenden:
    1. Öffnen Sie das Navigationsmenü, und klicken Sie auf Compute. Klicken Sie unter Compute auf Instanzen.
    2. Klicken Sie auf die gewünschte Instanz.
    3. Beachten Sie im Abschnitt Instanzdetails neben Instance Metadata Service die Versionsnummern.
  • API verwenden: Verwenden Sie den Vorgang GetInstance oder ListInstances. In der Antwort gibt das Attribut areLegacyImdsEndpointsDisabled im InstanceOptions-Objekt false zurück, wenn sowohl IMDSv1 als auch IMDSv2 für die Instanz aktiviert sind. Gibt true zurück, wenn IMDSv1 deaktiviert ist.

Anforderungen an Legacy-IMDSv1-Endpunkte deaktivieren

Nachdem Sie alle Anwendungen migriert haben, sodass sie nur Anforderungen an die IMDSv2-Endpunkte stellen, sollten Sie alle Anforderungen an Legacy-IMDSv1-Endpunkte deaktivieren.
Wichtig

Stellen Sie sicher, dass die Instanz die IMDSv1-Endpunkte nicht verwendet, bevor Sie Anforderungen an IMDSv1 deaktivieren. Wenn die Instanz weiterhin auf IMDSv1 angewiesen ist, wenn Sie Anforderungen daran deaktivieren, gehen möglicherweise einige Funktionen verloren.

Führen Sie eine der folgenden Aktionen aus:

  • Konsole verwenden:
    1. Öffnen Sie das Navigationsmenü, und klicken Sie auf Compute. Klicken Sie unter Compute auf Instanzen.
    2. Klicken Sie auf die gewünschte Instanz.
    3. Klicken Sie im Abschnitt Instanzdetails neben Instance Metadata Service auf Bearbeiten.
    4. Wählen Sie unter Zulässige IMDS-Version die Option Nur Version 2 aus.
    5. Klicken Sie auf Änderungen speichern.
  • API verwenden: Verwenden Sie den Vorgang UpdateInstance. Übergeben Sie im Anforderungsbody im Objekt InstanceOptions den Wert true für das Attribut areLegacyImdsEndpointsDisabled.
Hinweis

Wenn Sie IMDSv1 auf einer Instanz deaktivieren, die IMDSv2 nicht unterstützt, können Sie beim Starten möglicherweise keine Verbindung zur Instanz herstellen. So aktivieren Sie IMDSv1 erneut: Klicken Sie in der Konsole auf der Seite "Instanzdetails" neben Instance Metadata Service auf Bearbeiten. Wählen Sie die Option Version 1 und Version 2 aus, speichern Sie die Änderungen, und starten Sie die Instanz neu. Verwenden Sie den API-Vorgang UpdateInstance.

Anforderungs-Throttling

Oracle Cloud Infrastructure setzt Throttling bei Instance Metadata Service-Anforderungen ein, um eine unbeabsichtigte oder falsche Verwendung von Ressourcen zu verhindern. Um Throttling zu vermeiden, speichern Sie die Sicherheitszugangsdaten bis kurz vor ihrem Ablauf im Cache, anstatt für jede Transaktion Zugangsdaten abzufragen.

Wenn Sie zu viele Anforderungen zu schnell ausführen, verlaufen einige möglicherweise erfolgreich, andere nicht. Wenn Throttling auftritt, empfiehlt Oracle, dass Sie einen erneuten Versuch mit einem exponentiellen Backoff ausführen.

Instanzmetadaten auf Plattformimages abrufen

Sie können Instanzmetadaten für Plattformimages abrufen, indem Sie cURL auf Linux-Instanzen verwenden. Auf Windows-Instanzen können Sie cURL (sofern von der Windows-Version unterstützt) oder einen Internetbrowser verwenden.

Alle Anforderungen an den Instance Metadata Service v2 müssen den folgenden Header enthalten:

Authorization: Bearer Oracle

Instanzmetadaten, auf die mit IMDSv2 zugegriffen wird, sind unter den folgenden Root-URLs verfügbar:

  • Alle Instanzinformationen:

    http://169.254.169.254/opc/v2/instance/
  • Informationen zu den VNICs, die der Instanz zugeordnet sind:

    http://169.254.169.254/opc/v2/vnics/
  • Informationen zu einem an die Instanz angehängten Volume mit Multipath-fähigem Anhang:

    http://169.254.169.254/opc/v2/volumeAttachments/

Instanzmetadaten, auf die mit IMDSv1 zugegriffen wird, sind unter den folgenden Root-URLs verfügbar. Es ist kein Header erforderlich.

  • Alle Instanzinformationen:

    http://169.254.169.254/opc/v1/instance/
  • Informationen zu den VNICs, die der Instanz zugeordnet sind:

    http://169.254.169.254/opc/v1/vnics/
  • Informationen zu einem an die Instanz angehängten Volume mit Multipath-fähigem Anhang:

    http://169.254.169.254/opc/v1/volumeAttachments/

Die Werte für bestimmte Metadatenschlüssel sind als Unterpfade unterhalb der Root-URL verfügbar.

So rufen Sie Instanzmetadaten für Linux-Instanzen ab

  1. Stellen Sie mit SSH eine Verbindung zu einer Linux-Instanz her.
  2. Geben Sie mit cURL eine GET-Anforderung an die gewünschte Instanzmetadaten-URL aus. Beispiel:

    curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/

So rufen Sie Instanzmetadaten für Windows-Instanzen ab

Die Schritte zum Abrufen von Metadaten auf einer Windows-Instanz hängen davon ab, von welcher Version des Instance Metadata Service Sie Metadaten anfordern.

So rufen Sie Windows-Instanzmetadaten mit IMDSv2 ab

  1. Stellen Sie eine Remotedesktopverbindung zu einer Windows-Instanz her.
  2. Führen Sie einen der folgenden Schritte aus, je nachdem, ob Ihre Windows-Version cURL enthält:

    • Wenn Ihre Windows-Version cURL enthält, geben Sie mit cURL eine GET-Anforderung an die Instanzmetadaten-URL aus, an der Sie interessiert sind. Beispiel:

      curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/
    • Wenn Ihre Windows-Version cURL nicht enthält, können Sie Instanzmetadaten in Ihrem Internetbrowser abrufen. Navigieren Sie zu der gewünschten Instanzmetadaten-URL, und übergeben Sie eine Anforderung mit dem Autorisierungsheader. Weitere Informationen zum Einbinden von Headern in eine Anforderung finden Sie in den Anweisungen für Ihren Browser. Möglicherweise müssen Sie eine Browsererweiterung von Drittanbietern installieren, mit der Sie Anforderungsheader aufnehmen können.

So rufen Sie Windows-Instanzmetadaten mit IMDSv1 ab:

  1. Stellen Sie eine Remotedesktopverbindung zu einer Windows-Instanz her.
  2. Öffnen Sie einen Internetbrowser, und navigieren Sie zu der gewünschten Instanzmetadaten-URL.

Wiederholungen für Instanzmetadaten

Der Instance Metadata Service verzeichnet in regelmäßigen Abständen kurze Ausfallzeiten für Wartungsarbeiten. IMDS-Endpunkte sind daher bei einem Zugriffsversuch möglicherweise nicht verfügbar. Als Best Practice sollten Sie beim Zugriff auf IMDS-Endpunkte Wiederholungslogik implementieren. Die folgende Strategie wird empfohlen: Wiederholen Sie den Vorgang bis zu dreimal mit einem 30-Sekunden-Timeout, wenn Sie eine 404-, 429- oder 5xx-Antwort erhalten. Weitere Informationen und Beispiele finden Sie in der Dokumentation zu SDK für Java.

Metadatenschlüssel

Die Instanzmetadaten enthalten Standardmetadatenschlüssel, die von Compute definiert werden und nicht bearbeitet werden können, sowie benutzerdefinierte Metadatenschlüssel, die Sie erstellen.

Einige Metadateneinträge sind Verzeichnisse, die zusätzliche Metadatenschlüssel enthalten. In den folgenden Tabellen geben Einträge mit einem abschließenden Schrägstrich ein Verzeichnis an. Beispiel: regionInfo/ ist ein Verzeichnis, das andere Metadatenschlüssel enthält.

Metadatenschlüssel für eine Instanz

Zu einer Instanz sind die folgenden Metadaten verfügbar. Die Pfade sind relativ zu http://169.254.169.254/opc/v2/instance/.

Metadateneintrag Beschreibung
availabilityDomain

Die Availability-Domain, in der die Instanz ausgeführt wird. Dieser Name enthält das mandanspezifische Präfix für den Namen der Availability-Domain.

Beispiel: Uocm:PHX-AD-1

faultDomain

Der Name der Faultdomain, in der die Instanz ausgeführt wird.

Beispiel: FAULT-DOMAIN-1

compartmentId

Die OCID des Compartments, das die Instanz enthält.

displayName Der benutzerfreundliche Name der Instanz.
hostname Der Hostname der Instanz.
id Die OCID der Instanz.
image Die OCID des Images, das zum Booten der Instanz verwendet wird.
metadata/

Ein Verzeichnis, das benutzerdefinierte Metadaten enthält, die Sie für die Instanz angeben.

Um die Metadaten für einen bestimmten benutzerdefinierten Metadatenschlüssel abzufragen, verwenden Sie metadata/<key-name>, wobei <key-name> der Name des Schlüssels ist, den Sie beim Erstellen der Instanz definiert haben.

metadata/ssh_authorized_keys Bei Linux-Instanzen der öffentliche SSH-Schlüssel, der beim Erstellen der Instanz angegeben wurde.
metadata/user_data Benutzerdaten, die von cloud-init oder cloudbase-init zur Ausführung benutzerdefinierter Skripte oder zur Bereitstellung einer benutzerdefinierten Konfiguration verwendet werden sollen.
region

Die Region, in der die Availability-Domain enthalten ist, in der die Instanz ausgeführt wird.

Für die Regionen us-phoenix-1 und us-ashburn-1 werden phx bzw. iad zurückgegeben. Für alle anderen Regionen wird die vollständige Regions-ID zurückgegeben.

Beispiele: phx, eu-frankfurt-1

canonicalRegionName

Die Regions-ID für die Region, die die Availability-Domain enthält, in der die Instanz ausgeführt wird.

Beispiel: us-phoenix-1

ociAdName

Die Availability-Domain, in der die Instanz ausgeführt wird. Dieser Name wird intern verwendet und entspricht dem Data-Center-Label.

Beispiel: phx-ad-1

regionInfo/ Ein Verzeichnis mit Informationen über die Region, die die Availability-Domain enthält, in der die Instanz ausgeführt wird.
regionInfo/realmKey

Der Schlüssel für die Realm , in der sich die Region befindet.

Beispiel: oc1

regionInfo/realmDomainComponent

Die Domain für die Realm.

Beispiel: oraclecloud.com

regionInfo/regionKey

Der aus drei Buchstaben bestehende Schlüssel für die Region.

Beispiel: PHX

regionInfo/regionIdentifier

Die Regions-ID.

Beispiel: us-phoenix-1

shape Die Ausprägung der Instanz. Die Ausprägung bestimmt die CPU-Anzahl und die Arbeitsspeichermenge, die der Instanz zugewiesen werden. Sie können alle verfügbaren Ausprägungen auflisten, indem Sie den Vorgang ListShapes aufrufen.
state

Der aktuelle Lebenszyklusstatus der Instanz. Eine Liste der zulässigen Werte finden Sie unter Instanz.

Beispiel: Running

timeCreated Datum und Uhrzeit der Erstellung der Instanz im UNIX-Zeitstempelformat in Millisekunden seit Epoch.
agentConfig/ Verzeichnis mit Informationen über die Oracle Cloud Agent-Software und Plug-ins, die auf der Instanz ausgeführt werden.
agentConfig/monitoringDisabled

Boolescher Wert, der angibt, ob die Oracle Cloud Agent-Software Performancemetriken erfassen und die Instanz mithilfe der Monitoring-Plug-ins überwachen kann.

Die Monitoring-Plug-ins werden von diesem Parameter und von der Konfiguration des jeweiligen Plug-ins im pluginsConfig-Objekt gesteuert.

agentConfig/managementDisabled

Boolescher Wert, der angibt, ob die Oracle Cloud Agent-Software alle verfügbaren Management-Plug-ins ausführen kann.

Die Management-Plug-ins werden von diesem Parameter und von der Konfiguration des jeweiligen Plug-ins im pluginsConfig-Objekt gesteuert.

agentConfig/allPluginsDisabled Boolescher Wert, der angibt, ob Oracle Cloud Agent alle verfügbaren Plug-ins ausführen kann. Dazu gehören die Management- und Monitoring-Plug-ins.
agentConfig/pluginsConfig/ Ein Verzeichnis mit Informationen zu den Plug-ins, die Oracle Cloud Agent auf der Instanz verwaltet.
agentConfig/pluginsConfig/name Der Name des Plug-ins.
agentConfig/pluginsConfig/desiredState

Gibt an, ob das Plug-in aktiviert oder deaktiviert werden soll.

Um die Monitoring- und Management-Plug-ins zu aktivieren, müssen die Attribute monitoringDisabled und managementDisabled ebenfalls auf "false" gesetzt sein.

freeformTags/ Ein Verzeichnis, das Freiformtags enthält, die der Instanz hinzugefügt werden.
definedTags/ Ein Verzeichnis, das definierte Tags enthält, die der Instanz hinzugefügt werden.

Nachfolgend finden Sie eine Beispielantwort, in der alle Informationen für eine Instanz angezeigt werden:

{
  "availabilityDomain" : "EMIr:PHX-AD-1",
  "faultDomain" : "FAULT-DOMAIN-3",
  "compartmentId" : "ocid1.tenancy.oc1..exampleuniqueID",
  "displayName" : "my-example-instance",
  "hostname" : "my-hostname",
  "id" : "ocid1.instance.oc1.phx.exampleuniqueID",
  "image" : "ocid1.image.oc1.phx.exampleuniqueID",
  "metadata" : {
    "ssh_authorized_keys" : "example-ssh-key"
  },
  "region" : "phx",
  "canonicalRegionName" : "us-phoenix-1",
  "ociAdName" : "phx-ad-1",
  "regionInfo" : {
    "realmKey" : "oc1",
    "realmDomainComponent" : "oraclecloud.com",
    "regionKey" : "PHX",
    "regionIdentifier" : "us-phoenix-1"
  },
  "shape" : "VM.Standard.E3.Flex",
  "state" : "Running",
  "timeCreated" : 1600381928581,
  "agentConfig" : {
    "monitoringDisabled" : false,
    "managementDisabled" : false,
    "allPluginsDisabled" : false,
    "pluginsConfig" : [ {
      "name" : "OS Management Service Agent",
      "desiredState" : "ENABLED"
    }, {
      "name" : "Custom Logs Monitoring",
      "desiredState" : "ENABLED"
    }, {
      "name" : "Compute Instance Run Command",
      "desiredState" : "ENABLED"
    }, {
      "name" : "Compute Instance Monitoring",
      "desiredState" : "ENABLED"
    } ]
  },
  "freeformTags": {
    "Department": "Finance"
  },
  "definedTags": {
    "Operations": {
      "CostCenter": "42"
    }
  }
}

Metadatenschlüssel für angehängte VNICs

Zu den an die Instanz angehängten VNICs sind die folgenden Metadaten verfügbar. Die Pfade sind relativ zu http://169.254.169.254/opc/v2/vnics/.

Metadateneintrag Beschreibung
vnicId Die OCID der VNIC.
privateIp Die private IP-Adresse des primären privateIp-Objekts in der VNIC. Die Adresse befindet sich im CIDR des Subnetzes der VNIC.
vlanTag

Das von Oracle zugewiesene VLAN-Tag der angehängten VNIC.

Wenn die VNIC zu einem VLAN als Teil der Oracle Cloud VMware-Lösung gehört, ist der vlanTag-Wert stattdessen der Wert des vlanTag-Attributs für das VLAN. Siehe VLAN.

macAddr

Die MAC-Adresse der VNIC.

Wenn die VNIC zu einem VLAN als Teil der Oracle Cloud VMware-Lösung gehört, wird die MAC-Adresse gelernt. Wenn die VNIC zu einem Subnetz gehört, ist die MAC-Adresse ein statischer, von Oracle bereitgestellter Wert.

virtualRouterIp Die IP-Adresse des virtuellen Routers.
subnetCidrBlock Der CIDR-Block des Subnetzes.
nicIndex Gibt an, welche physische Netzwerkkarte (NIC) die VNIC verwendet. Bestimmte Bare-Metal-Instanzausprägungen haben zwei aktive physische NICs (0 und 1). Wenn Sie einer dieser Instanzen eine sekundäre VNIC hinzufügen, können Sie angeben, welche NIC die VNIC verwendet. Weitere Informationen finden Sie unter Virtuelle Netzwerkkarten (VNICs).

Nachfolgend finden Sie eine Beispielantwort, in der die an eine Instanz angehängten VNICs angezeigt werden:

[ {
    "vnicId" : "ocid1.vnic.oc1.phx.exampleuniqueID",
    "privateIp" : "10.0.3.6",
    "vlanTag" : 11,
    "macAddr" : "00:00:00:00:00:01",
    "virtualRouterIp" : "10.0.3.1",
    "subnetCidrBlock" : "10.0.3.0/24",
    "nicIndex" : 0
}, {
    "vnicId" : "ocid1.vnic.oc1.phx.exampleuniqueID",
    "privateIp" : "10.0.4.3",
    "vlanTag" : 12,
    "macAddr" : "00:00:00:00:00:02",
    "virtualRouterIp" : "10.0.4.1",
    "subnetCidrBlock" : "10.0.4.0/24",
    "nicIndex" : 0
} ]

Metadatenschlüssel für angehängte Volumes mit Multipath-fähigen Anhängen

Zu den an die Instanz angehängten Multipath-fähigen Volume-Anhängen sind die folgenden Metadaten verfügbar. Die Pfade sind relativ zu http://169.254.169.254/opc/v2/volumeAttachments/.

Metadateneintrag Beschreibung
id Die OCID des Volume-Anhangs
instanceId Die OCID der Instanz.
volumeId Die OCID des Volumes
ipv4 Die IPv4-Adresse des iSCSI-Ziels.
iqn Die IQN des iSCSI-Ziels.
port Der Port des iSCSI-Ziels.
multipathDevices Eine Liste der sekundären Multipath-Geräte mit den Eigenschaften ipv4, iqn und port.

Im Folgenden finden Sie eine Beispielantwort, in der die Multipath-fähigen Volume-Anhänge für eine Instanz angezeigt werden:

[
  {
    "id": "ocid1.volumeattachment.oc1.phx.exampleuniqueID",
    "instanceId": "ocid1.instance.oc1.phx.exampleuniqueID",
    "volumeId": "ocid1.volume.oc1.phx.exampleuniqueID",
    "ipv4": "169.254.2.2",
    "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
    "port": 3260,
    "multipathDevices":
    [
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      },
      {
        "ipv4": "exampleIP",
        "iqn": "iqn.2015-12.com.oracleiaas:exampleuniqueID",
        "port": 3260
      }
    ]
  }
]