Transição para usar o Serviço de metadados da instância versão 2 - Amazon Elastic Compute Cloud

Transição para usar o Serviço de metadados da instância versão 2

Se você deseja configurar suas instâncias para aceitar somente chamadas da versão 2 do serviço de metadados de instância (IMDSv2), recomendamos que use as ferramentas e o caminho de transição apresentados a seguir.

Ferramentas para fazer a transição para o IMDSv2

As ferramentas a seguir podem ajudar a identificar, monitorar e gerenciar a transição do seu software do IMDSv1 para o IMDSv2. Para obter instruções sobre como usar as ferramentas, consulte Caminho recomendado para exigir IMDSv2.

AWS Software da

As versões mais recentes da AWS CLI e dos AWS SDKs são compatíveis com o IMDSv2. Para usar o IMDSv2, atualize as instâncias do EC2 para usar as versões mais recentes. Para obter as versões mínimas do AWS SDK compatíveis com IMDSv2, consulte Usar um AWS SDK compatível.

Todos os pacotes de software Amazon Linux 2 e Amazon Linux 2023 são compatíveis com o IMDSv2. O Amazon Linux 2023 desabilita o IMDSv1 por padrão.

IMDS Packet Analyzer

O IMDS Packet Analyzer é uma ferramenta de código aberto que identifica e registra as chamadas IMDSv1 durante a fase de inicialização e as operações de runtime da sua instância. Ao analisar esses registros, você pode identificar com precisão o software que faz chamadas do IMDSv1 em suas instâncias e determinar o que precisa ser atualizado para oferecer suporte ao IMDSv2 somente em suas instâncias. É possível executar o IMDS Packet Analyzer em uma linha de comando ou instalá-lo como um serviço. Para obter mais informações, consulte AWS ImdsPacketAnalyzer no GitHub.

CloudWatch

O CloudWatch fornece as duas métricas a seguir para monitorar suas instâncias:

MetadataNoToken – O IMDSv2 usa sessões baseadas em token, enquanto o IMDSv1 não o faz. A métrica MetadataNoToken rastreia o número de chamadas para o Serviço de metadados de instância (IMDS) que estão usando o IMDSv1. Rastreando essa métrica até zero, é possível determinar se e quando todo o software foi atualizado para usar o IMDSv2.

MetadataNoTokenRejected – Após desabilitar o IMDSv1, é possível usar a métrica do MetadataNoTokenRejected para rastrear o número de vezes que uma chamada do IMDSv1 foi tentada e rejeitada. Ao rastrear essa métrica, você pode verificar se o software precisa ser atualizado para usar o IMDSv2.

Para obter mais informações, consulte Métricas de instância.

Inicie APIs

Novas instâncias: use a API RunInstances para executar novas instâncias que exijam o uso do IMDSv2. Para obter mais informações, consulte Configurar opções de metadados da instância para novas instâncias.

Instâncias existentes: use a API ModifyInstanceMetadataOptions para exigir o uso do IMDSv2 nas instâncias existentes. Para obter mais informações, consulte Modificar as opções de metadados de instância para as instâncias existentes.

Novas instâncias lançadas pelos grupos do Auto Scaling: para exigir o uso do IMDSv2 em todas as novas instâncias executadas por grupos do Auto Scaling, seus grupos do Auto Scaling podem usar um modelo de execução ou uma configuração de execução. Quando você cria um modelo de execução ou cria uma configuração de execução, é necessário configurar os parâmetros de MetadataOptions para exigir o uso do IMDSv2. O grupo do Auto Scaling inicia novas instâncias usando o novo modelo de execução ou configuração de execução, mas as instâncias existentes não serão afetadas.

Instâncias existentes em um grupo do Auto Scaling: use a API ModifyInstanceMetadataOptions para exigir o uso do IMDSv2 em instâncias existentes, ou encerrar as instâncias e o grupo do Auto Scaling executará novas instâncias de substituição com as configurações das opções de metadados de instância definidas no modelo ou na configuração de execução.

AMIs

As AMIs configuradas com o parâmetro ImdsSupport definido como v2.0 iniciarão instâncias que exigem o IMDSv2 por padrão. O Amazon Linux 2023 está configurado com ImdsSupport = v2.0.

Novas AMIs: use o comando da CLI register-image para definir o parâmetro ImdsSupport como v2.0 ao criar uma nova AMI.

AMIs existentes: use o comando da CLI modify-image-attribute para definir o parâmetro ImdsSupport como v2.0 ao modificar uma AMI existente.

Para obter mais informações, consulte Configurar a AMI.

Políticas do IAM e SCPs

É possível usar uma política do IAM ou uma política de controle de serviços (SCP) do AWS Organizations para controlar os usuários como se segue:

  • Não é possível iniciar uma instância usando a API RunInstances, a menos que a instância esteja configurada para usar o IMDSv2.

  • Não é possível modificar uma instância em execução usando a API ModifyInstanceMetadataOptions para reabilitar o IMDSv1.

A política do IAM ou a SCP devem conter as seguintes chaves de condição do IAM:

  • ec2:MetadataHttpEndpoint

  • ec2:MetadataHttpPutResponseHopLimit

  • ec2:MetadataHttpTokens

Se um parâmetro da chamada de API ou CLI não corresponder ao estado especificado na política que contém a chave de condição, a chamada de API ou CLI falhará com uma resposta UnauthorizedOperation.

Além disso, é possível escolher uma camada adicional de proteção para exigir a alteração do IMDSv1 para o IMDSv2. Na camada de gerenciamento de acesso com relação às APIs chamadas por meio de credenciais de função do EC2, é possível usar uma chave de condição nas políticas do IAM ou nas políticas de controle de serviço (SCPs) do AWS Organizations. Especificamente, usando a chave de condição da política ec2:RoleDelivery com um valor 2.0 nas políticas do IAM, as chamadas de API feitas com as credenciais do perfil do EC2 obtidas do IMDSv1 receberão uma resposta UnauthorizedOperation. A mesma coisa pode ser obtida de forma mais ampla com essa condição exigida por uma SCP. Isso garante que as credenciadas entregues por meio do IMDSv1 não podem ser realmente usadas para chamar APIs porque todas as chamadas à API que não corresponderem à condição especificada receberão um erro UnauthorizedOperation.

Para obter exemplos de políticas do IAM, consulte Trabalhar com metadados de instância. Para obter mais informações sobre SCPs, consulte Políticas de controle de serviço no Guia do usuário do AWS Organizations.

Políticas declarativas

Use políticas declarativas (um atributo do AWS Organizations) para definir e aplicar centralmente o IMDSv2 como a versão padrão do IMDS em toda a sua organização. Para ver um exemplo de política, consulte a guia Padrões de metadados da instância na seção Políticas declarativas suportadas no Guia do usuário do AWS Organizations.

Etapa 1: identificar instâncias com IMDSv2=opcional e auditar o uso do IMDSv1

Para avaliar seu escopo de migração do IMDSv2, identifique as instâncias configuradas para permitir o IMDSv1 ou o IMDSv2 e audite as chamadas do IMDSv1.

  1. Identifique instâncias configuradas para permitir o IMDSv1 ou o IMDSv2:

    Amazon EC2 console
    1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

    2. No painel de navegação, escolha Instances (Instâncias).

    3. Para ver somente as instâncias que estão configuradas para permitir IMDSv1 ou IMDSv2, adicione o filtro IMDSv2 = opcional.

    4. Como alternativa, para ver se o IMDSv2 é opcional ou obrigatório para todas as instâncias, abra a janela Preferências (ícone de engrenagem), ative o IMDSv2 e escolha Confirmar. Isso adiciona a coluna IMDSv2 à tabela Instâncias.

    AWS CLI

    Use o comando describe-instances e filtre por metadata-options.http-tokens = optional, da seguinte forma:

    aws ec2 describe-instances --filters "Name=metadata-options.http-tokens,Values=optional" --query "Reservations[*].Instances[*].[InstanceId]" --output text
  2. Audite as chamadas do IMDSv1 em cada instância:

    Use a métrica MetadataNoToken do CloudWatch. Esta métrica mostra o número de chamadas IMDSv1 para o IMDS em suas instâncias. Para obter mais informações, consulte Métricas de instância.

  3. Identifique o software em suas instâncias que fazem chamadas do IMDSv1:

    Use o IMDS Packet Analyzer de código aberto para identificar e registrar chamadas do IMDSv1 durante a fase de inicialização e as operações de runtime da sua instância. Use essas informações para identificar o software a atualizar e preparar suas instâncias para usar somente o IMDSv2. É possível executar o IMDS Packet Analyzer em uma linha de comando ou instalá-lo como um serviço.

Etapa 2: atualizar o software para o IMDSv2

Atualize todos os SDKs, as CLIs e o software que usam credenciais de função em suas instâncias para versões compatíveis com o IMDSv2. Para obter mais informações sobre como atualizar a CLI, consulte Instalação ou atualização para a versão mais recente da AWS CLI no Guia do usuário da AWS Command Line Interface.

Etapa 3: exigir o IMDSv2 nas instâncias

Depois de confirmar que não há chamadas do IMDSv1 por meio da métrica MetadataNoToken, configure suas instâncias existentes para exigir o IMDSv2. Além disso, configure todas as novas instâncias para exigir o IMDSv2. Em outras palavras, desative o IMDSv1 em todas as instâncias novas e existentes.

  1. Configure as instâncias existentes para exigir o IMDSv2:

    Amazon EC2 console
    1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

    2. No painel de navegação, escolha Instances (Instâncias).

    3. Selecione sua instância.

    4. Escolha Ações, Configurações da instância e Modificar opções de metadados da instância.

    5. Em IMDSv2, escolha Obrigatório.

    6. Escolha Salvar.

    AWS CLI

    Use o comando modify-instance-metadata-options da CLI para especificar que apenas o IMDSv2 deverá ser usado.

    nota

    É possível modificar essa configuração em instâncias em execução. A alteração entra em vigor imediatamente sem a necessidade de reiniciar a instância.

    Para obter mais informações, consulte Exigir o uso de IMDSv2.

  2. Monitore os problemas após a desativação do IMDSv1:

    1. Rastreie o número de vezes que uma chamada do IMDSv1 foi tentada e rejeitada com a métrica MetadataNoTokenRejected do CloudWatch.

    2. Se a métrica MetadataNoTokenRejected registrar chamadas do IMDSv1 em uma instância com problemas de software, isso indica que o software precisa ser atualizado para usar o IMDSv2.

  3. Configure novas instâncias para exigir o IMDSv2:

    Amazon EC2 console
    1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

    2. Siga estas etapas para executar uma instância.

    3. Expanda Detalhes avançados e, para a versão de metadados, escolha somente V2 (token obrigatório).

    4. No painel Resumo, analise a configuração da instância e selecione Iniciar instância.

      Para obter mais informações, consulte Configurar a instância na inicialização.

    AWS CLI

    AWS CLI: use o comando run-instances e especifique que o IMDSv2 é obrigatório.

Etapa 4: definir IMDSv2=obrigatório como padrão

Você pode definir IMDSv2=obrigatório como a configuração padrão no nível da conta ou da organização. Isso garante que todas as instâncias recém-lançadas sejam automaticamente configuradas para exigir o IMDSv2.

  1. Definir padrão por conta:

    Amazon EC2 console
    1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

    2. No Painel do EC2, em Atributos da conta, escolha Proteção e segurança de dados.

    3. Em Padrões do IMDS, escolha Gerenciar.

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

    5. Em Versão de metadados, selecione Apenas V2 (token obrigatório).

    6. Selecione Atualizar.

    AWS CLI

    Use o comando modify-instance-metadata-defaults da CLI e especifique --http-tokens required e --http-put-response-hop-limit 2.

    Para obter mais informações, consulte Definir o IMDSv2 como o padrão para a conta.

  2. Como alternativa, defina o padrão no nível da organização usando uma Política Declarativa:

    Use uma política declarativa para definir o padrão da organização para o IMDSv2 como obrigatório. Para ver um exemplo de política, consulte a guia Padrões de metadados da instância na seção Políticas declarativas suportadas no Guia do usuário do AWS Organizations.

Etapa 5: impor instâncias que exijam o IMDSv2

Use as seguintes chaves de condição do IAM ou do SCP para impor o uso do IMDSv2:

  • ec2:MetadataHttpTokens

  • ec2:MetadataHttpPutResponseHopLimit

  • ec2:MetadataHttpEndpoint

Essas chaves de condição controlam o uso de RunInstances, da API ModifyInstanceMetadataOptions e da CLI correspondente. Se uma política for criada, e um parâmetro na chamada à API não corresponder ao estado especificado na política usando a chave de condição, a chamada à API ou à CLI falhará com uma resposta UnauthorizedOperation.

Para obter exemplos de políticas do IAM, consulte Trabalhar com metadados de instância.