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. O Compute Engine mantém as chaves e os valores de metadados das VMs e dos projetos em diretórios. Cada diretório armazena entradas de metadados na forma de pares de chave-valor. Alguns diretórios contêm subdiretórios.
Neste documento, apresentamos uma visão geral sobre metadados da VM e explicamos os tipos e propriedades desses metadados.
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, você pode escrever um script de inicialização que busca o par de chave-valor de metadados para o IP externo de uma VM e usar esse IP no seu script de configuração de banco de dados. Como as chaves de metadados predefinidas do Compute Engine são as mesmas 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 a opção de programação de uma VM
no diretório de metadados scheduling/
usando a chave
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.
Para mais informações, consulte
Receber avisos 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. Para mais informações sobre os atributos de convidado, consulte Definir e consultar atributos de convidado.
Atributos do parceiro
Os atributos do parceiro são um tipo específico de metadados de instância. Os serviços do Google Cloud podem usar atributos de parceiros para criar um namespace em que podem definir entradas de metadados de instância. É possível definir, atualizar, excluir e conferir os valores das entradas de metadados da instância para configurar esse serviço.
Por exemplo, quando você usa identidades de carga de trabalho gerenciadas para o Compute Engine, é possível especificar os detalhes de configuração nas entradas de metadados do namespace do serviço.
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, certificados de cliente e chaves privadas que você grava no servidor. O Google recomenda cuidado ao gravar valores confidenciais no servidor de metadados ou ao executar processos de terceiros. É necessário colocar em sandbox qualquer processo que não possa acessar o servidor de metadados.
Endpoints do servidor de metadados
O servidor de metadados pode ser acessado pelos seguintes endpoints:
- Um endpoint HTTP:
http://metadata.google.internal/computeMetadata/v1
. Isso é acessível de todas as VMs, incluindo as VMs protegidas. - Um endpoint https:
https://metadata.google.internal/computeMetadata/v1
. Esse recurso só pode ser acessado em VMs protegidas.
Endpoint do servidor de metadados HTTPS
O endpoint do servidor de metadados HTTPS (https://metadata.google.internal/computeMetadata/v1
) fornece
segurança para transmissão de informações entre o servidor de metadados e a VM.
Esse endpoint está disponível apenas para VMs protegidas.
Benefícios do uso do endpoint do servidor de metadados HTTPS
O uso do endpoint https para consultar o servidor de metadados oferece os seguintes benefícios:
Melhora a segurança: ajuda a impedir o acesso não autorizado aos seus metadados sensíveis. Ele impede que um invasor realize qualquer uma das seguintes ações:
- Falsificação ou falsificação do servidor de metadados para ter acesso a uma VM
- Visualizar ou adulterar metadados sensíveis antes que eles cheguem à VM
Redução de custos: ajuda a evitar os custos associados a violações de segurança.
Como funciona o processo
Para VMs protegidas que têm o ambiente do convidado instalado, os seguintes processos ocorrem na VM:
Quando a VM é inicializada, o Compute Engine faz o seguinte:
O Compute Engine cria três certificados da seguinte maneira:
- Um certificado raiz autoassinado: um certificado exclusivo gerado para a VM.
- Um certificado de identidade do servidor: um certificado para o servidor de metadados.
Um certificado de identidade do cliente: um certificado para o cliente. Esse certificado não é armazenado em cache no servidor de metadados e é recriado em cada chamada para o endpoint do certificado do cliente no ambiente de convidado.
Para saber onde os certificados de identidade e raiz do cliente são armazenados, consulte Onde os certificados são armazenados.
O Compute Engine transfere a parte pública do certificado raiz para o ambiente de convidado da VM usando uma variável UEFI gerada pelo Google. Esse certificado raiz é armazenado na VM.
Periodicamente, o ambiente de convidado solicita um certificado de identidade do cliente. Quando isso acontece, o agente convidado faz o download desse certificado do servidor de metadados e o valida usando o certificado raiz da VM.
Ao fazer uma consulta no endpoint do servidor de metadados HTTPS, você especifica os certificados de identidade do cliente, que são usados pelo servidor de metadados e pela VM para verificar se a consulta está autorizada.
Onde os certificados são armazenados
As seções a seguir listam o local de armazenamento dos certificados de identidade raiz e do cliente gerados pelo Compute Engine.
Certificados raiz
CentOS/RHEL/Rocky
Os certificados raiz para VMs CentOS, Red Hat Enterprise Linux (RHEL) e Rocky Linux são armazenados nos seguintes locais:
/run/google-mds-mtls/root.crt
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
Debian/Ubuntu
Os certificados raiz para VMs do Debian e Ubuntu são armazenados nos seguintes locais:
/run/google-mds-mtls/root.crt
/etc/ssl/certs/ca-certificates.crt
Fedora
Os certificados raiz para VMs Fedora são armazenados nos seguintes locais:
/run/google-mds-mtls/root.crt
/etc/pki/tls/certs/ca-bundle.crt
SLES
Os certificados raiz para VMs do SUSE Linux Enterprise Server (SLES) são armazenados nos seguintes locais:
/run/google-mds-mtls/root.crt
/etc/ssl/ca-bundle.pem
Windows
Os certificados raiz para VMs Windows são armazenados nos seguintes locais:
C:\ProgramData\Google\ComputeEngine\mds-mtls-root.crt
Cert:\LocalMachine\Root
Certificados de identidade do cliente
Os certificados de identidade do cliente são acessíveis a todos os processos executados na VM. Isso é necessário para que todos os processos tenham acesso ao servidor de metadados usando o endpoint https, semelhante ao endpoint http. Para mais informações, consulte Considerações de segurança de metadados.
Linux
Os certificados de identidade do cliente para VMs Linux são armazenados no seguinte local:
/run/google-mds-mtls/client.key
Windows
Os certificados de identidade do cliente para VMs do Windows são armazenados nos seguintes locais:
C:\ProgramData\Google\ComputeEngine\mds-mtls-client.key
Cert:\LocalMachine\My
Chaves de metadados predefinidas e personalizadas
Cada entrada de metadados é armazenada no servidor de metadados como pares de chave-valor. As chaves de metadados diferenciam maiúsculas de minúsculas. Suas chaves podem ser predefinidas ou personalizadas.
Chaves de metadados predefinidas
As chaves de metadados predefinidas são chaves de metadados criadas pelo Compute Engine.
Quando você cria uma VM, o Compute Engine define automaticamente
os valores de metadados de algumas chaves nessa VM, por exemplo, o ID da instância
da VM ou o ID do projeto. Para chaves predefinidas em que o Compute Engine não
define automaticamente um valor, é possível escolher um conjunto de valores disponíveis
dependendo da configuração do sistema.
Por
exemplo, para ativar o Login do SO em uma VM, defina o valor da chave predefinida enable-oslogin
como
TRUE
para essa VM. Para desativar o Login do SO para essa VM, atualize
o valor da chave para FALSE
.
Só é possível atualizar os valores dessas chaves, mas não as chaves em si.
Para mais informações sobre chaves de metadados predefinidas e uma lista delas, consulte Chaves de metadados predefinidas.
Chaves de metadados personalizadas
Com os metadados personalizados, é possível criar e usar seus próprios pares de chave-valor de metadados em uma VM individual ou um projeto. É possível adicionar novas chaves de metadados personalizadas, atualizar os valores das chaves existentes e remover entradas de metadados personalizados quando não precisar delas. Definir metadados personalizados é útil para transmitir valores arbitrários às VMs em um projeto. Também é útil para criar scripts de inicialização e desligamento.
Para saber como adicionar, atualizar ou remover metadados personalizados das VMs, consulte Configurar metadados personalizados.
Tipos de metadados
As entradas de metadados da VM podem fornecer informações específicas para uma VM individual ou um projeto. Seus metadados são divididos em metadados de projeto, zonais e de instância, com base no escopo em que você os definiu.
Metadados do projeto
Os metadados do projeto são definidos no escopo do projeto e fornecem informações que se aplicam a todas as VMs em um projeto. Quando você define esses metadados, as entradas de metadados são propagadas para todas as VMs desse projeto.
Você pode usar chaves de metadados predefinidas e personalizadas para definir metadados do projeto. Saiba mais sobre chaves de metadados de projeto predefinidas e como definir metadados personalizados de projeto.
Metadados da zona
Os metadados de zona são definidos em um escopo de zona em um projeto e fornecem informações sobre as VMs nessa zona específica do projeto. Quando você define metadados de zona, as entradas de metadados são propagadas para todas as VMs na zona configurada no projeto. Comparados aos metadados do projeto, os metadados zonais ajudam no isolamento de falhas e oferecem maior confiabilidade.
O Compute Engine não fornece chaves predefinidas para metadados zonais. É necessário criar suas próprias chaves de metadados personalizados para definir metadados zonais. Saiba mais sobre como definir metadados personalizados zonais.
Metadados de instância
Os metadados de instância fornecem informações sobre uma instância de VM específica. Você define os metadados de instâncias separadamente para cada instância de VM.
Você pode usar as chaves de metadados predefinidas e personalizadas para definir metadados de instância. Saiba mais sobre chaves de metadados de instância predefinidas e como Definir metadados de instância personalizados.
Como os metadados são organizados
O Compute Engine armazena e mantém as chaves e os valores de metadados das VMs e projetos em listagens de diretórios. Dependendo do tipo de metadados, o Compute Engine armazena entradas de metadados em um dos seguintes diretórios:
Tipo de metadados | Diretório |
---|---|
Metadados de todo o projeto e zonal |
|
Metadados de instância |
|
Cada diretório armazena entradas de metadados na forma de pares de chave-valor. Algumas entradas de metadados são diretórios em que há outras chaves de metadados. As entradas de metadados que funcionam como diretórios são marcadas por uma barra à direita (/
) no nome da chave de metadados. Por exemplo, /project/attributes/
é um diretório no diretório project/
que contém outras chaves de metadados. Para criar sua própria listagem do diretório de metadados, use uma barra à direita (/
) no nome da chave de metadados ao criar sua entrada de metadados personalizada.
As entradas de metadados do projeto e da zona são armazenadas no mesmo
diretório project/
. Se você definir valores diferentes para as mesmas chaves de
metadados personalizados em VMs no nível do projeto e no nível da zona, os valores de
metadados de zona dessas chaves terão precedência sobre os
metadados do projeto nas respectivas zonas.
- Se você adicionar um valor de metadados de zona a uma chave de metadados que já
tenha um valor de metadados do projeto, o Compute Engine vai substituir o valor de
metadados do projeto nas VMs da zona especificada e atualizar o diretório
/project
com o valor da zona. - Se você adicionar um novo valor de metadados para todo o projeto a uma chave de metadados
que já tenha um valor de metadados de zona, nada será alterado. O Compute Engine mantém o
valor de metadados de zona no diretório
/project
da zona específica. - Se você não especificar um valor de metadados de zona para uma chave de metadados personalizada em uma zona específica, mas a chave tiver um valor de metadados do projeto, as VMs continuarão tendo os valores de metadados do projeto nessas zonas.
Por exemplo, suponha que você defina um par de metadados de key-1=value-1
em todo o projeto. Suponha que você também defina um par de metadados zonais
de key-1=zonal-value-1
apenas para a zona us-central1-a
. Todas as VMs na zona us-central1-a
do projeto herdam key-1=zonal-value1
como o par de metadados. O par de metadados
permanece key-1=value-1
para todas as VMs em outras zonas em que você não
definiu metadados zonais para key-1
.
A seguir
- Saiba mais sobre as chaves de metadados predefinidas que o Google Cloud oferece.
- Saiba como configurar entradas de metadados personalizadas.
- Saiba como definir e consultar atributos de convidado.
- Depois de definir os valores das chaves de metadados, saiba como visualizar e consultar as informações de metadados da VM para uma VM ou um projeto.
- Saiba como receber avisos de migração em tempo real do servidor de metadados.