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.
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 Befehlslaunch
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.
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:
-
Identifizieren Sie Anwendungen, die IMDSv1-Anforderungen ausführen.
Beispiel:
cloud-init
stellt Anforderungen an Instanzendpunkte des Typs/v#
. -
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. -
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
oderinstance get
unterinstance-options
den Wert vonare-legacy-imds-endpoints-disabled
. Wenn der Wert vonare-legacy-imds-endpoints-disabled
null
oderfalse
lautet, geben Sie mit dem Befehlinstance 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:
-
Melden Sie sich bei der Instanz an.
-
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 Befehlvnics
, 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