Metadados da VM

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Cada instância de máquina virtual (VM) armazena os metadados em um servidor de metadados. O acesso da VM à API do servidor de metadados é fornecido automaticamente, sem qualquer autorização extra. Os metadados são armazenados como pares de key:value.

Há um conjunto de chaves de metadados padrão disponíveis para VMs em execução no Compute Engine. Veja uma lista dessas chaves em Valores de metadados padrão. Também é possível usar suas próprias chaves de metadados personalizadas em uma VM ou projeto individual. Saiba mais em Como configurar metadados personalizados.

Depois de definir uma entrada de metadados padrão ou personalizada, é possível analisar as informações de metadados dessa VM ou projeto. Saiba como ver os metadados em Como consultar metadados da VM.

Usos dos metadados da VM

Nas seções a seguir, descrevemos alguns cenários em que é possível usar entradas de metadados para gerenciar as VMs.

Scripts de inicialização e desligamento

O servidor de metadados é útil principalmente quando usado com os scripts de inicialização e desligamento. Você pode usá-lo para receber programaticamente informações exclusivas sobre uma VM sem a necessidade de autorização extra.

Por exemplo, é possível escrever um script de inicialização que busca o par key:value de metadados para o IP externo de uma VM e usar esse IP no script para configurar um banco de dados. Como as chaves de metadados padrão são iguais em todas as VMs, é possível reutilizar o script sem precisar atualizá-lo para cada VM. Com isso, é possível criar um código mais robusto para os aplicativos.

Manutenção do host

O servidor de metadados fornece informações sobre uma opção de programação de VMs usando a entrada do diretório de metadados scheduling/ e o atributo maintenance-event. Use esses valores de metadados para notificar quando um evento de manutenção estiver prestes a acontecer e preparar o ambiente para o evento. Saiba mais em Como receber notificações de migração em tempo real.

Atributos de convidado

Os atributos de convidado são um tipo específico de metadados personalizados em que os aplicativos podem gravar enquanto estão sendo executados nas VMs. Use atributos de convidado somente em casos de uso que exijam pequenas quantidades de dados que não mudam com frequência. Saiba mais sobre atributos de convidado em Como configurar e consultar os atributos de convidado.

Considerações sobre a segurança dos metadados

Quando você faz uma solicitação para receber informações do servidor de metadados, a solicitação e a resposta de metadados subsequente nunca deixam o host físico que está executando a VM.

No entanto, qualquer processo que possa consultar o URL de metadados tem acesso a todos os valores no servidor de metadados. Isso inclui todos os valores de metadados personalizados que você grava no servidor. O Google recomenda cuidado ao gravar valores confidenciais no servidor de metadados ou ao executar processos de terceiros.

Limitações

  • Todas as solicitações com o cabeçalho X-Forwarded-For são automaticamente rejeitadas pelo servidor de metadados. Isso ocorre porque, em geral, esse cabeçalho é usado para indicar que a solicitação foi enviada por proxy, ou seja, talvez ela não tenha sido feita por um usuário autorizado. Por motivos de segurança, todas as solicitações desse tipo são rejeitadas.

  • Quando você usa o comando curl para recuperar metadados do servidor, observe que alguns caracteres codificados não são aceitos no caminho da solicitação. Caracteres codificados são aceitos apenas no caminho da consulta.

    Por exemplo, esta solicitação pode não funcionar:

    curl "http://metadata.google.internal/computeMetadata/v1/VM/service-accounts/123456789-compute%40developer.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"

    Para que ela funcione, substitua o caractere codificado não aceito no caminho da solicitação (%40) pelo valor equivalente aceito (@).

    curl "http://metadata.google.internal/computeMetadata/v1/VM/service-accounts/1234567898-compute@developer.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"

    A tabela a seguir resume os caracteres codificados que não são aceitos em um caminho de solicitação.

    Caractere codificado Valor aceito
    %21
    
    !
    %24
    
    $
    %27
    
    '
    %28
    
    (
    %29
    
    )
    %2A
    
    *
    %2C
    
    ,
    %40
    
    @

Partes de uma solicitação de metadados

A tabela a seguir resume as principais partes de uma solicitação de consulta de metadados.

Componentes Descrição
URL raiz

Todos os valores de metadados são definidos como subcaminhos abaixo do seguinte URL raiz:


http://metadata.google.internal/computeMetadata/v1
Cabeçalho da solicitação

O cabeçalho a seguir precisa estar em todas as solicitações:


Metadata-Flavor: Google

Esse cabeçalho indica que a solicitação foi enviada com a intenção de recuperar valores de metadados, em vez de recuperar involuntariamente de uma fonte insegura e permite que o servidor de metadados retorne os dados solicitados. Se você não fornecer esse cabeçalho, o servidor de metadados negará sua solicitação.

A seguir