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étricaMetadataNoTokenrastreia 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 doMetadataNoTokenRejectedpara 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
MetadataOptionspara 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
ImdsSupportdefinido comov2.0iniciarão instâncias que exigem o IMDSv2 por padrão. O Amazon Linux 2023 está configurado comImdsSupport = v2.0.Novas AMIs: use o comando da CLI register-image para definir o parâmetro
ImdsSupportcomov2.0ao criar uma nova AMI.AMIs existentes: use o comando da CLI modify-image-attribute para definir o parâmetro
ImdsSupportcomov2.0ao 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:RoleDeliverycom um valor2.0nas políticas do IAM, as chamadas de API feitas com as credenciais do perfil do EC2 obtidas do IMDSv1 receberão uma respostaUnauthorizedOperation. 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 erroUnauthorizedOperation.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.
Caminho recomendado para exigir IMDSv2
Usando as ferramentas acima, recomendamos o caminho a seguir para fazer a transição para o IMDSv2:
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.
-
Identifique instâncias configuradas para permitir o IMDSv1 ou o IMDSv2:
-
Audite as chamadas do IMDSv1 em cada instância:
Use a métrica
MetadataNoTokendo 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. -
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.
-
Configure as instâncias existentes para exigir o IMDSv2:
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.
-
Monitore os problemas após a desativação do IMDSv1:
-
Rastreie o número de vezes que uma chamada do IMDSv1 foi tentada e rejeitada com a métrica
MetadataNoTokenRejecteddo CloudWatch. -
Se a métrica
MetadataNoTokenRejectedregistrar chamadas do IMDSv1 em uma instância com problemas de software, isso indica que o software precisa ser atualizado para usar o IMDSv2.
-
-
Configure novas instâncias para exigir o IMDSv2:
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.
-
Definir padrão por conta:
Para obter mais informações, consulte Definir o IMDSv2 como o padrão para a conta.
-
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.