Cada instância de máquina virtual (VM) armazena seus metadados em um servidor de metadados. Sua VM tem acesso automático à API do servidor de metadados sem qualquer autorização adicional. 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 valores-chave. Alguns diretórios contêm subdiretórios.
Este documento fornece uma visão geral sobre os metadados da VM e explica os tipos e propriedades dos metadados da VM.
Usos de metadados da VM
As seções a seguir descrevem alguns cenários em que você pode usar entradas de metadados para gerenciar suas VMs.
Scripts de inicialização e desligamento
O servidor de metadados é particularmente útil quando usado em combinação com scripts de inicialização e desligamento porque você pode usar o servidor de metadados para obter informações exclusivas sobre uma VM de maneira programática, sem autorização adicional.
Por exemplo, você pode escrever um script de inicialização que obtenha o par de valores-chave de metadados para o IP externo de uma VM e usar esse IP em seu script para configurar um banco de dados. Como as chaves de metadados predefinidas do Compute Engine são as mesmas em todas as VMs, você pode reutilizar seu script sem precisar atualizá-lo para cada VM. Isso ajuda você a criar códigos menos frágeis para seus aplicativos.
- Para obter mais informações sobre scripts de inicialização, consulte visão geral do script de inicialização .
- Para obter mais informações sobre scripts de encerramento, consulte Executando scripts de encerramento .
Manutenção de host
O servidor de metadados fornece informações sobre a opção de agendamento de uma VM no diretório scheduling/
metadados usando a chave maintenance-event
. Você pode usar esses valores de metadados para notificá-lo quando um evento de manutenção estiver prestes a acontecer, para que você possa preparar seu ambiente para o evento. Para obter mais informações, consulte Obter avisos de migração em tempo real .
Atributos de convidado
Os atributos de convidado são um tipo específico de metadados personalizados nos quais seus aplicativos podem gravar durante a execução em suas VMs. Use atributos de convidado somente para casos de uso que exigem pequenas quantidades de dados que não mudam com frequência. Para obter mais informações sobre atributos de convidados, consulte Definir e consultar atributos de convidados .
Atributos do parceiro
Os atributos do parceiro são um tipo específico de metadados de instância. Google Cloudos serviços podem usar atributos de parceiro para criar um namespace no qual podem definir entradas de metadados de instância. Você pode definir, atualizar, excluir e visualizar os valores das entradas de metadados da instância para configurar esse serviço.
Por exemplo, ao usar identidades de carga de trabalho gerenciadas para o Compute Engine, você pode especificar os detalhes de configuração nas entradas de metadados do namespace desse serviço .
Considerações de segurança de metadados
Quando você faz uma solicitação para obter informações do servidor de metadados, sua solicitação e a resposta de metadados subsequente nunca saem do host físico que está executando a VM.
No entanto, qualquer processo que possa consultar a URL de metadados tem acesso a todos os valores no servidor de metadados. Isso inclui quaisquer valores de metadados personalizados, certificados de cliente e chaves privadas que você grava no servidor. O Google recomenda que você tenha cuidado ao gravar valores confidenciais no servidor de metadados ou ao executar processos de terceiros. Você deve colocar em sandbox qualquer processo que não possa acessar o servidor de metadados.
Terminais do servidor de metadados
O servidor de metadados pode ser acessado a partir dos seguintes endpoints:
- Um ponto de extremidade http:
http://metadata.google.internal/computeMetadata/v1
. Isto é acessível a partir de todas as VMs, incluindo VMs protegidas. - Um ponto de extremidade https:
https://metadata.google.internal/computeMetadata/v1
. Isso é acessível somente 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 adicional para transmissão de informações entre o servidor de metadados e a VM. Este endpoint está disponível apenas para VMs protegidas.
Benefícios de usar o endpoint do servidor de metadados HTTPS
Usar o 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 confidenciais. Impede que um invasor execute qualquer uma das seguintes ações:
- Falsificar ou personificar o servidor de metadados para obter acesso a uma VM
- Visualizar ou adulterar metadados confidenciais antes que cheguem à VM
Reduz custos : ajuda a evitar os custos associados a violações de segurança
Como funciona o processo
Para VMs blindadas que possuem o ambiente convidado instalado, os seguintes processos ocorrem em sua 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. Este certificado não é armazenado em cache no servidor de metadados e é recriado em cada chamada para o ponto final do certificado do cliente a partir do ambiente convidado.
Para locais de armazenamento de identidade do cliente e certificados raiz, consulte Onde os certificados são armazenados .
O Compute Engine transfere a parte pública do certificado raiz para o ambiente convidado da VM usando uma variável UEFI gerada pelo Google. Este certificado raiz é então armazenado na VM.
Periodicamente, o ambiente convidado solicita um certificado de identidade do cliente. Quando isso acontece, o agente convidado baixa esse certificado do servidor de metadados e o valida usando o certificado raiz dessa VM.
Ao fazer uma consulta ao endpoint do servidor de metadados HTTPS , você especifica os certificados de identidade do cliente que serão usados pelo servidor de metadados e pela VM para verificar se essa 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 CentOS, Red Hat Enterprise Linux (RHEL) e VMs 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 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 do 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 em execução 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 obter 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 valores-chave. As chaves de metadados diferenciam maiúsculas de minúsculas. Suas chaves podem ser chaves de metadados predefinidas ou personalizadas.
Chaves de metadados predefinidas
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 para algumas dessas 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 um valor automaticamente, você pode escolher entre um conjunto de valores disponíveis dependendo da configuração do sistema.Por exemplo, para ativar o login do SO para uma VM, você pode definir o valor da chave predefinida enable-oslogin
como TRUE
para essa VM. Para desabilitar o login do SO para essa VM, você pode atualizar o valor da chave para FALSE
.Você só pode atualizar os valores dessas chaves, mas não as próprias chaves.
Para obter mais informações sobre chaves de metadados predefinidas e uma lista dessas chaves, consulte Chaves de metadados predefinidas .
Chaves de metadados personalizados
Os metadados personalizados permitem que você crie e use seus próprios pares de valores-chave de metadados em uma VM individual ou em um projeto. Você pode adicionar novas chaves de metadados personalizados, atualizar os valores das chaves existentes e remover quaisquer entradas de metadados personalizados quando não precisar delas. Definir metadados personalizados é útil para transmitir valores arbitrários para VMs em um projeto. Também é útil para criar scripts de inicialização e desligamento .
Para saber como adicionar, atualizar ou remover metadados personalizados de suas 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ê define os metadados.
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 de um projeto. Quando você define esses metadados, as entradas de metadados se propagam 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 de projeto personalizados .
Metadados zonais
Os metadados zonais são definidos em um escopo zonal dentro de um projeto e fornecem informações sobre VMs nessa zona específica desse projeto. Quando você define metadados zonais, as entradas de metadados se propagam para todas as VMs nessa zona configurada nesse projeto. Quando comparados aos metadados do projeto, os metadados zonais ajudam no isolamento de falhas e fornecem maior confiabilidade.
O Compute Engine não fornece chaves predefinidas para metadados zonais. Você deve criar suas próprias chaves de metadados personalizados para definir metadados zonais. Saiba mais sobre como definir metadados zonais personalizados .
Metadados da instância
Os metadados da instância fornecem informações sobre uma instância de VM específica. Você define metadados de instância separadamente para cada instância de VM individual.
Você pode usar 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 suas 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 do projeto |
|
Metadados da instância |
|
Cada diretório armazena entradas de metadados na forma de pares de valores-chave. Algumas entradas de metadados também são diretórios que contêm outras chaves de metadados. As entradas de metadados que funcionam como diretórios são marcadas por uma barra final ( /
) 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 de diretório de metadados, você deve usar uma barra final ( /
) no nome da chave de metadados ao criar sua entrada de metadados personalizada.
As entradas de metadados de projeto e de zona são armazenadas no mesmo diretório project/
. Se você definir valores diferentes para as mesmas chaves de metadados personalizados para VMs em nível de projeto e em nível zonal, os valores de metadados zonais para essas chaves terão precedência sobre os valores de metadados do projeto nas respectivas zonas.
- Se você adicionar um valor de metadados zonal para uma chave de metadados que já tem um valor de metadados de projeto, o Compute Engine substituirá o valor de metadados do projeto para as VMs nesta zona especificada e atualizará o diretório
/project
com o valor zonal. - Se você adicionar um novo valor de metadados para todo o projeto para uma chave de metadados que já possui um valor de metadados zonal, nada será alterado. O Compute Engine retém o valor dos metadados zonais no diretório
/project
da zona específica. - Se você não especificar um valor de metadados zonal para uma chave de metadados personalizada em uma zona específica, mas a chave tiver um valor de metadados de projeto, suas VMs continuarão a ter os valores de metadados do projeto nessas zonas.
Por exemplo, suponha que você defina um par de metadados de key-1=value-1
para 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 seu 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 onde você não definiu nenhum metadado zonal para key-1
.
O que vem a seguir?
- Saiba mais sobre as chaves de metadados predefinidas que Google Cloud ofertas.
- Saiba como configurar entradas de metadados personalizados .
- Aprenda como definir e consultar atributos de convidados .
- Depois de definir valores para suas chaves de metadados, saiba como visualizar e consultar informações de metadados de VM para uma VM ou um projeto.
- Saiba como receber avisos de migração em tempo real do servidor de metadados.