As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Acessar e configurar o serviço de metadados de instância (IMDS) no Lightsail
É possível acessar metadados de instância em uma instância em execução usando um dos seguintes métodos:
-
Serviço de metadados da instância versão 1 (IMDSv1) – um método de solicitação/resposta
-
Serviço de metadados da instância versão 2 (IMDSv2): um método orientado a sessões
Importante
Nem todos os esquemas de instância do Lightsail oferecem suporte ao IMDSv2. Use a métrica da instância
MetadataNoTokendo CloudWatch para rastrear o número de chamadas para o serviço de metadados da instância que estão usando o IMDSv1. Para obter mais informações, consulte Visualizar métricas de instância.
Por padrão, é possível usar o IMDSv1 ou o IMDSv2 ou ambos. O serviço de metadados da instância faz distinção entre as solicitações do IMDSv1 e do IMDSv2 com base na presença dos cabeçalhos PUT ou GET, que são exclusivos do IMDSv2, em cada solicitação. Para obter mais informações, consulte Adicionar defesa profunda contra firewalls abertos, proxies reversos e vulnerabilidades SSRF com melhorias no serviço de metadados da instância do EC2
Você pode configurar o serviço de metadados da instância em cada instância de modo que o código local ou usuários devam usar o IMDSv2. Quando você especifica que o IMDSv2 deve ser usado, o IMDSv1 não funciona mais. Para ter mais informações, consulte Configurar as opções de metadados da instância no Guia do usuário do Amazon Elastic Compute Cloud para instâncias do Linux.
Para recuperar metadados de instância, consulte Recuperar metadados da instância no Guia do usuário do Amazon Elastic Compute Cloud para instâncias do Linux.
nota
Os exemplos nesta seção usam o endereço IPv4 do serviço de metadados da instância: 169.254.169.254. Se você estiver recuperando metadados de instância para instâncias pelo endereço IPv6, certifique-se de habilitar e usar o endereço IPv6: fd00:ec2::254. O endereço IPv6 do serviço de metadados da instância é compatível com comandos IMDSv2.
Como Serviço de metadados da instância versão 2 funciona
O IMDSv2 usa solicitações orientadas a sessão. Com solicitações orientadas a sessão, você cria um token de sessão que define a duração da sessão, que pode ser, no mínimo, um segundo e, no máximo, seis horas. Durante o período especificado, é possível usar o mesmo token de sessão para solicitações subsequentes. Depois que a duração especificada expira, crie um novo token de sessão para uso em solicitações futuras.
Importante
As instâncias do Lightsail lançadas a partir dos esquemas do Amazon Linux 2023 e Ubuntu 24 terão o IMDSv2 configurado por padrão.
Os exemplos a seguir usam um script shell do Linux e PowerShell e o IMDSv2 para recuperar os itens de metadados de nível superior de instância. Esses exemplos fazem o seguinte:
-
Crie um token de sessão que dura seis horas (21.600 segundos) usando a solicitação
PUT. -
Armazene o cabeçalho do token da sessão em uma variável chamada
TOKEN(no Linux) outoken(no Windows) -
Solicite os itens de metadados de nível superior usando o token
Comece executando os seguintes comandos:
-
No Linux:
-
Primeiro, gere um token com o comando a seguir.
[ec2-user ~]$TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` -
Em seguida, use o token para gerar itens de metadados de nível superior com o comando a seguir.
[ec2-user ~]$curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/
-
-
No Windows:
-
Primeiro, gere um token com o comando a seguir.
PS C:\>[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token -
Em seguida, use o token para gerar itens de metadados de nível superior com o comando a seguir.
PS C:\>Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/
-
Depois de criar um token, é possível reutilizá-lo até que ele expire. Nos exemplos a seguir, cada comando obtém o ID do esquema (imagem de máquina da Amazon (AMI) usado para executar a instância. O token do exemplo anterior é reutilizado. É armazenado em $TOKEN (no Linux) ou $token (no Windows).
-
No Linux:
[ec2-user ~]$curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/ami-id -
No Windows:
PS C:\>Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} ` -Method GET -uri http://169.254.169.254/latest/meta-data/ami-id
Quando você usa o IMDSv2 para solicitar os metadados da instância, a solicitação deve incluir o seguinte:
-
Uma solicitação
PUT: use uma solicitaçãoPUTpara solicitar a inicialização de uma sessão para o serviço de metadados da instância. A solicitaçãoPUTretorna um token que deve ser incluído em solicitaçõesGETsubsequentes para o serviço de metadados da instância. O token é exigido para acessar metadados ao usar o IMDSv2. -
O token: inclua o token em todas as solicitações
GETpara o serviço de metadados da instância. Quando o uso do token está definido comorequired, as solicitações sem um token válido ou com um token expirado recebem um código de erro HTTP401 - Unauthorized. Para obter informações sobre como alterar o uso do token, consulte update-instance-metadata-options na AWS CLI Command Reference.-
O token é uma chave específica da instância. O token não é válido em outras instâncias e será rejeitado se você tentar usá-lo fora da instância na qual foi gerado.
-
A solicitação
PUTdeve incluir um cabeçalho que especifique a vida útil (TTL) do token, em segundos. O TTL pode ser especificado em no máximo seis horas (21.600 segundos). O token representa uma sessão lógica. O TTL especifica o período de validade do token e, portanto, a duração da sessão. -
Depois que o token expira, para continuar a acessar os metadados da instância, crie uma nova sessão usando outra solicitação
PUT. -
É possível optar por reutilizar um token ou criar um novo token para cada solicitação. Para um número pequeno de solicitações, pode ser mais fácil gerar e usar imediatamente um token a cada vez que você precisar acessar o serviço de metadados da instância. Mas, para obter eficiência, é possível especificar uma duração maior para o token e reutilizá-lo, em vez de escrever uma solicitação
PUTtoda vez que precisar solicitar metadados da instância. Não há um limite prático para o número de tokens simultâneos, em que cada um representa sua própria sessão. No entanto, o IMDSv2 ainda é restringido pela conexão do serviço de metadados da instância e pelos limites de controle de utilização. Para obter mais informações, consulte Controle de utilização de consulta no Guia do usuário do Amazon Elastic Compute Cloud para instâncias do Linux.
-
Os métodos HTTP GET e HEAD são permitidos em solicitações de metadados de instâncias do IMDSv2. As solicitações PUT serão rejeitadas se contiverem um cabeçalho X-Forwarded-For.
Por padrão, a resposta a solicitações PUT tem um limite de saltos de resposta (vida útil) de 1 no nível de protocolo IP. Se você precisar de um limite maior de saltos, é possível ajustar o limite usando o comando update-instance-metadata-options. Por exemplo, um limite de saltos maior pode ser necessário para compatibilidade com versões anteriores de serviços de contêiner em execução na instância. Para obter mais informações, consulte update-instance-metadata-options na AWS CLI Command Reference.
Transição para usar o Serviço de metadados da instância versão 2
O uso do Serviço de metadados de instância versão 2 (IMDSv2) é opcional. O Serviço de metadados de instância versão 1 (IMDSv1) continuará a ter suporte indefinidamente. Se você optar por migrar usando o IMDSv2, recomendamos usar as ferramentas e o caminho de transição a seguir.
Ferramentas para ajudar com a transição para o IMDSv2
Se seu software usar o IMDSv1, use as ferramentas a seguir para ajudar a configurar o software para usar o IMDSv2.
-
Software da AWS: as versões mais recentes dos AWS SDKs e da AWS CLI oferecem suporte ao IMDSv2. Para usar o IMDSv2, verifique se as instâncias têm as versões mais recentes dos AWS SDKs e da AWS CLI. Para obter informações sobre como atualizar a AWS CLI, consulte Installing, updating, and uninstalling the AWS CLI no Guia do usuário da AWS Command Line Interface. Todos os pacotes de software Amazon Linux 2 suportam IMDSv2.
-
Métrica de instância: o IMDSv2 usa sessões com token, enquanto o IMDSv1 não usa. A métrica da instância
MetadataNoTokendo CloudWatch rastreia o número de chamadas para o serviço de metadados da instância 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. Para obter mais informações, consulte Visualizar métricas de instâncias no Amazon Lightsail. -
Atualizações para operações de API do Lightsail e comandos da AWS CLI: para instâncias existentes, você pode usar o comando update-instance-metadata-options da AWS CLI (ou a operação de API UpdateInstanceMetadataOptions) para exigir o uso do IMDSv2. O comando a seguir é um exemplo. Certifique-se de substituir
InstanceNamepelo nome da sua instância eRegionNamepelo nome da Região da AWS em que sua instância está.aws lightsail update-instance-metadata-options --regionRegionName--instance-nameInstanceName--http-tokens required
Caminho recomendado para exigir acesso ao IMDSv2
Usando as ferramentas anteriores, recomendamos que você siga este caminho para fazer a transição para o IMDSv2:
Etapa 1: No início
Atualize os AWS SDKs, a AWS CLI e o software que usam credenciais de perfil em suas instâncias para versões compatíveis com o IMDSv2. Para obter informações sobre como atualizar a AWS CLI, consulte Upgrading to the latest version of the AWS CLI no Guia do usuário da AWS Command Line Interface.
Depois, altere o software que acessa os metadados da instância diretamente (ou seja, que não usa um AWS SDK) usando as solicitações do IMDSv2.
Etapa 2: Durante a transição
Acompanhe o andamento da transição usando a métrica da instância do MetadataNoToken. Essa métrica mostra o número de chamadas para o serviço de metadados da instância que estão usando o IMDSv1 em suas instâncias. Para obter mais informações, consulte Visualizar métricas de instância.
Etapa 3: Quando tudo estiver pronto em todas as instâncias
Tudo estará pronto em todas as instâncias quando a métrica de instância MetadataNoToken registrar uso zero do IMDSv1. Neste estágio, você pode exigir o uso do IMDSv2 por meio do comando update-instance-metadata-options. É possível fazer essas alterações em instâncias em execução. Não é necessário reiniciar as instâncias.
A atualização de opções de metadados de instâncias atuais está disponível apenas por meio da API do Lightsail ou da AWS CLI. No momento, não está disponível no console do Lightsail. Para obter mais informações, consulte update-instance-metadata-options.
Documentação adicional do IMDS
A seguinte documentação do IMDS está disponível no Guia do usuário do Amazon Elastic Compute Cloud para instâncias do Linux e no Guia do usuário do Amazon Elastic Compute Cloud para instâncias do Windows:
nota
No Amazon EC2, esquemas de instância são chamados de imagens de máquina da Amazon (AMIs).
-
Para instâncias do Linux:
-
Para instâncias Windows: