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 cada instância do EC2, essas métricas são mutuamente exclusivas. Quando o IMDSv1 está habilitado (
httpTokens = optional), só emiteMetadataNoToken. Quando o IMDSv1 está desabilitado (httpTokens = required), só emiteMetadataNoTokenRejected. Para saber quando usar essas métricas, consulte Caminho recomendado para exigir IMDSv2.Para obter mais informações, consulte Métricas de instância.
- Inicie APIs
-
Novas instâncias: use a API RunInstances para iniciar 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 iniciadas 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.
- Controles no nível de conta
-
Você pode configurar valores padrão para todas as opções de metadados da instância no nível da conta. Os valores padrão são aplicados automaticamente quando você executa uma instância. Para obter mais informações, consulte Definir o IMDSv2 como o padrão para a conta.
Você também pode impor a exigência de usar o IMDSv2 no nível da conta. Quando a imposição do IMDSv2 está habilitada:
-
Novas instâncias: as instâncias configuradas para serem executadas com o IMDSv1 habilitado falharão na inicialização
-
Instâncias existentes com o IMDSv1 desativado: as tentativas de habilitar o IMDSv1 em instâncias existentes serão evitadas.
-
Instâncias existentes com o IMDSv1 habilitado: as instâncias existentes com o IMDSv1 já habilitado não serão afetadas.
Para obter mais informações, consulte Aplique o IMDSv2 no nível da conta.
-
- 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 centralmente as configurações padrão da conta IMDS, incluindo a aplicação do IMDSv2, em toda a sua organização. Para ver um exemplo de política, consulte a guia Metadados da instância na seção Políticas declarativas compatíveis 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 Metadados da instância na seção Políticas declarativas compatíveis no Guia do usuário do AWS Organizations.
Etapa 5: impor instâncias que exijam o IMDSv2
Depois de confirmar que não há dependência do IMDSv1 em nenhuma de suas instâncias, recomendamos que você aplique o IMDSv2 em todas as novas instâncias.
Use uma das seguintes opções a seguir para impor o IMDSv2:
-
Impor o IMDSv2 com uma propriedade de conta
Você pode impor o uso do IMDSv2 por conta para cada Região da AWS. Quando impostas, as instâncias só podem ser iniciadas se estiverem configuradas para exigir o IMDSv2. Essa imposição se aplica independentemente de como a instância ou a AMI estejam configuradas. Para obter mais informações, consulte Aplique o IMDSv2 no nível da conta. Para aplicar essa configuração no nível da organização, defina uma política declarativa. Para ver um exemplo de política, consulte a guia Metadados da instância na seção Políticas declarativas compatíveis no Guia do usuário do AWS Organizations.
Para evitar a reversão da imposição, você deve usar uma política do IAM para impedir o acesso à API ModifyInstanceMetadataDefaults. Para obter mais informações, consulte Usar uma política do IAM.
nota
Essa configuração não altera a versão do IMDS das instâncias existentes, mas bloqueia a ativação do IMDSv1 em instâncias existentes que atualmente têm o IMDSv1 desabilitado.
Atenção
Se a imposição do IMDSv2 estiver habilitada e o
httpTokensnão tiver sido definido pararequiredna configuração da instância na inicialização, nas configurações da conta ou na configuração da AMI, sua execução falhará. Para obter informações sobre a solução de problemas, consulte Falha na inicialização de uma instância habilitada para IMDSv1. -
Como alternativa, impor o IMDSv2 usando as seguintes chaves de condição do IAM ou do SCP:
-
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.
-