Acesse e configure o Instance Metadata Service (IMDS) no Lightsail - Amazon Lightsail

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á.

Acesse e configure o Instance Metadata Service (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 blueprints de instância no Lightsail são compatíveis com IMDSv2. Use a métrica da instância MetadataNoToken do 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 do Amazon Linux 2023 terão o IMDSv2 configurado por padrão.

Os exemplos a seguir usam Linux, PowerShell shell script e IMDSv2 para recuperar os itens de metadados da instância de nível superior. 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) ou token (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ção PUT para solicitar a inicialização de uma sessão para o serviço de metadados da instância. A solicitação PUT retorna um token que deve ser incluído em solicitações GET subsequentes 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 GET para o serviço de metadados da instância. Quando o uso do token está definido como required, as solicitações sem um token válido ou com um token expirado recebem um código de erro HTTP 401 - Unauthorized. Para obter informações sobre como alterar o requisito de uso do token, consulte update-instance-metadata-optionsna Referência de AWS CLI Comandos.

    • 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 PUT deve 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 PUT toda 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-optionsna Referência de AWS CLI Comandos.

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.

  • AWS software: as versões mais recentes dos AWS SDKs e o AWS CLI suporte ao IMDSv2. Para usar o IMDSv2, certifique-se de que suas instâncias tenham as versões mais recentes dos AWS SDKs e do. AWS CLI Para obter informações sobre como atualizar o AWS CLI, consulte Instalando, atualizando e desinstalando o AWS CLI no Guia do AWS Command Line Interface Usuário. 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 MetadataNoToken do 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 Visualização de métricas de instância no Amazon Lightsail.

  • Atualizações nas operações AWS CLI e comandos da API Lightsail: para instâncias existentes, você pode usar update-instance-metadata-options AWS CLI o comando (ou a operação da API) para exigir UpdateInstanceMetadataOptionso uso do IMDSv2. O comando a seguir é um exemplo. Certifique-se de InstanceNamesubstituir pelo nome da sua instância e RegionNamepelo nome em que Região da AWS sua instância está.

    aws lightsail update-instance-metadata-options --region RegionName --instance-name InstanceName --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 AWS CLI, o e seu software que usa credenciais de função em suas instâncias para versões compatíveis com IMDSv2. Para obter informações sobre como atualizar o AWS CLI, consulte Atualizando para a versão mais recente do AWS CLI no Guia do AWS Command Line Interface Usuário.

Em seguida, altere o software que acessa diretamente os metadados da instância (em outras palavras, 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. Nesse 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 das opções de metadados da instância para instâncias existentes está disponível somente por meio da API Lightsail ou do. AWS CLI No momento, ele 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).