Configurar las opciones de metadatos para instancias nuevas
Puede configurar las siguientes opciones de metadatos para nuevas instancias.
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
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
.
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
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.
-
Para cambiar la Región de AWS, utilice el Selector de regiones ubicado en la esquina superior derecha de la página.
-
En el panel de navegación, elija EC2 Dashboard (Panel EC2).
-
En Atributos de la cuenta, elija Protección y seguridad de datos.
-
Junto a los Valores predeterminados de IMDS, seleccione Administrar.
-
En la página Administrar valores predeterminados de IMDS, haga lo siguiente:
-
En Servicio de metadatos de instancia, seleccione Habilitado.
-
En Metadata version (Versión de metadatos), elija V2 only (token required) (solo V2 [token obligatorio]).
-
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.
-
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
...
Al iniciar una instancia, puede configurarla para exigir el uso de IMDSv2 mediante la configuración de los siguientes campos:
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.
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.
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'
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.
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
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
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.
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
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.
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.