Transición al uso de Servicio de metadatos de instancia, versión 2 - Amazon Elastic Compute Cloud

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étrica MetadataNoToken realiza 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étrica MetadataNoTokenRejected para 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 MetadataOptions para 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 ImdsSupport establecido en v2.0, por defecto, lanzarán las instancias que exigen IMDSv2. Amazon Linux 2023 está configurado con ImdsSupport = v2.0.

AMI nuevas: Utilice el comando CLI register-image para establecer el parámetro ImdsSupport en v2.0 al crear una AMI nueva.

AMI existentes: Utilice el comando CLI modify-image-attribute para establecer el parámetro ImdsSupport en v2.0 al 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:RoleDelivery con un valor 2.0 en 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 respuesta UnauthorizedOperation. 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 error UnauthorizedOperation.

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.

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.

  1. Cómo identificar las instancias que están configuradas para permitir IMDSv1 o IMDSv2:

    Amazon EC2 console
    1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

    2. En el panel de navegación, seleccione Instances (Instancias).

    3. Para ver solo las instancias configuradas para permitir IMDSv1 o IMDSv2, agregue el filtro IMDSv2 = optional.

    4. Como alternativa, para ver si IMDSv2 es opcional u obligatorio para todas las instancias, abra la ventana de Preferencias (icono de engranaje), active IMDSv2 y seleccione Confirmar. Esto agrega la columna IMDSv2 a la tabla de Instancias.

    AWS CLI

    Utilice el comando describe-instances y filtre por metadata-options.http-tokens = optional, de la siguiente manera:

    aws ec2 describe-instances --filters "Name=metadata-options.http-tokens,Values=optional" --query "Reservations[*].Instances[*].[InstanceId]" --output text
  2. 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.

  3. 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.

  1. Cómo configurar las instancias existentes para que requieran IMDSv2:

    Amazon EC2 console
    1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

    2. En el panel de navegación, seleccione Instances (Instancias).

    3. Seleccione la instancia.

    4. Elija Acciones, Configuración de la instancia y Modificar opciones de metadatos de instancia.

    5. En IMDSv2, seleccione Obligatorio.

    6. Seleccione Save.

    AWS CLI

    Utilice el comando de la CLI modify-instance-metadata-options para especificar que solo se debe utilizar 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.

  2. Cómo controlar los problemas después de deshabilitar IMDSv1:

    1. 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.

    2. Si la métrica MetadataNoTokenRejected registra las llamadas de IMDSv1 a una instancia que tiene problemas de software, esto indica que es necesario actualizar el software para poder utilizar IMDSv2.

  3. Cómo configurar las nuevas instancias para que requieran IMDSv2:

    Amazon EC2 console
    1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

    2. Siga estos pasos para lanzar una instancia.

    3. Amplíe Detalles avanzados y, en Versión de metadatos, seleccione Solo V2 (se requiere un token).

    4. En el panel Resumen, revise la configuración de la instancia y, a continuación, elija Iniciar instancia.

      Para obtener más información, consulte Configuración de la instancia en el momento de la inicialización.

    AWS CLI

    AWS CLI: use el comando run-instances y especifique que solo se requiere 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.

  1. Cómo establecer el nivel de cuenta predeterminado

    Amazon EC2 console
    1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

    2. En el panel de EC2, en Atributos de la cuenta, elija Protección y seguridad de datos.

    3. En Valores predeterminados de IMDS, seleccione Administrar.

    4. En Servicio de metadatos de instancia, seleccione Habilitado.

    5. En Versión de metadatos, elija Solo V2 (token obligatorio).

    6. Elija Actualizar.

    AWS CLI

    Utilice el comando de la CLI modify-instance-metadata-defaults y especifique --http-tokens required y --http-put-response-hop-limit 2.

    Para obtener más información, consulte Ajuste de IMDSv2 como valor predeterminado de la cuenta.

  2. 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.