Accédez au service de métadonnées d'instance (IMDS) et configurez-le sur Lightsail - Amazon Lightsail

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Accédez au service de métadonnées d'instance (IMDS) et configurez-le sur Lightsail

Vous pouvez accéder aux métadonnées d'instance à partir d'une instance en cours d'exécution en utilisant l'une des méthodes suivantes :

  • Service des métadonnées d’instance Version 1 (IMDSv1) – méthode de demande/réponse

  • Service des métadonnées d’instance Version 2 (IMDSv2) – méthode orientée session

    Important

    Les plans d'instance de Lightsail ne sont pas tous compatibles avec IMDSv2. Utilisez la métrique CloudWatch MetadataNoToken pour suivre le nombre d'appels au service de métadonnées d'instance qui utilisent IMDSv1. Pour plus d'informations, veuillez consulter Affichage des métriques d'instance.

Par défaut, vous pouvez utiliser IMDSv1 ou IMDSv2, ou les deux. Le service des métadonnées d'instance fait la distinction entre les demandes IMDSv1 et IMDSv2 pour une demande donnée en déterminant si les en-têtes PUT ou GET, qui sont propres à IMDSv2, sont présents dans toute demande. Pour plus d'informations, consultez Add defense in depth against open firewalls, reverse proxies, and SSRF vulnerabilities with enhancements to the EC2 Instance Metadata Service (Ajoutez une défense en profondeur contre les pare-feu ouverts, les proxy inversés et les vulnérabilités SSRF avec des améliorations apportées au service de métadonnées d'instance EC2).

Vous pouvez configurer le service des métadonnées d'instance sur chaque instance afin que le code local ou les utilisateurs doivent utiliser IMDSv2. Lorsque vous spécifiez que IMDSv2 doit être utilisé, IMDSv1 ne fonctionne plus. Pour plus d'informations, veuillez consulter Configurer les options de métadonnées d'instance dans le Guide de l'utilisateur Amazon Elastic Compute Cloud pour les instances Linux.

Pour savoir comment récupérer des métadonnées d'instance, reportez-vous à la partie Récupérer les métadonnées d'instance dans le Guide de l'utilisateur Amazon Elastic Compute Cloud pour les instances Linux.

Note

Les exemples de cette section utilisent l'adresse IPv4 du service de métadonnées d'instance : 169.254.169.254. Si vous récupérez des métadonnées d'instance pour les instances sur l'adresse IPv6, assurez-vous d'activer et d'utiliser l'adresse IPv6 à la place : fd00:ec2::254. L'adresse IPv6 du service de métadonnées d'instance est compatible avec les commandes IMDSv2.

Fonctionnement de Service des métadonnées d'instance Version 2

IMDSv2 utilise des demandes orientées session. Lorsque vous utilisez des demandes orientées session, vous créez un jeton de session qui définit la durée de la session, qui doit être d’une seconde au minimum et de six heures au maximum. Durant la période spécifiée, vous pouvez utiliser le même jeton de session pour les demandes suivantes. Une fois la période spécifiée arrivée à expiration, vous devez créer un nouveau jeton de session à utiliser pour les futures demandes.

Important

IMDSv2 sera configuré par défaut pour les instances Lightsail lancées depuis Amazon Linux 2023.

Les exemples suivants utilisent Linux, un script PowerShell shell et IMDSv2 pour récupérer les éléments de métadonnées de l'instance de niveau supérieur. Ces exemples procèdent comme suit :

  • Créez un jeton de session d'une durée de six heures (21 600 secondes) en utilisant la requête PUT.

  • Stockez l'en-tête du jeton de session dans une variable nommée TOKEN (sous Linux) ou token (sous Windows).

  • Demandez les éléments de métadonnées de haut niveau à l'aide du jeton.

Commencez par exécute les commandes suivantes :

  • Sous Linux :

    • Tout d'abord, générez un jeton à l'aide de la commande suivante.

      [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
    • Utilisez ensuite le jeton pour générer des éléments de métadonnées de niveau supérieur à l'aide de la commande suivante.

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

    • Tout d'abord, générez un jeton à l'aide de la commande suivante.

      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
    • Utilisez ensuite le jeton pour générer des éléments de métadonnées de niveau supérieur à l'aide de la commande suivante.

      PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/

Une fois que vous avez créé un jeton, vous pouvez le réutiliser jusqu'à son expiration. Dans les exemples suivants, chaque commande obtient l'ID du plan (Amazon Machine Image (AMI)) utilisé pour lancer l'instance. Le jeton de l'exemple précédent est réutilisé. Il est stocké dans $TOKEN (sous Linux) ou $token (sous Windows).

  • Sous Linux :

    [ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/ami-id
  • Sous 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

Lorsque vous utilisez IMDSv2 pour demander les métadonnées d’une instance, la demande doit inclure les éléments suivants :

  • Une requête PUT : utilisez une requête PUT pour lancer une session sur le service des métadonnées d'instance. La demande PUT renvoie un jeton qui doit être inclus dans les demandes GET suivantes envoyées au service des métadonnées d’instance. Le jeton est obligatoire pour accéder aux métadonnées lorsque vous utilisez IMDSv2.

  • Le jeton : incluez le jeton dans toutes les requêtes GET envoyées au service des métadonnées d'instance. Lorsque l’utilisation de jeton est définie sur required, les demandes sans jeton valide ou contenant un jeton arrivé à expiration reçoivent un code d’erreur HTTP 401 - Unauthorized. Pour plus d'informations sur la modification de l'exigence d'utilisation des jetons, consultez update-instance-metadata-optionsla référence des AWS CLI commandes.

    • Le jeton est une clé propre à l’instance. Le jeton n'est pas valide sur les autres instances et sera rejeté si vous tentez de l'utiliser ailleurs que sur l'instance sur laquelle il a été généré.

    • La requête PUT doit inclure un en-tête spécifiant la durée time-to-live (TTL) du jeton, en secondes. La durée de vie (TTL) peut être spécifiée pour un maximum de six heures (21 600 secondes). Le jeton représente une session logique. La durée de vie (TTL) définit la durée de validité du jeton et, par conséquent, la durée de la session.

    • Une fois qu'un jeton est arrivé à expiration, pour pouvoir continuer à accéder aux métadonnées de l'instance, vous devez créer une nouvelle session en utilisant une autre requête PUT.

    • Vous pouvez choisir de réutiliser un jeton ou d'en créer un nouveau pour chaque demande. Pour un faible nombre de demandes, il peut être plus facile de générer et d'utiliser immédiatement un jeton chaque fois que vous avez besoin d'accéder au service des métadonnées d'instance. Cependant, pour une plus grande productivité, vous pouvez spécifier une durée plus longue pour le jeton et le réutiliser plutôt que de devoir écrire une requête PUT chaque fois que vous avez besoin de demander des métadonnées d'instance. Il n'existe pas de limite pratique au nombre de jetons simultanés, chacun représentant sa propre session. IMDSv2 est toutefois soumis aux limites normales de connexion du service des métadonnées d'instance. Pour plus d'informations, veuillez consulter Limitation des demandes dans le Guide de l'utilisateur Amazon Elastic Compute Cloud pour les instances Linux.

Les méthodes HTTP GET et HEAD sont autorisées dans les demandes de métadonnées d'instance IMDSv2 . Les requêtes PUT sont rejetées si elles contiennent un en-tête X-Forwarded-For.

Par défaut, la réponse aux demandes PUT possède une durée time-to-live (hop limit) de réponse de 1 au niveau du protocole IP. Si nécessaire, vous pouvez ajuster cette durée en utilisant la commande update-instance-metadata-options. Par exemple, vous pouvez avoir besoin d'une durée de vie (hop limit) plus élevée pour des raisons de compatibilité en amont avec les services de conteneur s'exécutant sur l'instance. Pour plus d'informations, consultez update-instance-metadata-optionsle manuel de référence des AWS CLI commandes.

Passer à l'utilisation de Service des métadonnées d'instance Version 2

L'utilisation du service de métadonnées d'instance version 2 (IMDSv2) est facultative. Instance Metadata Service Version 1 (IMDSv1) continuera d'être pris en charge sans limite dans le temps. Si vous choisissez d'effectuer la migration vers IMDSv2, nous vous recommandons d'utiliser les outils et le chemin de transition suivants.

Outils facilitant la migration vers IMDSv2

Si votre logiciel utilise IMDSv1, utilisez les outils suivants pour faciliter sa reconfiguration vers IMDSv2.

  • AWS logiciel : les dernières versions des AWS SDK et le AWS CLI support IMDSv2. Pour utiliser IMDSv2, assurez-vous que vos instances disposent des dernières versions des AWS SDK et du. AWS CLI Pour plus d'informations sur la mise à jour du AWS CLI, voir Installation, mise à jour et désinstallation du AWS CLI dans le guide de l'AWS Command Line Interface utilisateur. Tous les packages logiciels Amazon Linux 2 prennent en charge IMDSv2.

  • Métrique d'instance : IMDSv2 utilise des sessions basées sur un jeton, tandis que IMDSv1 ne le fait pas. La métrique d'instance MetadataNoToken suit le nombre d'appels au service de métadonnées d'instance qui utilisent IMDSv1. En suivant cette métrique jusqu’à zéro, vous pouvez déterminer si la totalité de votre logiciel a été mis à niveau vers IMDSv2 et le moment auquel cela se produit. Pour plus d'informations, consultez la section Affichage des métriques d'instance dans Amazon Lightsail.

  • Mises à jour des opérations AWS CLI et des commandes de l'API Lightsail : pour les instances existantes, vous pouvez utiliser update-instance-metadata-options AWS CLI la commande (ou l'opération d'API) pour exiger UpdateInstanceMetadataOptionsl'utilisation d'IMDSv2. Voici un exemple de commande. Assurez-vous de InstanceNameremplacer par le nom de votre instance et RegionNamepar le nom dans lequel se trouve Région AWS votre instance.

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

Chemin recommandé pour demander l'accès à IMDSv2

Nous vous recommandons, tout en utilisant les outils mentionnés précédemment, de suivre ce chemin pour la migration vers IMDSv2 :

Etape 1 : Au départ

Mettez à jour les AWS SDK AWS CLI, le et votre logiciel qui utilise les informations d'identification de rôle sur vos instances vers des versions compatibles avec IMDSv2. Pour plus d'informations sur la mise à jour du AWS CLI, reportez-vous à la section Mise à niveau vers la AWS CLI dernière version du Guide de AWS Command Line Interface l'utilisateur.

Modifiez ensuite votre logiciel qui accède directement aux métadonnées de l'instance (en d'autres termes, qui n'utilise pas de AWS SDK) en utilisant les requêtes IMDSv2.

Etape 2 : Pendant la transition

Suivez la progression de votre transition à l'aide de la métrique instance MetadataNoToken. Cette métrique indique le nombre d'appels au service de métadonnées d'instance qui utilisent IMDSv1 sur vos instances. Pour plus d'informations, veuillez consulter Affichage des métriques d'instance.

Etape 3 : Une fois que tout est prêt sur toutes les instances

Tout est prêt sur l'ensemble des instances lorsque la métrique d'instance MetadataNoToken enregistre une utilisation nulle de IMDSv1. À ce stade, vous pouvez exiger l'utilisation d'IMDSv2 via la update-instance-metadata-optionscommande. Vous pouvez effectuer ces modifications sur les instances en cours d'exécution. Il n'est pas nécessaire de redémarrer vos instances.

La mise à jour des options de métadonnées d'instance pour les instances existantes est uniquement disponible via l'API Lightsail ou le. AWS CLI Il n'est actuellement pas disponible dans la console Lightsail. Pour plus d'informations, consultez update-instance-metadata-options.

Documentation IMDS supplémentaire

La documentation IMDS suivante est disponible dans le Guide Amazon Elastic Compute Cloud pour les instances Linux et dans le Guide de l'utilisateur Amazon Elastic Compute Cloud pour les instances Windows :

Note

Dans Amazon EC2, les plans d'instance sont appelés Amazon Machine Image (AMI).