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.
- Saiba mais sobre scripts de inicialização na visão geral do script de inicialização.
- Saiba mais sobre scripts de desligamento em Como executar scripts de desligamento.
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
- Definir metadados personalizados.
- Consultar metadados da VM.
- Receber avisos de migração em tempo real do servidor de metadados.
- Configurar e consultar atributos de convidado.