Configurar las opciones de metadatos para instancias nuevas - Amazon Elastic Compute Cloud

Configurar las opciones de metadatos para instancias nuevas

Puede configurar las siguientes opciones de metadatos para nuevas instancias.

Requerir el uso de IMDSv2

Puede usar los siguientes métodos para exigir el uso de IMDSv2 en sus instancias nuevas.

Ajuste de IMDSv2 como valor predeterminado de la cuenta

Puede establecer el valor predeterminado del servicio de metadatos de instancias (IMDS) a nivel de cuenta para cada Región de AWS. Cuando se inicia una instancia nueva, la versión de metadatos de la instancia se configura automáticamente al valor a nivel de cuenta predeterminado. Sin embargo, puede anular el valor manualmente al iniciarla o después. Para obtener más información sobre cómo afectan a una instancia la configuración a nivel de cuenta y las anulaciones manuales, consulte Orden de prioridad para las opciones de metadatos de instancia

nota

Si se establece el valor predeterminado a nivel de cuenta, no se restablecen las instancias existentes. Por ejemplo, si establece el valor predeterminado a nivel de cuenta en IMDSv2, las instancias existentes que estén configuradas en IMDSv1 no se verán afectadas. Si desea cambiar el valor de las instancias existentes, debe cambiarlo manualmente en las propias instancias.

Puede establecer el valor predeterminado de la cuenta para la versión de metadatos de instancia en IMDSv2, de modo que todas las instancias nuevas de la cuenta se inicien con IMDSv2 obligatoriamente y, de esta forma, se deshabilita IMDSv1. Con esta cuenta predeterminada, cuando lance una instancia, los valores predeterminados de la instancia serán los siguientes:

  • Consola: la versión de metadatos se configura en V2 únicamente (token obligatorio) y el límite de saltos de respuesta de los metadatos se establece en 2.

  • AWS CLI: HttpTokens se configuran como required y HttpPutResponseHopLimit se configura en 2.

nota

Antes de establecer el valor predeterminado de la cuenta en IMDSv2, asegúrese de que las instancias no dependan de IMDSv1. Para obtener más información, consulte Ruta recomendada para exigir IMDSv2.

Console
Cómo configurar IMDSv2 como valor predeterminado para la cuenta de la Región especificada
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. Para cambiar la Región de AWS, utilice el Selector de regiones ubicado en la esquina superior derecha de la página.

  3. En el panel de navegación, elija EC2 Dashboard (Panel EC2).

  4. En Atributos de la cuenta, elija Protección y seguridad de datos.

  5. Junto a los Valores predeterminados de IMDS, seleccione Administrar.

  6. En la página Administrar valores predeterminados de IMDS, haga lo siguiente:

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

    2. En Metadata version (Versión de metadatos), elija V2 only (token required) (solo V2 [token obligatorio]).

    3. En el Límite de saltos de respuesta de metadatos, especifique 2 si las instancias alojarán contenedores. De lo contrario, seleccione Sin preferencia. Si no se especifica ninguna preferencia, en el momento de la inicialización, el valor predeterminado será 2 si la AMI requiere IMDSv2; de lo contrario, el valor predeterminado será 1.

    4. Elija Actualizar.

AWS CLI
Cómo configurar IMDSv2 como valor predeterminado para la cuenta de la Región especificada

Use el comando modify-instance-metadata-defaults y especifique la Región en la que desea modificar la configuración a nivel de cuenta de IMDS. Incluya --http-tokens establecidos como required y --http-put-response-hop-limit establecido en 2 si las instancias alojarán contenedores. De lo contrario, especifique -1 si no desea indicar ninguna preferencia. Si -1 (sin preferencia) se especifica, en el momento de la inicialización, el valor predeterminado será 2 si la AMI requiere IMDSv2; de lo contrario, el valor predeterminado será 1.

aws ec2 modify-instance-metadata-defaults \ --region us-east-1 \ --http-tokens required \ --http-put-response-hop-limit 2

Resultado previsto

{ "Return": true }
Cómo ver la configuración de cuenta predeterminada para las opciones de metadatos de instancia para la Región especificada

Use el comando get-instance-metadata-defaults y especifique la Región.

aws ec2 get-instance-metadata-defaults --region us-east-1

Ejemplo de resultado

{ "AccountLevel": { "HttpTokens": "required", "HttpPutResponseHopLimit": 2 } }
Configuración de IMDSv2 como servicio predeterminado para la cuenta para todas las regiones

Use el comando modify-instance-metadata-defaults para modificar la configuración de nivel de cuenta de IMDS para todas las regiones. Incluya --http-tokens establecidos como required y --http-put-response-hop-limit establecido en 2 si las instancias alojarán contenedores. De lo contrario, especifique -1 si no desea indicar ninguna preferencia. Si -1 (sin preferencia) se especifica, en el momento de la inicialización, el valor predeterminado será 2 si la AMI requiere IMDSv2; de lo contrario, el valor predeterminado será 1.

echo -e "Region \t Modified" ; \ echo -e "-------------- \t ---------" ; \ for region in $( aws ec2 describe-regions \ --region us-east-1 \ --query "Regions[*].[RegionName]" \ --output text ); do (output=$( aws ec2 modify-instance-metadata-defaults \ --region $region \ --http-tokens required \ --http-put-response-hop-limit 2 \ --output text) echo -e "$region \t $output" ); done

Resultado previsto

Region Modified -------------- --------- ap-south-1 True eu-north-1 True eu-west-3 True ...
Visualización de la configuración de cuenta predeterminada para las opciones de metadatos de instancia para todas las regiones

Use el comando get-instance-metadata-defaults.

echo -e "Region \t Level Hops HttpTokens" ; \ echo -e "-------------- \t ------------ ---- ----------" ; \ for region in $( aws ec2 describe-regions \ --region us-east-1 \ --query "Regions[*].[RegionName]" \ --output text ); do (output=$( aws ec2 get-instance-metadata-defaults \ --region $region \ --output text) echo -e "$region \t $output" ); done

Resultado previsto

Region Level Hops HttpTokens -------------- ------------ ---- ---------- ap-south-1 ACCOUNTLEVEL 2 required eu-north-1 ACCOUNTLEVEL 2 required eu-west-3 ACCOUNTLEVEL 2 required ...
PowerShell
Cómo configurar IMDSv2 como valor predeterminado para la cuenta de la Región especificada

Use el comando Edit-EC2InstanceMetadataDefault y especifique la Región en la que desea modificar la configuración a nivel de cuenta de IMDS. Incluya -HttpToken establecidos como required y -HttpPutResponseHopLimit establecido en 2 si las instancias alojarán contenedores. De lo contrario, especifique -1 si no desea indicar ninguna preferencia. Si -1 (sin preferencia) se especifica, en el momento de la inicialización, el valor predeterminado será 2 si la AMI requiere IMDSv2; de lo contrario, el valor predeterminado será 1.

Edit-EC2InstanceMetadataDefault ` -Region us-east-1 ` -HttpToken required ` -HttpPutResponseHopLimit 2

Resultado previsto

True
Cómo ver la configuración de cuenta predeterminada para las opciones de metadatos de instancia para la Región especificada

Use el comando Get-EC2InstanceMetadataDefault y especifique la región.

Get-EC2InstanceMetadataDefault -Region us-east-1 | Format-List

Ejemplo de resultado

HttpEndpoint : HttpPutResponseHopLimit : 2 HttpTokens : required InstanceMetadataTags :
Configuración de IMDSv2 como servicio predeterminado para la cuenta para todas las regiones

Use el cmdlet Edit-EC2InstanceMetadataDefault para modificar la configuración de nivel de cuenta de IMDS de todas las regiones. Incluya -HttpToken establecidos como required y -HttpPutResponseHopLimit establecido en 2 si las instancias alojarán contenedores. De lo contrario, especifique -1 si no desea indicar ninguna preferencia. Si -1 (sin preferencia) se especifica, en el momento de la inicialización, el valor predeterminado será 2 si la AMI requiere IMDSv2; de lo contrario, el valor predeterminado será 1.

(Get-EC2Region).RegionName | ` ForEach-Object { [PSCustomObject]@{ Region = $_ Modified = (Edit-EC2InstanceMetadataDefault ` -Region $_ ` -HttpToken required ` -HttpPutResponseHopLimit 2) } } | ` Format-Table Region, Modified -AutoSize

Resultado previsto

Region Modified ------ -------- ap-south-1 True eu-north-1 True eu-west-3 True ...
Visualización de la configuración de cuenta predeterminada para las opciones de metadatos de instancia para todas las regiones

Utilice el cmdlet Get-EC2InstanceMetadataDefault.

(Get-EC2Region).RegionName | ` ForEach-Object { [PSCustomObject]@{ Region = $_ HttpPutResponseHopLimit = (Get-EC2InstanceMetadataDefault -Region $_).HttpPutResponseHopLimit HttpTokens = (Get-EC2InstanceMetadataDefault -Region $_).HttpTokens } } | ` Format-Table -AutoSize

Ejemplo de resultado

Region HttpPutResponseHopLimit HttpTokens ------ ----------------------- ---------- ap-south-1 2 required eu-north-1 2 required eu-west-3 2 required ...

Configuración de la instancia en el momento de la inicialización

Al iniciar una instancia, puede configurarla para exigir el uso de IMDSv2 mediante la configuración de los siguientes campos:

  • Consola de Amazon EC2: establezca Metadata version (Versión de metadatos) en V2 only (token required) (Solo V2 [token obligatorio]).

  • AWS CLI: HttpTokens establecido en required.

Al especificar que IMDSv2 es obligatorio, también se debe habilitar el punto de conexión del servicio de metadatos de instancia (IMDS); para ello, se debe establecer Metadatos accesibles en Habilitados (consola) o HttpEndpoint en enabled (AWS CLI).

En un entorno de contenedores, cuando se requiere IMDSv2, recomendamos establecer el límite de saltos en 2. Para obtener más información, consulte Consideraciones sobre el acceso a los metadatos de instancia.

Console
Para exigir el uso de IMDSv2 en una nueva instancia
  • Al iniciar una nueva instancia en la consola de Amazon EC2, despliegue Advanced details (Detalles avanzados) y haga lo siguiente:

    • Para Metadatos accesibles, elija Enabled (Habilitado).

    • En Metadata version (Versión de metadatos), elija V2 only (token required) (solo V2 [token obligatorio]).

    • (Entorno de contenedores) Para el límite de saltos de respuesta de metadatos, elija 2.

    Para obtener más información, consulte Detalles avanzados.

AWS CLI
Para exigir el uso de IMDSv2 en una nueva instancia

En el siguiente ejemplo de run-instances, se inicia una instancia c6i.large con --metadata-options establecido en HttpTokens=required. Cuando se especifica un valor para HttpTokens, también se debe establecer HttpEndpoint en enabled. Debido a que el encabezado del token de seguridad está establecido en required para las solicitudes de recuperación de metadatos, se requiere que la instancia use IMDSv2 al solicitar los metadatos de la instancia.

En un entorno de contenedores, cuando se requiere IMDSv2, recomendamos establecer el límite de saltos en 2 con HttpPutResponseHopLimit=2.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=enabled,HttpTokens=required,HttpPutResponseHopLimit=2"
PowerShell
Para exigir el uso de IMDSv2 en una nueva instancia

En el siguiente ejemplo del cmdlet New-EC2Instance, se inicia una instancia c6i.large con MetadataOptions_HttpEndpoint establecido en enabled y el parámetro MetadataOptions_HttpTokens en required. Cuando se especifica un valor para HttpTokens, también se debe establecer HttpEndpoint en enabled. Debido a que el encabezado del token de seguridad está establecido en required para las solicitudes de recuperación de metadatos, se requiere que la instancia use IMDSv2 al solicitar los metadatos de la instancia.

New-EC2Instance ` -ImageId ami-0abcdef1234567890 ` -InstanceType c6i.large ` -MetadataOptions_HttpEndpoint enabled ` -MetadataOptions_HttpTokens required
AWS CloudFormation

Para especificar las opciones de metadatos de una instancia con AWS CloudFormation, consulte la propiedad AWS::EC2::LaunchTemplate MetadataOptions en la Guía del usuario de AWS CloudFormation.

Configuración de la AMI

Al registrar una AMI nueva o modificar una AMI existente, puede establecer el parámetro imds-support en v2.0. Las instancias iniciadas desde esta AMI tendrán el valor de Metadata version (Versión de metadatos) establecido en V2 only (token required) (Solo V2 [token obligatorio]) (consola) o HttpTokens establecido en required (AWS CLI). Con esta configuración, la instancia requiere que se utilice IMDSv2 al solicitar los metadatos de la instancia.

Tenga en cuenta que cuando establezca imds-support en v2.0, las instancias iniciadas desde esta AMI también tendrán Metadata response hop limit (Límite de saltos de respuesta de metadatos) (consola) o http-put-response-hop-limit (AWS CLI) establecido en 2.

importante

No utilice este parámetro a menos que el software de AMI sea compatible con IMDSv2. Después de establecer el valor en v2.0, no podrá deshacer el cambio. La única forma de “restablecer” la AMI es crear una AMI nueva a partir de la instantánea subyacente.

Para configurar una nueva AMI para IMDSv2

Utilice uno de los siguientes métodos para configurar una nueva AMI de IMDSv2.

AWS CLI

El siguiente ejemplo de register-image registra una AMI mediante la instantánea especificada de un volumen raíz de EBS como dispositivo /dev/xvda. Especifique v2.0 para el parámetro imds-support a fin de que las instancias que se lancen desde esta AMI requieran que se utilice IMDSv2 al solicitar metadatos de instancia.

aws ec2 register-image \ --name my-image \ --root-device-name /dev/xvda \ --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example} \ --architecture x86_64 \ --imds-support v2.0
PowerShell

En el siguiente ejemplo del cmdlet Register-EC2Image, se registra una AMI mediante la instantánea especificada de un volumen raíz de EBS como dispositivo /dev/xvda. Especifique v2.0 para el parámetro ImdsSupport a fin de que las instancias que se lancen desde esta AMI requieran que se utilice IMDSv2 al solicitar metadatos de instancia.

Register-EC2Image ` -Name 'my-image' ` -RootDeviceName /dev/xvda ` -BlockDeviceMapping ( New-Object ` -TypeName Amazon.EC2.Model.BlockDeviceMapping ` -Property @{ DeviceName = '/dev/xvda'; EBS = (New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice -Property @{ SnapshotId = 'snap-0123456789example' VolumeType = 'gp3' } ) } ) ` -Architecture X86_64 ` -ImdsSupport v2.0
Para configurar una AMI existente para IMDSv2

Utilice uno de los métodos siguientes para configurar una AMI existente para IMDSv2.

AWS CLI

El siguiente ejemplo modify-image-attribute modifica una AMI existente únicamente para IMDSv2. Especifique v2.0 para el parámetro imds-support a fin de que las instancias que se lancen desde esta AMI requieran que se utilice IMDSv2 al solicitar metadatos de instancia.

aws ec2 modify-image-attribute \ --image-id ami-0123456789example \ --imds-support v2.0
PowerShell

En el siguiente ejemplo de cmdlet Edit-EC2ImageAttribute, se modifica una AMI existente únicamente para IMDSv2. Especifique v2.0 para el parámetro imds-support a fin de que las instancias que se lancen desde esta AMI requieran que se utilice IMDSv2 al solicitar metadatos de instancia.

Edit-EC2ImageAttribute ` -ImageId ami-0abcdef1234567890 ` -ImdsSupport 'v2.0'

Uso de una política de IAM

También puede crear una política de IAM que impida a los usuarios iniciar nuevas instancias a menos que exijan el uso de IMDSv2 en la nueva instancia.

Para exigir el uso de IMDSv2 en todas las instancias nuevas mediante una política de IAM

Para asegurarse de que los usuarios solo puedan iniciar instancias que exigen el uso de IMDSv2 al solicitar metadatos de instancia, puede especificar que la condición para exigir IMDSv2 debe cumplirse antes de iniciar una instancia. Para ver una política de IAM de ejemplo, consulte Trabajar con metadatos de instancias.

Habilitación de los puntos de conexión IPv4 e IPv6 de IMDS

El IMDS tiene dos puntos de conexión en una instancia: IPv4 (169.254.169.254) e IPv6 ([fd00:ec2::254]). Al habilitar el IMDS, el punto de conexión IPv4 se habilita automáticamente. El punto de conexión IPv6 permanece deshabilitado incluso si se lanza una instancia en una subred de solo IPv6. Para habilitar el punto de conexión IPv6, tiene que hacerlo de manera explícita. Si habilita el punto de conexión IPv6, el punto de conexión IPv4 permanece habilitado.

Puede habilitar el punto de conexión IPv6 al momento de lanzar una instancia o después.

Requisitos para la habilitación de un punto de conexión IPv6

Utilice uno de los siguientes métodos para lanzar una instancia con el punto de conexión IPv6 de IMDS habilitado.

Console
Para habilitar el punto de conexión IPv6 de IMDS en el momento del lanzamiento de una instancia
  • Lance la instancia en la consola de Amazon EC2 con la siguiente información especificada en Advanced details (Detalles avanzados):

    • Para el punto de conexión IPv6 para la obtención de metadatos, seleccione Activado.

Para obtener más información, consulte Detalles avanzados.

AWS CLI
Para habilitar el punto de conexión IPv6 de IMDS en el momento del lanzamiento de una instancia

El siguiente ejemplo de run-instances inicia una instancia c6i.large con el punto de conexión de IPv6 habilitado para IMDS. Para habilitar el punto de conexión de IPv6, para el parámetro --metadata-options, especifique HttpProtocolIpv6=enabled. Cuando se especifica un valor para HttpProtocolIpv6, también se debe establecer HttpEndpoint en enabled.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
PowerShell
Para habilitar el punto de conexión IPv6 de IMDS en el momento del lanzamiento de una instancia

En el siguiente ejemplo del cmdlet New-EC2Instance, se inicia una instancia c6i.large con el punto de conexión de IPv6 habilitado para IMDS. Para habilitar el punto de conexión IPv6, especifique MetadataOptions_HttpProtocolIpv6 como enabled. Cuando se especifica un valor para MetadataOptions_HttpProtocolIpv6, también se debe establecer MetadataOptions_HttpEndpoint en enabled.

New-EC2Instance ` -ImageId ami-0abcdef1234567890 ` -InstanceType c6i.large ` -MetadataOptions_HttpEndpoint enabled ` -MetadataOptions_HttpProtocolIpv6 enabled

Desactivar el acceso a los metadatos de instancia

Puede desactivar el acceso a los metadatos de la instancia si deshabilita el IMDS al iniciar una instancia. Puede activar el acceso más adelante si vuelve a habilitar el IMDS. Para obtener más información, consulte Activación del acceso a los metadatos de instancias.

importante

Puede optar por deshabilitar el IMDS durante la inicialización o después. Si deshabilita el IMDS durante la inicialización, es posible que lo siguiente no funcione:

  • Es posible que no tenga acceso mediante SSH a su instancia. public-keys/0/openssh-key, que es la clave de SSH pública de su instancia, no estará accesible porque normalmente se proporciona y se accede a ella desde los metadatos de la instancia de EC2.

  • Los datos de usuario de EC2 no estarán disponibles y no se ejecutarán al iniciar la instancia. Los datos de usuario de EC2 se alojan en el IMDS. Si deshabilita el IMDS, desactiva de forma eficaz el acceso a los datos de los usuarios.

Para acceder a esta funcionalidad, puede volver a habilitar el IMDS después de la inicialización.

Console
Para desactivar el acceso a los metadatos de instancia durante la inicialización
  • Lance la instancia en la consola de Amazon EC2 con la siguiente información especificada en Advanced details (Detalles avanzados):

    • Para Metadatos accesibles, elija Disabled (Deshabilitado).

Para obtener más información, consulte Detalles avanzados.

AWS CLI
Para desactivar el acceso a los metadatos de instancia durante la inicialización

Lance la instancia con --metadata-options establecido en HttpEndpoint=disabled.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=disabled"
PowerShell
Para desactivar el acceso a los metadatos de instancia durante la inicialización

En el siguiente ejemplo del cmdlet New-EC2Instance, se inicia una instancia con MetadataOptions_HttpEndpoint establecido en disabled.

New-EC2Instance ` -ImageId ami-0abcdef1234567890 ` -InstanceType c6i.large ` -MetadataOptions_HttpEndpoint disabled
AWS CloudFormation

Para especificar las opciones de metadatos de una instancia con AWS CloudFormation, consulte la propiedad AWS::EC2::LaunchTemplate MetadataOptions en la Guía del usuario de AWS CloudFormation.

Permitir acceso a etiquetas en metadatos de instancia

De forma predeterminada, no se puede acceder a las etiquetas de instancia en los metadatos de la instancia. Para cada instancia, debe permitir el acceso de manera explícita. Si se permite el acceso, las claves de etiquetas de la instancia deben cumplir con restricciones de caracteres específicas; de lo contrario, fallará el lanzamiento de la instancia. Para obtener más información, consulte Permitir acceso a etiquetas en metadatos de instancia.