Instanzmetadaten aus der Instanz abrufen

In Compute Cloud@Customer gibt der Instance Metadata Service (IMDS) Informationen über eine ausgeführte Instanz an Benutzer weiter, die bei dieser Instanz angemeldet sind. IMDS stellt auch Informationen für cloud-init bereit, eine Methode, die Sie für verschiedene Systeminitialisierungsaufgaben verwenden können.

Hinweis

Um auf IMDS-Metadaten zuzugreifen, verwenden Sie ein Instanzimage, das von Oracle bereitgestellt wird.

Die IMDS-Metadaten enthalten Instanzinformationen wie die folgenden:

  • Der SSH-Public Key, mit dem sich Benutzer bei der Instanz anmelden können

  • Instanz angehängte VNICs, VNIC-IDs

  • Instanz-CIDR-Blöcke

Im Allgemeinen enthalten die IMDS-Instanzmetadaten die folgenden Informationen:

  • Dieselben Informationen werden auf der Detailseite einer Instanz in der Konsole und in der Ausgabe der Instanz-CLI get angezeigt.

  • Benutzerdefinierte Informationen, die Sie mit den Optionen --metadata, --extended-metadata, --ssh-authorized-keys-file und --user-data-file des Befehls launch der Instanz zu einer Instanz hinzufügen. Diese Metadaten können nach dem Instanzstart nicht aktualisiert werden. Bei einem Benutzer, der bei der Instanz angemeldet ist, sind die Instanzmetadaten schreibgeschützt.

Auf IMDS Version 2-Endpunkte upgraden

Der Instanzmetadatenservice ist in zwei Versionen verfügbar: Version 1 und Version 2.

Wichtig

Um die Sicherheit von Metadatenanforderungen zu erhöhen, führen Sie ein Upgrade aller Anwendungen durch, um die IMDS-Endpunkte der Version 2 zu verwenden, sofern dies vom Image unterstützt wird. Deaktivieren Sie dann die Verwendung von IMDS-Endpunkten der Version 1.

IMDS-Endpunkte der Version 2 (IMDSv2) werden auf den Oracle Linux-Images unterstützt, die in der Gastbetriebssystemmatrix aufgeführt sind. Andere Plattformimages und die meisten anderen Images unterstützen IMDSv2 nicht.

Führen Sie für jede Instanz die folgenden Schritte aus, um ein Upgrade auf IMDSv2 durchzuführen:

  1. Identifizieren Sie Anwendungen, die IMDSv1-Anforderungen ausführen.

    Beispiel: cloud-init stellt Anforderungen an Instanzendpunkte des Typs /v#.

  2. Migrieren Sie die identifizierten Anwendungen, um IMDSv2-Endpunkte zu unterstützen.

    Wenn Sie /v2-Endpunkte verwenden, müssen Sie den Header "Autorisierung: Bearer Oracle" einschließen. Siehe die Beispiele unter IMDS-Instanzmetadaten abrufen.

  3. Deaktivieren Sie IMDSv1-Endpunkte.

    Führen Sie einen der folgenden Schritte aus, wie unter Instanzen erstellen beschrieben.

    • Prüfen Sie auf der Detailseite einer Instanz unter "Instanzdetails" den Wert der Legacy Instance Metadata Service-Endpunkte. Wenn der Wert von Legacy Instance Metadata Service-Endpunkten aktiviert ist, wählen Sie im Menü "Steuerelemente" die Option "Bearbeiten", und aktivieren Sie das Kontrollkästchen für Legacy Instance Metadata Service-Endpunkte deaktiviert.

    • Prüfen Sie in der Ausgabe von instance list oder instance get unter instance-options den Wert von are-legacy-imds-endpoints-disabled. Wenn der Wert von are-legacy-imds-endpoints-disabled null oder false lautet, geben Sie mit dem Befehl instance update die folgende Option an:

      --instance-options '{"areLegacyImdsEndpointsDisabled": true}'

    Zukünftige Anforderungen an Legacy-Endpunkte (v1) werden mit einem Fehler "404 nicht gefunden" abgelehnt.

IMDS-Instanzmetadaten werden abgerufen

So rufen Sie die IMDS-Instanzmetadaten ab:

  1. Melden Sie sich bei der Instanz an.

  2. Verwenden Sie einen cURL-Befehl, um die Metadateninformationen vom HTTP-Endpunkt abzurufen.

    Informationen werden über einen HTTP-Endpunkt bereitgestellt, der auf 169.254.169.254 horcht. Wenn eine Instanz über mehrere VNICs verfügt, müssen Sie die Anforderung mit der primären VNIC senden.

    Verwenden Sie den Befehl instance, um die Instanzmetadaten abzurufen. Verwenden Sie den Befehl vnics, um die VNIC-Daten abzurufen.

    Wenn Sie /v2-Endpunkte verwenden, wie in den folgenden Beispielen gezeigt, müssen Sie den Header "Autorisierung: Bearer Oracle" einfügen.

    Beispiel: Instanzmetadaten

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/
    {
        "availabilityDomain": "AD-1",
        "faultDomain": "FAULT-DOMAIN-1",
        "compartmentId": "ocid1.compartment.unique_ID",
        "displayName": "dev1",
        "hostname": "hostname",
        "id": "ocid1.instance.unique_ID",
        "image": "ocid1.image.unique_ID",
        "metadata": {
            "ssh_authorized_keys": "public_SSH_key"
        },
        "region": "PCA",
        "canonicalRegionName": "PCA",
        "ociAdName": "PCA",
        "regionInfo": null,
        "shape": "VM.PCAStandard.E5.Flex",
        "state": "RUNNING",
        "timeCreated": 1634943279000,
        "agentConfig": null
    }

    Um einen einzelnen Wert abzurufen, geben Sie den Schlüsselnamen wie im folgenden Beispiel dargestellt an.

    Beispiel: VNIC-Metadaten

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/vnics/
    [
        {
            "vnicId": "ocid1.vnic.unique_ID",
            "privateIp": "privateIp",
            "vlanTag": 0,
            "macAddr": "00:13:97:9f:16:32",
            "virtualRouterIp": "virtualRouterIp",
            "subnetCidrBlock": "subnetCidrBlock"
        }
    ]

    Sie können alle Daten für eine von mehreren VNICs anzeigen, indem Sie den Arrayindex für diese VNIC-Daten angeben. Alternativ können Sie einen einzelnen Wert für die angegebene VNIC abrufen:

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/vnics/0/privateIp
    privateIp