Zugriff auf und Konfiguration des Instance Metadata Service (IMDS) auf Lightsail - Amazon Lightsail

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.

Zugriff auf und Konfiguration des Instance Metadata Service (IMDS) auf Lightsail

Sie können mit einer der folgenden Methoden auf Instance-Metadaten aus einer laufenden Instance zugreifen:

  • Instance-Metadatenservice Version 1 (IMDSv1) – Ein Anfrage/Antwort-Verfahren

  • Instance-Metadatenservice Version 2 (IMDSv2) – Ein sitzungsorientiertes Verfahren

    Wichtig

    Nicht alle Instanz-Blueprints in Lightsail unterstützen IMDSv2. Verwenden Sie die MetadataNoToken-Instance-Metrik, um die Anzahl der Aufrufe an den Instance-Metadaten-Service, die IMDSv1 verwenden, zu verfolgen. Weitere Informationen finden Sie unter Anzeigen von Instance-Metriken.

Standardmäßig können Sie entweder IMDSv1 oder IMDSv2 oder beides verwenden. Der Instance Metadata Service unterscheidet zwischen IMDSv1- und IMDSv2-Anfragen, je nachdem, ob bei einer bestimmten Anfrage entweder der PUT- oder GET-Header (der für IMDSv2 eindeutig ist) vorhanden ist. Weitere Informationen 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.

Sie können den Instance-Metadaten-Service auf jeder Instance so konfigurieren, dass lokaler Code oder Benutzer IMDSv2 verwenden müssen. Wenn Sie angeben, dass IMDSv2 verwendet werden muss, funktioniert IMDSv1 nicht mehr. Weitere Informationen finden Sie unter Konfigurieren des Instance Metadata Service im Benutzerhandbuch für Amazon Elastic Compute Cloud für Linux-Instances.

Informationen zum Abrufen von Instance-Metadaten finden Sie unter Instance-Metadaten abrufen im Benutzerhandbuch für Amazon Elastic Compute Cloud für Linux-Instances.

Anmerkung

In den Beispielen in diesem Abschnitt wird die IPv4-Adresse des Instance-Metadaten-Service verwendet: 169.254.169.254. Wenn Sie Instance-Metadaten für Instances über die IPv6-Adresse abrufen, stellen Sie sicher, dass Sie stattdessen die IPv6-Adresse aktivieren und verwenden: fd00:ec2::254. Die IPv6-Adresse des Instance-Metadatendienstes ist mit IMDSv2-Befehlen kompatibel.

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.

Wichtig

Lightsail Lightsail-Instances, die von Amazon Linux 2023 aus gestartet werden, ist IMDSv2 standardmäßig konfiguriert.

In den folgenden Beispielen werden Linux und PowerShell Shell-Skript sowie IMDSv2 verwendet, um die Metadatenelemente der Instanz auf oberster Ebene abzurufen. Diese Beispiele machen Folgendes:

  • Erstellen 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 (unter Linux) oder token (unter Windows)

  • Fordern die Top-Level-Metadatenelemente über das Token an

Führen Sie zunächst die folgenden Befehle aus:

  • Unter Linux:

    • 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 Top-Level-Metadatenelemente zu generieren.

      [ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/
  • Unter Windows:

    • Generieren Sie zuerst ein Token mit dem folgenden Befehl.

      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
    • Verwenden Sie dann das Token, um mit dem folgenden Befehl Top-Level-Metadatenelemente zu generieren.

      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. In den folgenden Beispielen ruft jeder Befehl die ID des Blueprints (Amazon Machine Image (AMI)) ab, der zum Starten der Instance verwendet wird. Das Token aus dem vorherigen Beispiel wird wiederverwendet. Es ist in $TOKEN (unter Linux) oder $token (unter Windows) gespeichert.

  • Unter Linux:

    [ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/ami-id
  • Unter Windows:

    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:

  • Eine PUT-Anfrage – Verwenden Sie eine PUT-Anfrage, um eine Sitzung mit dem Instance Metadata Service zu starten. Die PUT-Anfrage gibt ein Token zurück, das in nachfolgenden GET-Anfragen an den Instance-Metadaten-Service enthalten sein muss. Das Token wird für den Zugriff auf Metadaten mit IMDSv2 benötigt.

  • Das Token – Nehmen Sie das Token in alle GET-Anfragen an den Instance Metadata Service auf. Wenn die Token-Verwendung auf required festgelegt ist, erhalten Anfragen ohne gültiges Token oder mit abgelaufenem Token einen 401 - Unauthorized-HTTP-Fehlercode. Informationen zum Ändern der Anforderungen für die Token-Nutzung finden Sie update-instance-metadata-optionsin der AWS CLI Befehlsreferenz.

    • Das Token ist ein Instance-bezogener Schlüssel. Das Token ist in anderen 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 angibt. Die TTL kann auf maximal sechs Stunden (21.600 Sekunden) festgelegt werden. 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 einer anderen PUT-Anfrage erstellen, 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 Instance-Metadaten-Service 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 ist jedoch immer noch durch die normale Metadatenverbindung der Instance und die Drosselungsgrenzen eingeschränkt. Weitere Informationen dazu finden Sie unter Abfrage-Drosselung im Benutzerhandbuch für Amazon Elastic Compute Cloud für Linux-Instances.

In PUT-Instance-Metadatenanfragen sind HTTP GET- und HEAD-Methoden zulässig. -Anfragen 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. Sie können das Hop-Limit mit dem Befehl update-instance-metadata-options anpassen, wenn Sie ein größeres benötigen. 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 update-instance-metadata-optionsin der AWS CLI Befehlsreferenz.

Übergang zur Verwendung von Instance-Metadatenservice Version 2

Die Verwendung von Instance Metadata Service Version 2 (IMDSv2) ist optional. Instance-Metadatenservice Version 1 (IMDSv1) wird weiterhin auf unbestimmte Zeit unterstützt. Wenn Sie sich für die Migration zu IMDSv2 entscheiden, empfehlen wir Ihnen, die folgenden Tools und Wege zu verwenden.

Tools zur Unterstützung beim Wechsel zu IMDSv2

Wenn Ihre Software IMDSv1 verwendet, verwenden Sie die folgenden Tools, um Ihre Software für die Verwendung von IMDSv2 neu zu konfigurieren.

  • AWS Software: Die neuesten Versionen der AWS SDKs und die AWS CLI Unterstützung von IMDSv2. Um IMDSv2 zu verwenden, stellen Sie sicher, dass Ihre Instances über die neuesten Versionen der SDKs und der verfügen. AWS AWS CLIInformationen zur Aktualisierung von finden Sie unter Installation, Aktualisierung und Deinstallation von AWS CLI im Benutzerhandbuch. AWS CLIAWS Command Line Interface Alle Amazon-Linux-2-Softwarepakete unterstützen IMDSv2.

  • Instance-Metrik: IMDSv2 nutzt Token-gestützte Sitzungen, während IMDSv1 das nicht tut. Die MetadataNoToken-Instance-Metrik erfasst die Anzahl der Aufrufe des Instance-Metadatendienstes, die IMDSv1 verwenden. Indem Sie diese Metrik bis zum Wert Null nachverfolgen, können Sie feststellen, ob und wann Ihre Software auf IMDSv2 upgegradet wurde. Weitere Informationen finden Sie unter Instance-Metriken in Amazon Lightsail anzeigen.

  • Aktualisierungen der Lightsail-API-Operationen und AWS CLI -Befehle: Für bestehende Instances können Sie den update-instance-metadata-options AWS CLI Befehl (oder den UpdateInstanceMetadataOptionsAPI-Vorgang) verwenden, um die Verwendung von IMDSv2 vorzuschreiben. Nachfolgend finden Sie einen Beispielbefehl. Stellen Sie sicher, dass Sie ihn InstanceNamedurch den Namen Ihrer Instanz und durch den Namen ersetzen, in RegionNamedem sich AWS-Region Ihre Instanz befindet.

    aws lightsail update-instance-metadata-options --region RegionName --instance-name InstanceName --http-tokens required

Empfohlener Weg zur Erzwingung des IMDSv2-Zugriffs

Bei Verwendung der oben genannten Tools empfehlen wir Ihnen, diesem Pfad für den Wechsel zu IMDSv2 zu folgen:

Schritt 1: Zu Beginn

Aktualisieren Sie die AWS SDKs, die und Ihre Software AWS CLI, die Rollenanmeldedaten auf Ihren Instances verwendet, auf IMDSv2-kompatible Versionen. Informationen zur Aktualisierung von finden Sie AWS CLI unter Upgrade auf die neueste Version von im AWS CLI Benutzerhandbuch.AWS Command Line Interface

Ändern Sie dann mithilfe der IMDSv2-Anfragen Ihre Software, die direkt auf Instanz-Metadaten zugreift (mit anderen Worten, die kein AWS SDK verwendet).

Schritt 2: Während des Wechsels

Verfolgen Sie den Wechselfortschritt mithilfe der Instance-Metrik MetadataNoToken. Diese Metrik zeigt die Anzahl der Aufrufe des Instance-Metadatenservices an, die IMDSv1 für Ihre Instances verwenden. Weitere Informationen finden Sie unter Anzeigen von Instance-Metriken.

Schritt 3: Wenn alles auf allen Instances bereit ist

Alles ist auf allen Instances fertig, wenn die Instance-Metrik MetadataNoToken keine IMDSv1-Nutzung verzeichnet. In diesem Stadium können Sie die Verwendung von IMDSv2 über den Befehl vorschreiben. update-instance-metadata-options Sie können diese Änderungen an laufenden Instances vornehmen. Sie müssen Ihre Instances nicht neu starten.

Das Aktualisieren von Instanz-Metadatenoptionen für bestehende Instanzen ist nur über die Lightsail-API oder die verfügbar. AWS CLI Es ist derzeit nicht in der Lightsail-Konsole verfügbar. Weitere Informationen finden Sie unter. update-instance-metadata-options

Zusätzliche IMDS-Dokumentation

Die folgende IMDS-Dokumentation ist im Benutzerhandbuch der Amazon Elastic Compute Cloud für Linux-Instances und im Benutzerhandbuch der Amazon Elastic Compute Cloud für Windows-Instances verfügbar:

Anmerkung

In Amazon EC2 werden Instance-Vorlagen als Amazon Machine Images (AMI) bezeichnet.