Funcionalidade do agente convidado


Este documento oferece uma vista geral da funcionalidade essencial do agente convidado, um componente crítico do ambiente convidado. O ambiente convidado contém scripts, daemons e ficheiros binários que as instâncias precisam de executar no Compute Engine. Para mais informações, consulte o artigo Ambiente convidado.

Como funciona o agente convidado

A partir da versão 20250901.00, o agente convidado usa uma arquitetura baseada em plug-ins. Este design melhora a fiabilidade e a flexibilidade, separando as funções do agente em componentes distintos.

A arquitetura do agente convidado é composta por alguns componentes principais:

  • Gestor de agentes convidados: o processo central na sua instância que inicia, para e monitoriza todos os plug-ins.
  • Plugin principal: este plugin processa os serviços essenciais de que a sua instância precisa para ser executada Google Cloud. Não é possível desativar a respetiva funcionalidade.
  • Plug-ins opcionais: estes são plug-ins que integram a sua instância com outros Google Cloud serviços, como o Cloud Monitoring. Pode controlar qual destes plug-ins é executado na sua instância.
  • Plano de controlo do agente: trata-se de um serviço gerido Google Cloud que é executado na infraestrutura de back-end da Google e gere o ciclo de vida dos plug-ins opcionais, incluindo a respetiva instalação e atualizações.

Para mais informações sobre a arquitetura do agente convidado, consulte o artigo Acerca do agente convidado.

Funcionalidade essencial

O plug-in principal é responsável pelos serviços fundamentais de que a sua instância precisa para funcionar no Compute Engine. A secção seguinte detalha as funções fornecidas pelo plug-in principal. Pode personalizar muitas destas funcionalidades através do ficheiro de configuração do agente convidado.

Configuração e otimizações iniciais da instância

O agente convidado executa várias tarefas de configuração para preparar a instância para execução no Compute Engine. Conforme mostrado na tabela seguinte, algumas tarefas são executadas apenas no primeiro arranque, enquanto outras são executadas em todos os arranques.

Tarefa Frequência
Gere chaves de anfitrião SSH No primeiro arranque
Crie a configuração boto para usar o Cloud Storage No primeiro arranque
Otimize para o SSD local Em cada arranque
Ative a funcionalidade de várias filas em todos os dispositivos virtionet Em cada arranque

Pode controlar estas tarefas de configuração configurando as InstanceSetup opções do ficheiro de configuração do agente convidado. Por exemplo, pode desativar a otimização do SSD local definindo optimize_local_ssd = false.

Recolha de telemetria do sistema

O agente convidado regista algumas informações básicas de telemetria do sistema no momento do arranque e, em seguida, uma vez a cada 24 horas. As informações registadas incluem o seguinte:

  • Versão e arquitetura do agente convidado
  • Nome e versão do sistema operativo
  • Versão e lançamento do kernel do sistema operativo

Pode desativar a recolha de telemetria definindo a chave de metadados disable-guest-telemetry como true. Para definir metadados, consulte o artigo Defina e remova metadados personalizados.

Sincronização do relógio (apenas no Linux)

Para garantir uma indicação precisa da hora, o agente convidado usa o componente clock_skew_daemon para corrigir periodicamente o relógio na sua instância de modo a corresponder ao servidor físico no qual é executado. Este processo evita um problema denominado diferença de tempo e gera uma mensagem system time has changed nos registos da sua instância, que confirma que a hora foi sincronizada com êxito.

Normalmente, o agente sincroniza o relógio após um evento de paragem ou início, ou após uma migração.

Pode desativar o componente clock_skew_daemon definindo clock_skew_daemon = false no ficheiro de configuração do agente convidado.

Execução de scripts de metadados

Pode usar scripts de arranque e scripts de encerramento para realizar tarefas automatizadas sempre que a instância é iniciada ou parada.

O agente convidado ajuda na execução destes scripts da seguinte forma:

  • Executa scripts numa shell.
  • Se especificar vários scripts (por exemplo, se usar startup-script e startup-script-url), o agente executa ambos.
  • Quando são fornecidos vários scripts para o mesmo evento, o agente executa primeiro o script do URL.
  • Depois de um script terminar, o agente regista o respetivo estado de saída.

Pode configurar a execução de scripts de metadados modificando as MetadataScripts opções no ficheiro de configuração do agente convidado.

Gestão de contas de utilizador e chaves SSH

O agente convidado usa um accounts_daemon para gerir contas de utilizadores locais e chaves SSH, que controlam o acesso à instância. O comportamento específico varia entre os sistemas operativos Linux e Windows.

Pode modificar as opções de gestão de contas configurando as opções Accounts no ficheiro de configuração do agente convidado.

Linux

O Início de sessão do SO é usado para gerir o acesso SSH às suas instâncias através do IAM sem ter de criar e gerir chaves SSH individuais. Para mais informações sobre o Início de sessão do SO, consulte o artigo Início de sessão do SO. Em instâncias do Linux, se o Início de sessão do SO não estiver ativado, o agente cria e gere contas de utilizador locais e respetivas chaves SSH através das definições de metadados.

Quando adiciona ou remove chaves SSH dos metadados da instância ou do projeto, o agente convidado cria ou elimina uma conta de utilizador local. O agente convidado também realiza as seguintes ações para gerir estas contas de utilizador local:

  • Mantém o ficheiro authorized_keys para cada conta de utilizador que gere da seguinte forma:
    • Quando adiciona chaves SSH aos metadados, o agente cria um ficheiro para a conta de utilizador.authorized_keys
    • Quando remove todas as chaves SSH de um utilizador dos metadados, o agente elimina o ficheiro authorized_keys da conta desse utilizador.
  • Gerir privilégios de administrador através do grupo google-sudoers Linux. Todos os membros deste grupo recebem autorizações sudo na instância.
  • Adiciona todas as contas de utilizador que aprovisiona ao grupo google-sudoers.
  • Adiciona contas de utilizador a quaisquer grupos Linux adicionais que especificar na opção groups do ficheiro de configuração do agente convidado.

Windows

Em instâncias do Windows, o agente cria automaticamente contas de utilizador locais para qualquer conta de utilizador SSH especificada nas chaves SSH de metadados ao nível da instância ou do projeto. O agente convidado também processa a criação de contas de utilizador e a definição ou a reposição de palavras-passe. Estas contas de utilizador local são necessárias para estabelecer ligação a instâncias do Windows através do SSH.

Pode impedir o aprovisionamento não intencional de utilizadores do AD desativando o gestor da conta na instância do controlador do AD. Para mais informações sobre a configuração do AD no Compute Engine, consulte o artigo sobre a implementação de controladores de domínio.

Configuração do Início de sessão do SO (apenas Linux)

O Início de sessão do SO é usado para gerir o acesso SSH às suas instâncias através do IAM sem ter de criar e gerir chaves SSH individuais. Para mais informações sobre o Início de sessão do SO, consulte a documentação do Início de sessão do SO.

Quando ativa o Início de sessão do SO, o agente convidado é responsável por configurar a instância para usar o Início de sessão do SO.

O agente convidado configura o Início de sessão do SO concluindo as seguintes tarefas:

  • Adiciona um bloco de configuração do Google ao ficheiro de configuração SSHD e reinicia o SSHD.
  • Adiciona entradas de início de sessão do SO ao ficheiro nsswitch.conf.
  • Adiciona entradas de Início de sessão do SO ao ficheiro de configuração PAM para SSHD.

Se desativar o início de sessão no SO, as alterações de configuração são removidas. As opções na secção Accounts do ficheiro de configuração não se aplicam aos utilizadores do Início de sessão do SO.SSHD

Gestão de redes

O agente convidado configura automaticamente as interfaces de rede da instância no arranque. Lê a configuração de rede do servidor de metadados para garantir que a sua instância se liga corretamente à rede e pode aceder a outros serviços do Google Cloud.

Pode controlar o comportamento de gestão de rede do agente configurando as opçõesNetworkInterfaces no ficheiro de configuração do agente convidado. Por exemplo, pode definir a opção manage_primary_nic = true para que o agente faça a gestão da placa de rede (NIC) principal, além das NICs secundárias.

Em cada arranque, o agente de hóspedes realiza as seguintes tarefas principais:

  • Ativa interfaces de rede: o agente deteta o gestor de rede ativo no seu SO e usa-o para ativar todas as NICs de rede secundárias.
  • Configura rotas de IP: o agente configura as rotas de IP (apenas IPv4) necessárias para funcionalidades como o encaminhamento de IP e os intervalos de IP de alias da seguinte forma:
    • Define rotas na interface Ethernet principal.
    • Configura as rotas da Google por predefinição, com o ID do protocolo de encaminhamento 66. Este ID é um espaço de nomes para endereços IP configurados do agente convidado. Pode alterar este ID através da opção ethernet_proto_id no ficheiro de configuração do agente convidado.
  • Cria uma rota para o servidor de metadados: o agente garante que a NIC principal consegue sempre comunicar com o servidor de metadados para obter informações da instância.
  • Configuração de VLAN: se a sua instância estiver configurada para estabelecer ligação a uma rede local virtual (VLAN), o agente convidado processa automaticamente a configuração. Lê a configuração de VLAN do servidor de metadados e configura a interface de rede na instância para usar a etiqueta de VLAN correta. Isto garante que a instância comunica na rede lógica pretendida. É importante notar que, se a VLAN estiver anexada à NIC principal, o agente convidado configura-a mesmo que o manage_primary_nic esteja desativado.

Seleção do gestor de redes

No Linux, o agente convidado deteta automaticamente o gestor de rede disponível no sistema e usa-o para configurar as interfaces de rede. O agente verifica os gestores suportados por ordem de prioridade, de netplan a dhclient.

A tabela seguinte apresenta os gestores de rede suportados, organizados pelo sistema operativo ao qual estão mais frequentemente associados por predefinição. A configuração da instância específica pode ser diferente, mas esta tabela reflete o gestor de rede predefinido para os sistemas operativos indicados.

Gestor de redes Sistema operativo Localização da configuração Exemplo de caminho Notas
netplan
  • Debian 12 ou posterior
  • Ubuntu 20.04 ou posterior
/run/netplan/ /run/netplan/20-google-guest-agent-eth0.yaml O agente também pode usar uma localização de entrada em /etc/systemd/network/
wicked
  • SLES
/etc/sysconfig/network/ /etc/sysconfig/network/ifcfg-eth0 Os ficheiros ifcfg existentes não são substituídos e são ignorados.
NetworkManager
  • CentOS
  • RHEL
  • Rocky Linux
/etc/NetworkManager/system-connections/ /etc/NetworkManager/system-connections/google-guest-agent-eth0.nmconnection
systemd-networkd
  • Debian
/usr/lib/systemd/network/ /usr/lib/systemd/network/20-eth0-google-guest-agent.network
dhclient
  • Debian 11 ou anterior
  • Ubuntu 18.04 ou anterior
/run/ /run/dhclient.google-guest-agent.eth0.ipv4.pid Se nenhum dos outros gestores de rede for detetado, o agente convidado usa dhclient por predefinição.

Gestão segura de credenciais do servidor de metadados (MDS)

As VMs protegidas suportam agora a comunicação segura com o servidor de metadados através do ponto final HTTPS https://metadata.google.internal/computeMetadata/v1. Esta melhoria oferece um canal mais seguro para o acesso aos metadados.

Para ativar esta comunicação segura, o agente convidado obtém e armazena as credenciais necessárias no disco da instância. Estas credenciais são guardadas numa localização padrão, o que as torna acessíveis a qualquer aplicação cliente em execução na instância. Para rever estas localizações, consulte o artigo Onde são armazenados os certificados.

A configuração de certificados MDS HTTPS está desativada por predefinição. Para que as VMs protegidas configurem automaticamente os certificados MDS HTTPS, defina a chave de metadados disable-https-mds-setup como false na sua instância ou projeto. Para definir metadados, consulte o artigo Defina e remova metadados personalizados.

A gestão de credenciais pelo agente convidado inclui:

  • Atualização inicial: o certificado de raiz e as credenciais do cliente são atualizados sempre que o processo do agente convidado é iniciado.
  • Atualização automática: para maior segurança, o agente convidado atualiza automaticamente as credenciais do cliente a cada 48 horas.
  • Período de sobreposição: o agente gera e guarda novas credenciais enquanto as antigas permanecem válidas. O período de sobreposição garante que os clientes têm tempo suficiente para fazer a transição para as novas credenciais antes de as antigas expirarem. Este período de sobreposição também permite que o agente tente novamente a aquisição de credenciais em caso de falha, garantindo que existem credenciais válidas antes de as existentes ficarem inválidas.
  • Composição: o agente convidado garante que as credenciais do cliente consistem numa chave privada EC (curva elíptica) concatenada com o certificado de cliente.
  • Unicidade: o agente convidado garante que as credenciais são exclusivas de uma instância e não podem ser usadas noutro local.

Para mais informações sobre o ponto final do servidor de metadados HTTPS, consulte o artigo Acerca do ponto final do servidor de metadados HTTPS.

Por predefinição, o agente convidado escreve certificados diretamente no disco. No entanto, pode configurar o agente para integrar certificados nas lojas de certificados incorporadas do sistema operativo. Para ativar esta integração, defina a chave de metadados enable-https-mds-native-cert-store como true. Para definir metadados, consulte o artigo Defina e remova metadados personalizados.

O comportamento do agente para adicionar certificados a repositórios fidedignos do SO varia consoante o SO, da seguinte forma:

Linux

O agente convidado executa os seguintes passos:

  1. Adiciona o certificado de raiz do MDS ao repositório fidedigno do sistema. O caminho específico depende da distribuição do SO. Para rever estas localizações, consulte o artigo Armazenamento de certificados de raiz na loja de confiança do SO.
  2. Atualiza o repositório de confiança local executando o comando adequado para o SO, como update-ca-certificates ou update-ca-trust.

Windows

O agente adiciona credenciais de cliente a Cert:\LocalMachine\My e o certificado de raiz a Cert:\LocalMachine\Root.

Suporte de cluster de comutação por falha do Windows (apenas para Windows)

O agente convidado monitoriza o nó ativo no cluster de failover do Windows Server e coordena-se com o balanceador de carga interno para encaminhar todo o tráfego do cluster para o nó esperado. Google Cloud

Pode controlar este comportamento através dos seguintes campos nos metadados da instância ou no ficheiro instance_configs.cfg:

  • enable-wsfc: quando definido como true, o agente ignora todas as informações de encaminhamento de IP e começa a responder à porta de verificação de estado. A predefinição é false.
  • wsfc-agent-port: especifica a porta onde o agente responde às verificações de estado. A predefinição é 59998.
  • wsfc-addrs: uma lista de endereços IP separados por vírgulas. Esta definição avançada permite-lhe ter IPs de encaminhamento normais e IPs de cluster na mesma instância. Quando define esta opção, o agente apenas ignora a configuração automática para os IPs nesta lista. Por predefinição, este valor não está definido.

O que se segue?