Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Instance-Metadaten-Services für den Zugriff auf Instance-Metadaten verwenden
Sie können mit einer der folgenden Methoden auf Instance-Metadaten aus einer laufenden Instance zugreifen:
-
Instance-Metadatenservice Version 2 (IMDSv2) – Ein sitzungsorientiertes Verfahren
Beispiele finden Sie unter Beispiele für IMDSv2.
-
Instance Metadata Service Version 1 (IMDSv1) — eine Methode request/response
Beispiele finden Sie unter Beispiele für IMDSv1.
Standardmäßig können Sie entweder IMDSv1 oder IMDSv2 oder beides verwenden.
Sie können den Instance Metadata Service (IMDS) auf jeder Instanz so konfigurieren, dass er nur IMDSv2-Aufrufe akzeptiert, wodurch IMDSv1-Aufrufe fehlschlagen. Informationen darüber, wie Sie Ihre Instance für die Verwendung von IMDSv2 konfigurieren, finden Sie unter Konfigurieren der Optionen des Instance-Metadaten-Services.
Die PUT- oder GET-Header sind für IMDSv2 eindeutig. Wenn diese Header in der Anfrage vorhanden sind, ist die Anfrage für IMDSv2 bestimmt. Wenn keine Header vorhanden sind, wird davon ausgegangen, dass die Anfrage für IMDSv1 bestimmt ist.
Einen ausführlichen Überblick über IMDSv2 finden Sie unter Erweitern Sie den EC2-Instance-Metadata-Service, um Abwehr von offenen Firewalls, Reverse-Proxys und SSRF-Schwachstellen mit Verbesserungen an EC2-Instance-Metadata-Service
Themen
Funktionsweise von Instance-Metadatenservice Version 2
IMDSv2 verwendet sitzungsorientierte Anfragen. Bei sitzungsorientierten Anforderungen erstellen Sie ein Sitzungs-Token, das die Sitzungsdauer definiert, die mindestens eine Sekunde und maximal sechs Stunden betragen kann. Während der angegebenen Dauer können Sie dasselbe Sitzungs-Token für nachfolgende Anfragen verwenden. Nach Ablauf der angegebenen Dauer müssen Sie ein neues Sitzungs-Token erstellen, das Sie für zukünftige Anfragen verwenden können.
Anmerkung
In den Beispielen in diesem Abschnitt wird die IPv4-Adresse des Instance Metadata Service (IMDS) verwendet: 169.254.169.254. Wenn Sie Zeit Instance-Metadaten für EC2-Instances über die IPv6-Adresse abrufen, stellen Sie sicher, dass Sie stattdessen die IPv6-Adresse verwenden: [fd00:ec2::254]. Die IPv6-Adresse des IMDS ist mit IMDSv2-Befehlen kompatibel. Auf die IPv6-Adresse kann nur auf Nitro-based Instances in einem IPv6-supported Subnetz zugegriffen werden (Dual Stack oder nur IPv6).
Die folgenden Beispiele verwenden ein Shell-Skript und IMDSv2, um die Metadatenelemente der Top-Level-Instance abzurufen. Jedes Beispiel:
-
Erstellt ein Sitzungs-Token mit einer Dauer von sechs Stunden (21 600 Sekunden) unter Verwendung der
PUT-Anfrage. -
Speichern den Sitzungs-Token-Header in einer Variablen namens
TOKEN(Linux-Instances) odertoken(Windows-Instances) -
aFordert die Top-Level-Metadatenelemente über das Token an.
Sie können zwei separate Befehle ausführen oder kombinieren.
Separate Befehle
Generieren Sie zuerst ein Token mit dem folgenden Befehl.
[ec2-user ~]$TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
Verwenden Sie dann das Token, um mit dem folgenden Befehl Metadatenelemente der obersten Ebene zu generieren.
[ec2-user ~]$curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
Kombinierte Befehle
Sie können das Token speichern und die Befehle kombinieren. Das folgende Beispiel kombiniert die beiden obigen Befehle und speichert den Sitzungs-Token-Header in einer Variablen namens TOKEN.
Anmerkung
Wenn beim Erstellen des Tokens anstelle eines gültigen Tokens ein Fehler auftritt, wird in der Variablen eine Fehlermeldung gespeichert, und der Befehl funktioniert nicht.
[ec2-user ~]$TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
Nachdem Sie ein Token erstellt haben, können Sie es bis zum Ablauf wiederverwenden. Im folgenden Beispielbefehl, der die ID des AMIs abruft, mit dem die Instance gestartet wurde, wird das im vorherigen Beispiel in $TOKEN gespeicherte Token wiederverwendet.
[ec2-user ~]$curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ami-id
PS C:\>[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\>Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/
Nachdem Sie ein Token erstellt haben, können Sie es bis zum Ablauf wiederverwenden. Im folgenden Beispielbefehl, der die ID des AMIs abruft, mit dem die Instance gestartet wurde, wird das im vorherigen Beispiel in $token gespeicherte Token wiederverwendet.
PS C:\>Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} ` -Method GET -uri http://169.254.169.254/latest/meta-data/ami-id
Wenn Sie IMDSv2 zum Anfordern von Instance-Metadaten verwenden, muss die Anforderung Folgendes enthalten:
-
Verwenden Sie eine
PUT-Anfrage, um eine Sitzung mit dem Instance-Metadaten-Service zu starten. DiePUT-Anfrage gibt ein Token zurück, das in nachfolgendenGET-Anfragen an den Instance-Metadaten-Service enthalten sein muss. Das Token wird für den Zugriff auf Metadaten mit IMDSv2 benötigt. -
Nehmen Sie das Token
GETin alle Anfragen an den IMDS auf. Wenn die Token-Verwendung aufrequiredfestgelegt ist, erhalten Anfragen ohne gültiges Token oder mit abgelaufenem Token einen401 - Unauthorized-HTTP-Fehlercode.-
Das Token ist ein Instance-bezogener Schlüssel. Das Token ist in anderen EC2-Instances nicht gültig und wird abgelehnt, wenn Sie versuchen, es außerhalb der Instance zu verwenden, in der es erzeugt wurde.
-
Die
PUT-Anfrage muss einen Header enthalten, der die Time To Live (TTL) für das Token in Sekunden bis zu maximal sechs Stunden (21 600 Sekunden) angibt. Das Token stellt eine logische Sitzung dar. Die TTL gibt die Gültigkeitsdauer des Token und damit die Dauer der Sitzung an. -
Nachdem ein Token abgelaufen ist, müssen Sie eine neue Sitzung mit einem anderen
PUTerstellen, um auf die Instance-Metadaten zuzugreifen. -
Sie können auswählen, ob Sie ein Token wiederverwenden oder bei jeder Anforderung einen neues Token erstellen möchten. Für eine kleine Anzahl von Anfragen kann es einfacher sein, bei jedem Zugriff auf den IMDS ein Token zu generieren und sofort zu verwenden. Aus Effizienzgründen können Sie jedoch eine längere Dauer für das Token festlegen und es wiederverwenden, anstatt jedes Mal eine
PUT-Anfrage stellen zu müssen, wenn Sie Instance-Metadaten anfordern müssen. Es gibt keine praktische Begrenzung der Anzahl der gleichzeitigen Tokens, die jeweils eine eigene Sitzung darstellen. IMDSv2 unterliegt jedoch weiterhin den normalen IMDS-Verbindungs- und Drosselungsbeschränkungen. Weitere Informationen finden Sie unter Drosselung abfragen.
-
HTTP GET und HEAD Methoden sind in Metadatenanfragen von IMDSv2-Instanzen zulässig. PUTAnfragen werden abgelehnt, wenn sie einen X-Forwarded-For Header enthalten.
Standardmäßig hat die Antwort auf PUT-Anfragen auf IP-Protokollebene ein Antworthop-Limit (Time To Live) von 1. Wenn Sie ein größeres Hop-Limit benötigen, können Sie es mit dem Befehl https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html AWS CLI modify-instance-metadata-options anpassen. Beispielsweise benötigen Sie möglicherweise eine größeres Hop-Limit für die Abwärtskompatibilität mit Container-Services, die auf der Instance ausgeführt werden. Weitere Informationen finden Sie unter Modifizieren von Instance-Metadatenoptionen für vorhandene Instances.
Verwenden Sie ein unterstütztes AWS SDK
Um IMDSv2 verwenden zu können, müssen Ihre EC2-Instances eine AWS SDK-Version verwenden, die die Verwendung von IMDSv2 unterstützt. Die neuesten Versionen aller SDKs unterstützen die Verwendung von IMDSv2 AWS .
Wichtig
Wir empfehlen Ihnen, über die SDK-Versionen auf dem Laufenden zu bleiben, um über die neuesten Features, Sicherheitsupdates und zugrunde liegenden Abhängigkeiten informiert zu sein. Die fortgesetzte Verwendung einer nicht unterstützten SDK-Version wird nicht empfohlen und erfolgt nach Ihrem Ermessen. Weitere Informationen finden Sie in der Wartungsrichtlinie für AWS -SDKs und -Tools im AWS -Referenzhandbuch für SDKs und Tools.
Im Folgenden sind die Mindestversionen aufgeführt, die die Verwendung von IMDSv2 unterstützen:
-
AWS CLI
– 1.16.289 -
AWS Tools for Windows PowerShell
– 4.0.1.0 -
AWS SDK für .NET
– 3.3.634.1 -
AWS SDK für C++
– 1.7.229 -
AWS SDK für Go
– 1.25.38 -
AWS SDK für Java
– 1.11.678 -
AWS SDK for Java 2.x
– 2.10.21 -
AWS SDK für Kotlin
– 1,1.4 -
AWS SDK für PHP
– 3.147.7 -
AWS SDK für Python (Boto3)
– 1.12.6 -
AWS SDK für Ruby
– 3.79.0
Beispiele für IMDSv2
Führen Sie die folgenden Beispiele auf Ihrer Amazon-EC2-Instance aus, um die Instance-Metadaten für IMDSv2 abzurufen.
Auf Windows-Instanzen können Sie Windows verwenden oder Sie können cURL PowerShell oder wget installieren. Wenn Sie ein Drittanbieter-Tool in einer Windows-Instance installieren, sollten Sie die zugehörige Dokumentation unbedingt sorgfältig lesen; die Methode für die Aufrufe und die Ausgabe können von dieser Dokumentation abweichen.
Beispiele
Abrufen der verfügbaren Versionen der Instance-Metadaten
In diesem Beispiel werden die verfügbaren Versionen der Instance-Metadaten abgerufen. Jede Version bezieht sich auf einen Instance-Metadaten-Build, wenn neue Instance-Metadatenkategorien veröffentlicht wurden. Die Build-Versionen der Instance-Metadaten korrelieren nicht mit den Amazon-EC2-API-Versionen. Es stehen frühere Versionen zur Verfügung, für den Fall dass Skripte angewendet werden, die auf den Strukturen und Daten dieser früheren Versionen aufbauen.
Anfordern der Top-Level-Metadatenelemente
In diesem Beispiel werden die Metadaten-Elemente der obersten Ebene abgerufen. Weitere Informationen zu den einzelnen Punkten in der Antwort finden Sie unter Instance-Metadatenkategorien.
Beachten Sie, dass Tags nur dann in dieser Ausgabe enthalten sind, wenn Sie den Zugriff zugelassen haben. Weitere Informationen finden Sie unter Zugriff auf Tags in Instance-Metadaten ermöglichen.
Die Werte für Metadatenelemente abrufen
Die folgenden Beispiele zeigen die Werte einiger der Top-Level-Metadatenelemente, die im vorherigen Beispiel abgerufen wurden. Diese Anfragen verwenden das gespeicherte Token, das mit dem Befehl im vorherigen Beispiel erstellt wurde. Das Token darf nicht abgelaufen sein.
Abrufen der Liste der verfügbaren öffentlichen Schlüssel
In diesem Beispiel wird die Liste der verfügbaren öffentlichen Schlüssel abgerufen.
Anzeigen der Formate, in denen der öffentliche Schlüssel 0 verfügbar ist
In diesem Beispiel werden die Formate abgerufen, in denen der öffentliche Schlüssel 0 verfügbar ist.
Anfordern des öffentlichen Schlüssels 0 (im OpenSSH-Schlüsselformat)
In diesem Beispiel wird der öffentliche Schlüssel 0 abgerufen (im Format für OpenSSH-Schlüssel).
Anfordern der Subnetz-ID für eine Instance
In diesem Beispiel wird eine Subnetz-ID für eine Instance vergeben.
Abrufen von Instance-Tags für eine Instance
Wenn der Zugriff auf Instance-Tags in den Instance-Metadaten aktiviert ist, können Sie die Tags für eine Instance aus den Instance-Metadaten abrufen. Weitere Informationen finden Sie unter Abrufen von Tags aus Instance-Metadaten.
Beispiele für IMDSv1
Führen Sie die folgenden Beispiele auf Ihrer Amazon-EC2-Instance aus, um die Instance-Metadaten für IMDSv1 abzurufen.
Auf Windows-Instanzen können Sie Windows verwenden oder Sie können cURL PowerShell oder wget installieren. Wenn Sie ein Drittanbieter-Tool in einer Windows-Instance installieren, sollten Sie die zugehörige Dokumentation unbedingt sorgfältig lesen; die Methode für die Aufrufe und die Ausgabe können von dieser Dokumentation abweichen.
Beispiele
Abrufen der verfügbaren Versionen der Instance-Metadaten
In diesem Beispiel werden die verfügbaren Versionen der Instance-Metadaten abgerufen. Jede Version bezieht sich auf einen Instance-Metadaten-Build, wenn neue Instance-Metadatenkategorien veröffentlicht wurden. Die Build-Versionen der Instance-Metadaten korrelieren nicht mit den Amazon-EC2-API-Versionen. Es stehen frühere Versionen zur Verfügung, für den Fall dass Skripte angewendet werden, die auf den Strukturen und Daten dieser früheren Versionen aufbauen.
Anfordern der Top-Level-Metadatenelemente
In diesem Beispiel werden die Metadaten-Elemente der obersten Ebene abgerufen. Weitere Informationen zu den einzelnen Punkten in der Antwort finden Sie unter Instance-Metadatenkategorien.
Beachten Sie, dass Tags nur dann in dieser Ausgabe enthalten sind, wenn Sie den Zugriff zugelassen haben. Weitere Informationen finden Sie unter Zugriff auf Tags in Instance-Metadaten ermöglichen.
Die Werte für Metadatenelemente abrufen
Die folgenden Beispiele zeigen die Werte einiger der Top-Level-Metadatenelemente, die im vorherigen Beispiel abgerufen wurden.
Abrufen der Liste der verfügbaren öffentlichen Schlüssel
In diesem Beispiel wird die Liste der verfügbaren öffentlichen Schlüssel abgerufen.
Anzeigen der Formate, in denen der öffentliche Schlüssel 0 verfügbar ist
In diesem Beispiel werden die Formate abgerufen, in denen der öffentliche Schlüssel 0 verfügbar ist.
Anfordern des öffentlichen Schlüssels 0 (im OpenSSH-Schlüsselformat)
In diesem Beispiel wird der öffentliche Schlüssel 0 abgerufen (im Format für OpenSSH-Schlüssel).
Anfordern der Subnetz-ID für eine Instance
In diesem Beispiel wird eine Subnetz-ID für eine Instance vergeben.
Abrufen von Instance-Tags für eine Instance
Wenn der Zugriff auf Instance-Tags in den Instance-Metadaten aktiviert ist, können Sie die Tags für eine Instance aus den Instance-Metadaten abrufen. Weitere Informationen finden Sie unter Abrufen von Tags aus Instance-Metadaten.