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) otoken
(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 solicitudPUT
para iniciar una sesión en el servicio de metadatos de instancias. La solicitudPUT
devuelve un token que debe incluirse en las solicitudesGET
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 enrequired
, las solicitudes sin un token válido o con un token que ha vencido reciben un código de error HTTP401 - 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
InstanceName
reemplazarlo por el nombre de la instancia y por el nombre en el que seRegionName
encuentra la Región de AWS instancia.aws lightsail update-instance-metadata-options --region
RegionName
--instance-nameInstanceName
--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).
-
En instancias de Linux:
-
En instancias de Windows: