Acceda y configure el Servicio de metadatos de instancias (IMDS) en Lightsail - Amazon Lightsail

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acceda y configure el Servicio de metadatos de instancias (IMDS) en Lightsail

Para acceder a los metadatos de instancia desde una instancia en ejecución, puede usar uno de los métodos siguientes:

  • Servicio de metadatos de instancia, versión 1 (IMDSv1): un método de solicitud y respuesta

  • Servicio de metadatos de instancia, versión 2 (IMDSv2): un método orientado a la sesión

    importante

    No todos los planos de instancia de Lightsail son compatibles con IMDSv2. Use la métrica de instancia MetadataNoToken para realizar un seguimiento del número de llamadas al servicio de metadatos de instancia que usa IMDSv1. Para obtener más información, consulte Visualización de métricas de instancia.

De forma predeterminada, puede usar IMDSv1 o IMDSv2, o ambos. El servicio de metadatos de instancias distingue entre solicitudes de IMDSv1 y IMDSv2 en función de si los encabezados PUT o GET, que son exclusivos de IMDSv2, están presentes en una solicitud determinada. Para obtener más información, consulte Agregar defensa en profundidad contra firewalls abiertos, proxies inversos y vulnerabilidades SSRF con mejoras en el servicio de metadatos de instancias EC2.

Puede configurar el servicio de metadatos de la instancia en cada instancia para que el código local o los usuarios deban usar IMDSv2. Si especifica que debe usarse IMDSv2, IMDSv1 dejará de funcionar. Para obtener más información, consulte Configuración de las opciones de metadatos de instancias en la Guía del usuario de Amazon Elastic Compute Cloud para instancias de Linux.

Para recuperar metadatos de instancias, consulte Recuperar metadatos de instancias en la Guía del usuario de Amazon Elastic Compute Cloud para instancias de Linux.

nota

En los ejemplos de esta sección, se utiliza la dirección IPv4 del servicio de metadatos de instancia: 169.254.169.254. Si recupera metadatos de instancia para las instancias a través de la dirección IPv6, asegúrese de habilitar y usar la dirección IPv6 en su lugar: fd00:ec2::254. La dirección IPv6 del servicio de metadatos de instancia es compatible con los comandos IMDSv2.

Funcionamiento de Servicio de metadatos de instancia, versión 2

IMDSv2 usa las solicitudes orientadas a la sesión. Las solicitudes orientadas a la sesión permiten crear un token de sesión que define la duración de la sesión, que puede ser de mínimo un segundo a un máximo de seis horas. En esa duración, puede utilizar el mismo token de sesión para solicitudes subsiguientes. Cuando la duración llegue a su fin, deberá crear un token de sesión nuevo para utilizarlo en las solicitudes futuras.

importante

Las instancias de Lightsail lanzadas desde Amazon Linux 2023 tendrán IMDSv2 configurado de forma predeterminada.

En los siguientes ejemplos, se utilizan Linux, PowerShell shell script e IMDSv2 para recuperar los elementos de metadatos de la instancia de nivel superior. Estos ejemplos realizan lo siguiente:

  • Crear un token de sesión que dura seis horas (21 600 segundos) con la solicitud PUT

  • Almacenar el encabezado del token de sesión en una variable denominada TOKEN (en Linux) o token (en Windows)

  • Solicitar los elementos de metadatos de nivel superior con el token

Primero, ejecute los siguientes comandos:

  • En Linux:

    • Primero, genere un token con el siguiente comando.

      [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
    • A continuación, use el token para generar elementos de metadatos de nivel superior mediante el siguiente comando.

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

    • Primero, genere un token con el siguiente comando.

      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
    • A continuación, use el token para generar elementos de metadatos de nivel superior mediante el siguiente comando.

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

Después de crear un token, puede volverlo a usar hasta que caduque. En los ejemplos siguientes, cada comando obtiene el ID del esquema (Imagen de máquina de Amazon (AMI)) que se usa para lanzar la instancia. Se vuelve a usar el token del ejemplo anterior. Se almacena en $TOKEN (en Linux) o $token (en Windows).

  • En Linux:

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

Al utilizar IMDSv2 para solicitar metadatos de instancia, la solicitud debe incluir lo siguiente:

  • Una solicitud PUT: use una solicitud PUT para iniciar una sesión en el servicio de metadatos de instancias. La solicitud PUT devuelve un token que debe incluirse en las solicitudes GET subsiguientes del servicio de metadatos de instancia. El token debe acceder a los metadatos al usar IMDSv2.

  • El token: incluya el token en todas las solicitudes GET del servicio de metadatos de instancias. Cuando el uso del token se establece en required, las solicitudes sin un token válido o con un token que ha vencido reciben un código de error HTTP 401 - Unauthorized. Para obtener información sobre cómo cambiar los requisitos de uso del token, consulta la AWS CLI Referencia de update-instance-metadata-optionscomandos.

    • El token es una clave específica de la instancia. El token no es válido en otras instancias y se rechazará si intenta usarlo fuera de la instancia en la que se generó.

    • La solicitud PUT debe incluir un encabezado que especifique el tiempo de vida (TTL) del token en segundos. El TTL puede especificarse en un máximo de seis horas (21 600 segundos). El token representa una sesión lógica. El TTL especifica el período de tiempo que es válido el token y, en consecuencia, la duración de la sesión.

    • Cuando un token caduca, para poder seguir accediendo a los metadatos de instancia hay que crear una sesión nueva con otra solicitud PUT.

    • Puede elegir entre volver a utilizar un token o crear uno nuevo con cada solicitud. Si hay un número pequeño de solicitudes, puede ser más sencillo generar y usar inmediatamente un token cada vez que necesite acceder al servicio de metadatos de instancias. Pero para ser más eficientes, puede especificar una duración más larga para el token y volver a usarlo en vez de escribir una solicitud PUT cada vez que tenga que solicitar metadatos de instancia. No existe ningún límite práctico sobre la cantidad de tokens simultáneos, que representen cada uno a su propia sesión. Sin embargo, IMDSv2 sigue limitado por la conexión normal del servicio de metadatos de instancia y la limitación controlada. Para obtener más información, consulte Limitación de consultas en la Guía del usuario de Amazon Elastic Compute Cloud para instancias de Linux.

Los métodos HTTP GET y HEAD están permitidos en las solicitudes de metadatos de instancias IMDSv2. Las solicitudes PUT se rechazan si contienen un encabezado X-Forwarded-For.

De forma predeterminada, la respuesta a las solicitudes PUT tiene un límite de saltos de respuesta (tiempo de vida) de 1 en el nivel del protocolo IP. Puede ajustar el límite de saltos con el comando update-instance-metadata-options si tiene que ampliarlo. Por ejemplo, puede necesitar un límite de saltos mayor para una compatibilidad con versiones anteriores con servicios de contenedor ejecutándose en la instancia. Para obtener más información, consulte update-instance-metadata-optionsla Referencia de AWS CLI comandos.

Transición al uso de Servicio de metadatos de instancia, versión 2

El uso del servicio de metadatos de instancia en la versión 2 (IMDSv2) es opcional. El servicio de metadatos de instancia en la versión 1 (IMDSv1) seguirá siendo compatible de forma indefinida. Si elige migrar para usar IMDSv2, le recomendamos que utilice las herramientas y la ruta de transición siguientes.

Herramientas para ayudar en la transición a IMDSv2

Si el software usa IMDSv1, utilice las siguientes herramientas a la hora de configurar el software para que use IMDSv2.

  • AWS software: las versiones más recientes de los AWS SDK y las AWS CLI compatibles con IMDSv2. Para usar IMDSv2, asegúrate de que tus instancias tengan las versiones más recientes de los SDK y del. AWS AWS CLIPara obtener información sobre cómo actualizar el AWS CLI, consulte Instalación, actualización y desinstalación del AWS CLI en la Guía del usuario.AWS Command Line Interface Todos los paquetes de software de Amazon Linux 2 son compatibles con IMDSv2.

  • Métrica de instancias: IMDSv2 usa sesiones respaldadas por tokens, mientras que IMDSv1 no. La métrica de instancias MetadataNoToken realiza un seguimiento del número de llamadas al servicio de metadatos de instancias que usan IMDSv1. Al seguir esta métrica hasta cero, puede determinar si y cuándo se ha actualizado el software para utilizar IMDSv2. Para obtener más información, consulte Visualización de métricas de instancias en Amazon Lightsail.

  • Actualizaciones de las operaciones AWS CLI y comandos de la API de Lightsail: en el caso de las instancias existentes, puede usar update-instance-metadata-options AWS CLI el comando (o la operación de UpdateInstanceMetadataOptionsla API) para requerir el uso de IMDSv2. El siguiente comando es un ejemplo. Asegúrese de InstanceNamereemplazarlo por el nombre de la instancia y por el nombre en el que se RegionNameencuentra la Región de AWS instancia.

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

Ruta recomendada para exigir el acceso a IMDSv2

Si se usan las herramientas anteriores, recomendamos que siga esta ruta para pasar a IMDSv2:

Paso 1: Al principio

Actualiza los AWS SDK AWS CLI, el software y el software que usa las credenciales de rol en tus instancias a versiones compatibles con IMDSv2. Para obtener información sobre cómo actualizar el AWS CLI, consulte Actualización a la versión más reciente de en la Guía del AWS CLI usuario.AWS Command Line Interface

A continuación, cambie el software que accede directamente a los metadatos de la instancia (es decir, que no utiliza un AWS SDK) mediante las solicitudes de IMDSv2.

Paso 2: Durante la transición

Realice un seguimiento del progreso de la transición mediante la métrica de instancia MetadataNoToken. Esta métrica muestra el número de llamadas al servicio de metadatos de instancia que están utilizando IMDSv1 en las instancias. Para obtener más información, consulte Visualización de métricas de instancia.

Paso 3: Cuando todo esté listo en todas las instancias

Todo está listo en todas las instancias cuando la métrica de instancias MetadataNoToken muestra un uso de IMDSv1 igual a cero. En esta etapa, puede requerir el uso de IMDSv2 mediante el comando. update-instance-metadata-options Puede hacer estos cambios en instancias en ejecución. No es necesario que reinicie las instancias.

La actualización de las opciones de metadatos de las instancias existentes solo está disponible a través de la API de Lightsail o la. AWS CLI Actualmente no está disponible en la consola Lightsail. Para obtener más información, consulte. update-instance-metadata-options

Documentación IMDS adicional

La siguiente documentación de IMDS está disponible en la Guía del usuario de Amazon Elastic Compute Cloud para instancias de Linux y la Guía del usuario de Amazon Elastic Compute Cloud para instancias de Windows:

nota

En Amazon EC2, los esquemas de instancias se denominan imágenes de máquina de Amazon (AMI).