Transición al uso de Servicio de metadatos de instancia, versión 2
Si desea configurar las instancias para que solo acepten las llamadas del servicio de metadatos de instancias versión 2 (IMDSv2), recomendamos que utilice las siguientes herramientas y la ruta de transición.
Herramientas para la transición a IMDSv2
Las siguientes herramientas permiten identificar, supervisar y administrar la transición del software del IMDSv1 al IMDSv2. Para obtener instrucciones sobre cómo utilizar estas herramientas, consulte Ruta recomendada para exigir IMDSv2.
- AWS Software de
-
Las últimas versiones de los SDK AWS CLI y AWS son compatibles con IMDSv2. Para utilizar IMDSv2, actualice las instancias de EC2 para hacer uso de las versiones más recientes. Para conocer las versiones mínimas del AWS SDK compatibles con IMDSv2, consulte Uso de un AWS SDK compatible.
Todos los paquetes de software de Amazon Linux 2 y Amazon Linux 2023 son compatibles con IMDSv2. Amazon Linux 2023 deshabilita IMDSv1 de forma predeterminada.
- Analizador de paquetes IMDS
-
El analizador de paquetes IMDS es una herramienta de código abierto que identifica y registra las llamadas de IMDSv1 durante la fase de arranque y las operaciones del tiempo de ejecución de la instancia. Con el análisis de estos registros, puede identificar con precisión el software que realiza las llamadas a IMDSv1 en las instancias y determinar qué se debe actualizar para que solo sea compatible con IMDSv2 en las instancias. Puede ejecutar IMDS Packet Analyzer desde una línea de comandos o instalarlo como un servicio. Para obtener más información, consulte AWS ImdsPacketAnalyzer
en GitHub. - CloudWatch
-
CloudWatch ofrece las dos siguientes métricas para supervisar las instancias:
MetadataNoToken: IMDSv2 utiliza sesiones respaldadas por tokens, mientras que IMDSv1 no. La métricaMetadataNoTokenrealiza un seguimiento del número de llamadas al servicio de metadatos de instancia (IMDS) que están utilizando IMDSv1. Al seguir esta métrica hasta cero, puede determinar si y cuándo se ha actualizado el software para utilizar IMDSv2.MetadataNoTokenRejected: Tras inhabilitar IMDSv1, puede usar la métricaMetadataNoTokenRejectedpara hacer un seguimiento del número de veces que se intentó y rechazó una llamada de IMDSv1. Al seguir esta métrica, puede determinar si es necesario actualizar el software para utilizar IMDSv2.Para obtener más información, consulte Métricas de la instancia.
- Lanzamiento de las API
-
Instancias nuevas: Utilice la API RunInstances para lanzar instancias nuevas que exijan el uso de IMDSv2. Para obtener más información, consulte Configurar las opciones de metadatos para instancias nuevas.
Instancias existentes: Utilice la API ModifyInstanceMetadataOptions para exigir el uso de IMDSv2 en las instancias existentes. Para obtener más información, consulte Configurar las opciones de metadatos para instancias existentes.
Instancias nuevas lanzadas por los grupos de Amazon EC2 Auto Scaling: Para requerir el uso de IMDSv2 en todas las instancias nuevas lanzadas por grupos de Amazon EC2 Auto Scaling, los grupos de Amazon EC2 Auto Scaling pueden utilizar una plantilla de lanzamiento o una configuración de lanzamiento. Al crear una plantilla de inicialización o crear una configuración de inicialización, debe configurar los parámetros
MetadataOptionspara requerir el uso de IMDSv2. El grupo de Amazon EC2 Auto Scaling lanza nuevas instancias con la nueva plantilla de lanzamiento o la configuración de lanzamiento, pero las instancias existentes no resultan afectadas.Instancias existentes en un grupo de Amazon EC2 Auto Scaling: Utilice la API ModifyInstanceMetadataOptions para exigir el uso de IMDSv2 en las instancias existentes o terminar las instancias, y el grupo de Amazon EC2 Auto Scaling lanzará nuevas instancias de sustitución con la configuración de las opciones de metadatos de la instancia definida en la plantilla de lanzamiento o en la configuración de lanzamiento.
- AMI de
-
Las AMI configuradas con el parámetro
ImdsSupportestablecido env2.0, por defecto, lanzarán las instancias que exigen IMDSv2. Amazon Linux 2023 está configurado conImdsSupport = v2.0.AMI nuevas: Utilice el comando CLI register-image para establecer el parámetro
ImdsSupportenv2.0al crear una AMI nueva.AMI existentes: Utilice el comando CLI modify-image-attribute para establecer el parámetro
ImdsSupportenv2.0al modificar una AMI existente.Para obtener más información, consulte Configuración de la AMI.
- Políticas de IAM y SCP
-
Puede utilizar una política de IAM o una política de control de servicio (SCP) AWS Organizations para controlar a los usuarios de IAM de la siguiente forma:
-
No se puede iniciar una instancia con la API RunInstances, a menos que la instancia esté configurada para usar IMDSv2.
-
No se puede modificar una instancia en ejecución mediante la API ModifyInstanceMetadataOptions para volver a habilitar IMDSv1.
La política de IAM o SCP debe contener las siguientes claves de condición de IAM:
-
ec2:MetadataHttpEndpoint -
ec2:MetadataHttpPutResponseHopLimit -
ec2:MetadataHttpTokens
Si un parámetro en la llamada API o CLI no coincide con el estado especificado en la política que contiene la clave de condición, la llamada API o CLI falla con una respuesta
UnauthorizedOperation.Además, puede elegir una capa de protección adicional para forzar el cambio de IMDSv1 a IMDSv2. En la capa de administración de acceso, en relación con las API que se han llamado con credenciales de rol de EC2, puede usar una clave de condición en políticas de IAM o políticas de control de servicios (SCP) de AWS Organizations. En específico, al usar la clave de condición de política
ec2:RoleDeliverycon un valor2.0en las políticas de IAM, las llamadas a la API realizadas con credenciales de rol de EC2 que se han obtenido de IMDSv1 recibirán la respuestaUnauthorizedOperation. Se puede conseguir lo mismo de forma más extensa si dicha condición la exige una SCP. De esta manera se logra que las credenciales proporcionadas mediante IMDSv1 no se puedan usar para llamar a las API porque cualquier llamada a la API que no cumpla la condición especificada recibirá un errorUnauthorizedOperation.Para ver ejemplos de políticas de IAM, consulte Trabajar con metadatos de instancias. Para obtener más información sobre las SCP, consulte Políticas de control de servicios en la Guía del usuario de AWS Organizations.
-
- Políticas declarativas
-
Utilice las políticas declarativas (una característica de AWS Organizations) para configurar y aplicar de forma centralizada el IMDSv2 como la versión predeterminada del IMDS en la organización. Para ver un ejemplo de política, consulte la pestaña Valores predeterminados de los metadatos de las instancias en la sección Políticas declarativas compatibles de la Guía del usuario de AWS Organizations.
Ruta recomendada para exigir IMDSv2
Si se usan las herramientas anteriores, recomendamos la siguiente ruta para pasar a IMDSv2:
Paso 1: Identificar las instancias con IMDSv2=optional y auditar el uso de IMDSv1
Para evaluar el alcance de la migración a IMDSv2, identifique las instancias que estén configuradas para permitir IMDSv1 o IMDSv2 y audite las llamadas a IMDSv1.
-
Cómo identificar las instancias que están configuradas para permitir IMDSv1 o IMDSv2:
-
Cómo auditar las llamadas de IMDSv1 en cada instancia:
Utilice la métrica de CloudWatch
MetadataNoToken. Esta métrica muestra la cantidad de llamadas de IMDSv1 a IMDS de las instancias. Para obtener más información, consulte Métricas de instancia. -
Cómo identificar el software de las instancias que realizan llamadas a IMDSv1:
Utilice el analizador de paquetes IMDS
de código abierto para identificar y registrar las llamadas a IMDSv1 durante la fase de arranque y las operaciones de tiempo de ejecución de la instancia. Con esta información, puede identificar el software que se va a actualizar para que las instancias estén listas para utilizarse únicamente con IMDSv2. Puede ejecutar IMDS Packet Analyzer desde una línea de comandos o instalarlo como un servicio.
Paso 2: Actualizar el software a IMDSv2
Actualice todos los SDK, las CLI y el software que usen credenciales de rol en sus instancias a las versiones compatibles con IMDSv2. Para obtener más información sobre la actualización de la CLI, consulte Instalación o actualización a la versión más reciente de la AWS CLI en la Guía del usuario de AWS Command Line Interface.
Paso 3: Requerir IMDSv2 en las instancias
Tras confirmar que no hubo llamadas de IMDSv1 mediante la métrica MetadataNoToken, configure las instancias existentes para que requieran IMDSv2. Además, configure todas las instancias nuevas para que requieran IMDSv2. Es decir, deshabilite IMDSv1 en todas las instancias nuevas y existentes.
-
Cómo configurar las instancias existentes para que requieran IMDSv2:
nota
Modifique esta configuración en las instancias en ejecución. El cambio se aplica de inmediato sin necesidad de reiniciar la instancia.
Para obtener más información, consulte Requerir el uso de IMDSv2.
-
Cómo controlar los problemas después de deshabilitar IMDSv1:
-
Realice un seguimiento del número de veces que se intentó realizar una llamada de IMDSv1 y se rechazó con la métrica de CloudWatch
MetadataNoTokenRejected. -
Si la métrica
MetadataNoTokenRejectedregistra las llamadas de IMDSv1 a una instancia que tiene problemas de software, esto indica que es necesario actualizar el software para poder utilizar IMDSv2.
-
-
Cómo configurar las nuevas instancias para que requieran IMDSv2:
Paso 4: Establecer IMDSv2=required como predeterminado
Estableza IMDSv2=required como configuración predeterminada a nivel de cuenta o de organización. Esto garantiza que todas las instancias recién lanzadas se configuren automáticamente para que requieran IMDSv2.
-
Cómo establecer el nivel de cuenta predeterminado
Para obtener más información, consulte Ajuste de IMDSv2 como valor predeterminado de la cuenta.
-
Como alternativa, establezca los valores predeterminados a nivel de organización mediante una política declarativa:
Utilice una política declarativa para establecer como obligatorio el valor predeterminado de la organización para IMDSv2. Para ver un ejemplo de política, consulte la pestaña Valores predeterminados de los metadatos de las instancias en la sección Políticas declarativas compatibles de la Guía del usuario de AWS Organizations.
Paso 5: Aplicar las instancias que requieran IMDSv2
Utilice las siguientes claves de condición de IAM o SCP para imponer el uso de IMDSv2:
-
ec2:MetadataHttpTokens -
ec2:MetadataHttpPutResponseHopLimit -
ec2:MetadataHttpEndpoint
Estas claves de condición controlan el uso de las API RunInstances y ModifyInstanceMetadataOptions, así como las CLI correspondientes. Si se crea una política y un parámetro en la llamada a la API no coincide con el estado especificado en la política que usa la clave de condición, la llamada a la API o a la CLI devolverá una respuesta de error UnauthorizedOperation.
Para ver ejemplos de políticas de IAM, consulte Trabajar con metadatos de instancias.