Configurar opções de metadados da instância para novas instâncias - Amazon Elastic Compute Cloud

Configurar opções de metadados da instância para novas instâncias

É possível configurar as opções de metadados de instância a seguir em cada instância.

Exigir o uso de IMDSv2

É possível utilizar um dos métodos a seguir para exigir o uso do IMDSv2 nas novas instâncias.

Definir o IMDSv2 como o padrão para a conta

É possível definir a versão padrão do serviço de metadados de instância (IMDS) em nível de conta para cada Região da AWS. Isso significa que, quando uma nova instância é executada, a versão dos metadados da instância é definida automaticamente para padrão do nível de conta. No entanto, você pode substituir manualmente o valor na execução ou após a execução. Para obter mais informações sobre como as configurações em nível de conta e as substituições manuais afetam uma instância, consulte Ordem de precedência das opções de metadados da instância.

nota

Definir o padrão no nível de conta não redefine as instâncias existentes. Por exemplo, se você definir o padrão no nível de conta como IMDSv2, as instâncias existentes definidas como IMDSv1 não serão afetadas. Se desejar alterar o valor nas instâncias existentes, altere manualmente o valor nas próprias instâncias.

É possível definir o padrão da conta para a versão dos metadados de instância como IMDSv2 para que todas as novas instâncias na conta sejam iniciadas com o IMDSv2 obrigatório. Nesse caso, o IMDSv1 será desabilitado. Com esse padrão da conta, quando você executar uma instância, os valores padrão da instância serão os seguintes:

  • Console: a Versão de metadados estará definida como Somente V2 (requer token) e o Limite de salto de resposta de metadados como 2.

  • AWS CLI: HttpTokens estará definido como required e HttpPutResponseHopLimit como 2.

nota

Antes de definir a conta padrão para IMDSv2, certifique-se de que suas instâncias não dependam do IMDSv1. Para ter mais informações, consulte Caminho recomendado para exigir IMDSv2.

Console
Para definir o IMDSv2 como padrão para a conta da região especificada
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. Para alterar a Região da AWS, use o seletor de regiões no canto superior direito da página.

  3. No painel de navegação, escolha EC2 Dashboard (Painel do EC2).

  4. Em Account attributes (Atributos da conta), escolha Data orotection and security (Proteção e segurança de dados).

  5. Ao lado de Padrões do IMDS, escolha Gerenciar.

  6. Na página Gerenciar padrões do IMDS, faça o seguinte:

    1. Em Serviço de metadados de instância, escolha Habilitado.

    2. Em Metadata version (Versão de metadados), selecione V2 only (token required) (Apenas V2 [token obrigatório]).

    3. Em Limite de salto de resposta de metadados, especifique 2 se suas instâncias forem hospedar contêineres. Caso contrário, selecione Sem preferência. Quando não houver uma preferência especificada, na execução, o valor padrão será 2 se a AMI exigir IMDSv2. Caso contrário, o padrão será 1 por padrão.

    4. Selecione Atualizar.

AWS CLI
Para definir o IMDSv2 como padrão para a conta da região especificada

Use o comando modify-instance-metadata-defaults e especifique a região na qual deseja modificar as configurações do IMDS por conta. Inclua --http-tokens definido como required e --http-put-response-hop-limit como 2 se suas instâncias forem hospedar contêineres. Caso contrário, especifique -1 para não indicar nenhuma preferência. Quando -1 (sem preferência) for especificado, na execução, o valor padrão será 2 se a AMI exigir IMDSv2. Caso contrário, o padrão será 1 por padrão.

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

Saída esperada

{ "Return": true }
Para visualizar as configurações padrão de conta para as opções de metadados de instância para a região especificada

Use o comando get-instance-metadata-defaults e especifique a região.

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

Exemplo de saída

{ "AccountLevel": { "HttpTokens": "required", "HttpPutResponseHopLimit": 2 } }
Para definir o IMDSv2 como o padrão para a conta de todas as regiões

Use o comando modify-instance-metadata-defaults para modificar as configurações em nível de conta do IMDS para todas as regiões. Inclua --http-tokens definido como required e --http-put-response-hop-limit como 2 se suas instâncias forem hospedar contêineres. Caso contrário, especifique -1 para não indicar nenhuma preferência. Quando -1 (sem preferência) for especificado, na execução, o valor padrão será 2 se a AMI exigir IMDSv2. Caso contrário, o padrão será 1 por padrão.

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

Saída esperada

Region Modified -------------- --------- ap-south-1 True eu-north-1 True eu-west-3 True ...
Para visualizar as configurações padrão de conta para as opções de metadados de instância para todas as regiões

Use o 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

Saída esperada

Region Level Hops HttpTokens -------------- ------------ ---- ---------- ap-south-1 ACCOUNTLEVEL 2 required eu-north-1 ACCOUNTLEVEL 2 required eu-west-3 ACCOUNTLEVEL 2 required ...
PowerShell
Para definir o IMDSv2 como padrão para a conta da região especificada

Use o comando Edit-EC2InstanceMetadataDefault e especifique a região na qual deseja modificar as configurações do IMDS por conta. Inclua -HttpToken definido como required e -HttpPutResponseHopLimit como 2 se suas instâncias forem hospedar contêineres. Caso contrário, especifique -1 para não indicar nenhuma preferência. Quando -1 (sem preferência) for especificado, na execução, o valor padrão será 2 se a AMI exigir IMDSv2. Caso contrário, o padrão será 1 por padrão.

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

Saída esperada

True
Para visualizar as configurações padrão de conta para as opções de metadados de instância para a região especificada

Use o comando Get-EC2InstanceMetadataDefault e especifique a região.

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

Exemplo de saída

HttpEndpoint : HttpPutResponseHopLimit : 2 HttpTokens : required InstanceMetadataTags :
Para definir o IMDSv2 como o padrão para a conta de todas as regiões

Use o cmdlet Edit-EC2InstanceMetadataDefault para modificar as configurações em nível de conta do IMDS para todas as regiões. Inclua -HttpToken definido como required e -HttpPutResponseHopLimit como 2 se suas instâncias forem hospedar contêineres. Caso contrário, especifique -1 para não indicar nenhuma preferência. Quando -1 (sem preferência) for especificado, na execução, o valor padrão será 2 se a AMI exigir IMDSv2. Caso contrário, o padrão será 1 por padrão.

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

Saída esperada

Region Modified ------ -------- ap-south-1 True eu-north-1 True eu-west-3 True ...
Para visualizar as configurações padrão de conta para as opções de metadados de instância para todas as regiões

Use o cmdlet Get-EC2InstanceMetadataDefault.

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

Exemplo de saída

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

Configurar a instância na inicialização

Quando você inicia uma instância, pode configurá-la para exigir o uso do IMDSv2, configurando os seguintes campos:

  • Console do Amazon EC2: defina Metadata version (Versão de metadados) como V2 only (token required) (Apenas V2 [token obrigatório]).

  • AWS CLI: defina HttpTokens como required.

Quando você especificar que o IMDSv2 é obrigatório, também deverá habilitar o endpoint do Serviço de metadados da instância (IMDS) definindo Metadados acessíveis como Habilitado (console) ou HttpEndpoint como enabled (AWS CLI).

Em um ambiente de contêiner, quando o IMDSv2 for necessário, recomendamos definir o limite de saltos como 2. Para ter mais informações, consulte Considerações sobre o acesso aos metadados da instância.

Console
Como exigir o uso do IMDSv2 em uma nova instância
  • Ao executar uma nova instância no console do Amazon EC2, expanda Advanced details (Detalhes avançados) e faça o seguinte:

    • Para Metadata acessible (Metadados acessíveis), escolha Enabled (Habilitado).

    • Em Metadata version (Versão de metadados), selecione V2 only (token required) (Apenas V2 [token obrigatório]).

    • (Ambiente de contêiner) Em Limite de salto de resposta dos metadados, escolha 2.

    Para ter mais informações, consulte Detalhes avançados.

AWS CLI
Como exigir o uso do IMDSv2 em uma nova instância

O exemplo de run-instances a seguir executa uma instância c6i.large com --metadata-options definido como HttpTokens=required. Quando você especifica um valor para HttpTokens, também deve definir HttpEndpoint como enabled. Como o cabeçalho de token seguro é definido como required para solicitações de recuperação de metadados, é necessário que a instância use o IMDSv2 ao solicitar metadados da instância.

Em um ambiente de contêiner, quando o IMDSv2 for necessário, recomendamos definir o limite de saltos como 2 com HttpPutResponseHopLimit=2.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=enabled,HttpTokens=required,HttpPutResponseHopLimit=2"
PowerShell
Como exigir o uso do IMDSv2 em uma nova instância

O exemplo de Cmdlet New-EC2Instance a seguir inicia uma instância c6i.large com MetadataOptions_HttpEndpoint definido como enabled e o parâmetro MetadataOptions_HttpTokens como required. Quando você especifica um valor para HttpTokens, também deve definir HttpEndpoint como enabled. Como o cabeçalho de token seguro é definido como required para solicitações de recuperação de metadados, é necessário que a instância use o IMDSv2 ao solicitar metadados da instância.

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

Para especificar as opções de metadados de uma instância usando AWS CloudFormation, consulte a propriedade AWS::EC2::LaunchTemplate MetadataOptions no Guia do usuário do AWS CloudFormation.

Configurar a AMI

Ao registrar uma nova AMI ou modificar uma AMI existente, é possível definir o parâmetro imds-support como v2.0. As instâncias iniciadas a partir dessa AMI terão Metadata version (Versão de metadados) definido como V2 only (token required) (Apenas V2 [token obrigatório]) (console) ou HttpTokens definido como required (AWS CLI). Com essas configurações, a instância exige que o IMDSv2 seja usado ao solicitar metadados da instância.

Observe que quando você configura imds-support como v2.0, as instâncias iniciadas a partir dessa AMI também têm Metadata response hop limit (Limite de saltos na resposta de metadados) (console) ou http-put-response-hop-limit (AWS CLI) definido como 2.

Importante

Não use esse parâmetro, a menos que seu software AMI ofereça suporte ao IMDSv2. Após definir o valor como v2.0, você não poderá desfazer essa ação. A única maneira de “redefinir” sua AMI é criando uma nova AMI a partir do snapshot subjacente.

Para configurar uma nova AMI para o IMDSv2

Use um dos métodos a seguir para configurar uma nova AMI para o IMDSv2.

AWS CLI

O exemplo de register-image a seguir registra uma AMI usando o snapshot especificado de um volume raiz do EBS como /dev/xvda de dispositivo. Especifique v2.0 para o parâmetro imds-support, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

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

O exemplo de Cmdlet Register-EC2Image a seguir registra uma AMI usando o snapshot especificado de um volume raiz do EBS como dispositivo /dev/xvda. Especifique v2.0 para o parâmetro ImdsSupport, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

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 uma AMI existente para o IMDSv2

Use um dos métodos a seguir para configurar uma AMI para IMDSv2 existente.

AWS CLI

O exemplo de modify-image-attribute a seguir modifica uma AMI existente para IMDSv2 somente. Especifique v2.0 para o parâmetro imds-support, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

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

O exemplo de Cmdlet Edit-EC2ImageAttribute a seguir só modifica uma AMI existente para IMDSv2. Especifique v2.0 para o parâmetro imds-support, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

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

Usar uma política do IAM

Você pode criar uma política do IAM que impeça que os usuários iniciem novas instâncias, a menos que exijam o IMDSv2 na nova instância.

Para impor o uso do IMDSv2 em todas as novas instâncias usando uma política do IAM

Para garantir que os usuários possam executar apenas instâncias que requeiram o uso do IMDSv2 ao solicitar metadados da instância, é possível especificar que a condição para exigir o IMDSv2 deve ser atendida para que uma instância possa ser executada. Para ver um exemplo de política do IAM, consulte Trabalhar com metadados de instância.

Habilitar os endpoints IPv4 e IPv6 do IMDS

O IMDS tem dois endpoints em uma instância: IPv4 (169.254.169.254) e IPv6 ([fd00:ec2::254]). Quando você habilita o IMDS, o endpoint IPv4 é habilitado automaticamente. O endpoint IPv6 permanece desabilitado mesmo que você inicie uma instância em uma sub-rede IPv6 apenas. Para habilitar o endpoint IPv6, você precisa fazer isso explicitamente. Quando você habilita o endpoint IPv6, o endpoint IPv4 permanece habilitado.

Você pode habilitar o endpoint iPv6 ao iniciar a instância ou posteriormente.

Requisitos para habilitação do endpoint iPv6

Use um dos métodos a seguir para iniciar uma instância com o endpoint IPv6 do IMDS habilitado.

Console
Para habilitar o endpoint IPv6 do IMDS na inicialização de instância
  • Inicie a instância no console do Amazon EC2 com o valor a seguir especificado em Advanced details (Detalhes avançados):

    • Para o endpoint IPv6 de metadados, escolha Habilitado.

Para ter mais informações, consulte Detalhes avançados.

AWS CLI
Para habilitar o endpoint IPv6 do IMDS na inicialização de instância

O exemplo de run-instances a seguir inicia uma instância c6i.large com o endpoint IPv6 habilitado para o IMDS. Para habilitar o endpoint IPv6, no parâmetro --metadata-options, especifique HttpProtocolIpv6=enabled. Quando você especifica um valor para HttpProtocolIpv6, também deve definir HttpEndpoint como enabled.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
PowerShell
Para habilitar o endpoint IPv6 do IMDS na inicialização de instância

O exemplo de Cmdlet New-EC2Instance a seguir inicia uma instância c6i.large com o endpoint IPv6 habilitado para IMDS. Para habilitar o endpoint IPv6, especifique MetadataOptions_HttpProtocolIpv6 como enabled. Quando você especifica um valor para MetadataOptions_HttpProtocolIpv6, também deve definir MetadataOptions_HttpEndpoint como enabled.

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

Desativar o acesso aos metadados da instância

Você pode desativar o acesso aos metadados da instância desativando o IMDS ao executar uma instância. Você pode ativar o acesso mais tarde reativando o IMDS. Para ter mais informações, consulte Ativar o acesso aos metadados da instância.

Importante

É possível desativar o IMDS na execução ou após a execução. Se você desativar o IMDS na execução, os seguintes problemas poderão ocorrer:

  • Talvez você não tenha acesso SSH à sua instância. A public-keys/0/openssh-key, que é a chave SSH pública da sua instância, não estará acessível porque a chave normalmente é fornecida e acessada nos metadados da instância do EC2.

  • Os dados do usuário do EC2 não estarão disponíveis e não serão executados no início da instância. Os dados do usuário do EC2 são hospedados no IMDS. Caso desative o IMDS, você desativará efetivamente o acesso aos dados do usuário.

Para acessar essa funcionalidade, você pode reativar o IMDS após a execução.

Console
Desativar o acesso aos metadados da instância na execução
  • Inicie a instância no console do Amazon EC2 com o valor a seguir especificado em Advanced details (Detalhes avançados):

    • Para Metadata acessible (Metadados acessíveis), escolha Disabled (Desabilitado).

Para ter mais informações, consulte Detalhes avançados.

AWS CLI
Desativar o acesso aos metadados da instância na execução

Inicie a instância com --metadata-options definido como HttpEndpoint=disabled.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c6i.large \ ... --metadata-options "HttpEndpoint=disabled"
PowerShell
Desativar o acesso aos metadados da instância na execução

O exemplo de Cmdlet New-EC2Instance a seguir inicia uma instância MetadataOptions_HttpEndpoint definida como disabled.

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

Para especificar as opções de metadados de uma instância usando AWS CloudFormation, consulte a propriedade AWS::EC2::LaunchTemplate MetadataOptions no Guia do usuário do AWS CloudFormation.