Informazioni sui metadati della VM


Ogni istanza di macchina virtuale (VM) archivia i propri metadati su un server di metadati. La VM ha automaticamente accesso all'API del server di metadati senza alcuna autorizzazione aggiuntiva. Compute Engine gestisce le chiavi e i valori dei metadati per le VM e i progetti nelle directory. Ogni directory archivia le voci dei metadati sotto forma di coppie chiave-valore. Alcune directory contengono sottodirectory.

Questo documento fornisce una panoramica dei metadati delle VM e ne illustra i tipi e le proprietà.

Utilizzi dei metadati delle VM

Le sezioni seguenti descrivono alcuni scenari in cui puoi utilizzare le voci dei metadati per gestire le VM.

Script di avvio e arresto

Il server di metadati è particolarmente utile in combinazione con gli script di avvio e di arresto, perché puoi utilizzare questo server per ricevere informazioni specifiche su una VM in modo programmatico, senza autorizzazioni aggiuntive.

Ad esempio, puoi scrivere uno script di avvio che recupera la coppia chiave-valore dei metadati per l'indirizzo IP esterno di una VM e utilizzare questo indirizzo IP nel tuo script per configurare un database. Poiché le chiavi dei metadati predefinite di Compute Engine sono le stesse per ogni VM, puoi riutilizzare lo script senza doverlo aggiornare per ogni VM. Questo contribuisce a creare codice meno precario per le tue applicazioni.

Manutenzione dell'host

Il server di metadati fornisce informazioni sull'opzione di pianificazione di una VM nella directory dei metadati scheduling/ utilizzando la chiave maintenance-event. Puoi utilizzare questi valori dei metadati per ricevere una notifica quando sta per verificarsi un evento di manutenzione, in modo da poter preparare l'ambiente all'evento. Per saperne di più, consulta Ricevi notifiche relative alla migrazione live.

Attributi guest

Gli attributi guest sono un tipo specifico di metadati personalizzati su cui le applicazioni possono scrivere durante l'esecuzione sulle tue VM. Utilizza gli attributi guest solo per casi d'uso che richiedono piccole quantità di dati che non cambiano di frequente. Per saperne di più sugli attributi guest, consulta Imposta ed esegui query sugli attributi guest.

Attributi partner

Gli attributi partner sono un tipo specifico di metadati delle istanze. I servizi Google Cloudpossono utilizzare gli attributi partner per creare uno spazio dei nomi, all'interno del quale possono definire le voci dei metadati delle istanze. Puoi impostare, aggiornare, eliminare e visualizzare i valori delle voci dei metadati delle istanze per configurare il servizio.

Ad esempio, quando utilizzi le Workload Identity gestite per Compute Engine, puoi specificare i dettagli di configurazione nelle voci dei metadati dello spazio dei nomi del servizio.

Considerazioni sulla sicurezza dei metadati

Quando invii una richiesta per ottenere informazioni dal server di metadati, la richiesta e la successiva risposta dei metadati non lasciano mai l'host fisico su cui è in esecuzione la VM.

Tuttavia, qualsiasi processo che può eseguire query sull'URL dei metadati ha accesso a tutti i valori nel server di metadati, compresi tutti i valori dei metadati personalizzati, i certificati client e le chiavi private scritti sul server. Google consiglia prudenza quando si scrivono valori sensibili sul server di metadati o quando si eseguono processi di terze parti. Devi limitare tramite sandbox qualsiasi processo a cui non vuoi consentire di accedere al server di metadati.

Endpoint del server di metadati

Il server di metadati è accessibile dai seguenti endpoint:

  • Un endpoint HTTP: http://metadata.google.internal/computeMetadata/v1, accessibile da tutte le VM, incluse le Shielded VM.
  • Un endpoint https: https://metadata.google.internal/computeMetadata/v1, accessibile solo dalle Shielded VM.

Endpoint del server di metadati HTTPS

L'endpoint del server di metadati HTTPS (https://metadata.google.internal/computeMetadata/v1) offre una maggiore sicurezza per la trasmissione delle informazioni tra il server di metadati e la VM. Questo endpoint è disponibile solo per le Shielded VM.

Vantaggi dell'utilizzo dell'endpoint del server di metadati HTTPS

L'utilizzo dell'endpoint https per eseguire query sul server di metadati offre i seguenti vantaggi:

  • Migliora la sicurezza: contribuisce a impedire l'accesso non autorizzato ai metadati sensibili. Impedisce a malintenzionati di poter eseguire azioni come:

    • Spoofing o furto d'identità del server di metadati per ottenere l'accesso a una VM
    • Visualizzazione o manomissione di metadati sensibili prima che raggiungano la VM
  • Riduce i costi: ti aiuta a evitare i costi associati alle violazioni della sicurezza.

Funzionamento del processo

Per le Shielded VM in cui è installato l'ambiente guest, sulla VM vengono eseguiti i processi elencati di seguito:

  1. Quando la VM si avvia, Compute Engine completa le seguenti operazioni:

    1. Compute Engine crea tre certificati:

      • Un certificato radice autofirmato: un certificato univoco generato per la VM.
      • Un certificato di identità server: un certificato per il server di metadati.
      • Un certificato di identità client: un certificato per il client. Questo certificato non viene memorizzato nella cache nel server di metadati e viene rielaborato a ogni chiamata all'endpoint del certificato client dall'ambiente guest.

        Per le posizioni di archiviazione dei certificati di identità client e dei certificati radice, consulta Dove sono archiviati i certificati.

    2. Compute Engine trasferisce la parte pubblica del certificato radice nell'ambiente guest della VM utilizzando una variabile UEFI generata da Google. Questo certificato radice viene poi archiviato sulla VM.

  2. Periodicamente, l'ambiente guest richiede un certificato di identità client. In questo caso, l'agente guest scarica questo certificato dal server di metadati e lo convalida utilizzando il certificato radice per la VM.

Quando esegui una query all'endpoint del server di metadati HTTPS, specifichi i certificati di identità client che vengono poi utilizzati dal server di metadati e dalla VM per verificare che la query sia autorizzata.

Dove sono archiviati i certificati

Le sezioni seguenti elencano le posizioni di archiviazione dei certificati radice e di identità client generati da Compute Engine.

Certificati radice

CentOS/RHEL/Rocky

I certificati radice per le VM CentOS, Red Hat Enterprise Linux (RHEL) e Rocky Linux sono archiviati nelle seguenti posizioni:

  • /run/google-mds-mtls/root.crt
  • /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

Debian/Ubuntu

I certificati radice per le VM Debian e Ubuntu sono archiviati nelle seguenti posizioni:

  • /run/google-mds-mtls/root.crt
  • /etc/ssl/certs/ca-certificates.crt

Fedora

I certificati radice per le VM Fedora sono archiviati nelle seguenti posizioni:

  • /run/google-mds-mtls/root.crt
  • /etc/pki/tls/certs/ca-bundle.crt

SLES

I certificati radice per le VM SUSE Linux Enterprise Server (SLES) sono archiviati nelle seguenti posizioni:

  • /run/google-mds-mtls/root.crt
  • /etc/ssl/ca-bundle.pem

Windows

I certificati radice per le VM Windows sono archiviati nelle seguenti posizioni:

  • C:\ProgramData\Google\ComputeEngine\mds-mtls-root.crt
  • Cert:\LocalMachine\Root
Certificati di identità client

I certificati di identità client sono accessibili a tutti i processi in esecuzione sulla VM. Questo è necessario affinché tutti i processi abbiano accesso al server di metadati utilizzando l'endpoint https, in modo simile all'endpoint http. Per saperne di più, consulta Considerazioni sulla sicurezza dei metadati.

Linux

I certificati di identità client per le VM Linux sono memorizzati nella seguente posizione:

/run/google-mds-mtls/client.key

Windows

I certificati di identità client per le VM Windows sono memorizzati nelle seguenti posizioni:

  • C:\ProgramData\Google\ComputeEngine\mds-mtls-client.key
  • Cert:\LocalMachine\My

Chiavi dei metadati predefinite e personalizzate

Ogni voce dei metadati viene archiviata sul server di metadati come coppie chiave-valore. Le chiavi dei metadati sono sensibili alle maiuscole e possono essere di tipo predefinito o personalizzato.

Chiavi dei metadati predefinite

Le chiavi dei metadati predefinite sono chiavi create da Compute Engine. Quando crei una VM, Compute Engine imposta automaticamente i valori dei metadati per alcune di queste chiavi sulla VM, ad esempio l'ID istanza VM o l'ID progetto. Per le chiavi predefinite per le quali Compute Engine non imposta automaticamente un valore, puoi scegliere tra un insieme di valori disponibili in base alla configurazione del sistema. Ad esempio, per attivare OS Login per una VM, puoi impostare il valore della chiave predefinita enable-oslogin su TRUE per quella VM. Per disattivare OS Login per la VM, puoi aggiornare il valore della chiave a FALSE. Puoi aggiornare solo i valori di queste chiavi, ma non le chiavi stesse.

Per saperne di più sulle chiavi dei metadati predefinite e per un elenco di queste chiavi, consulta Chiavi dei metadati predefinite.

Chiavi dei metadati personalizzate

I metadati personalizzati ti consentono di creare e utilizzare le tue coppie chiave-valore dei metadati su una singola VM o un progetto. Puoi aggiungere nuove chiavi dei metadati personalizzate, aggiornare i valori delle chiavi esistenti e rimuovere le voci di metadati personalizzate quando non ti servono. L'impostazione di metadati personalizzati è utile per passare valori arbitrari alle VM in un progetto. È utile anche per creare script di avvio e arresto.

Per scoprire come aggiungere, aggiornare o rimuovere metadati personalizzati per le VM, consulta Configura metadati personalizzati.

Tipi di metadati

Le voci dei metadati della VM possono fornire informazioni specifiche per una singola VM o un progetto. I metadati sono suddivisi in metadati di progetto, di zona e dell'istanza, in base all'ambito in cui li imposti.

Metadati di progetto

I metadati di progetto sono definiti nell'ambito del progetto e forniscono informazioni che si applicano a tutte le VM di un progetto. Quando imposti questi metadati, le voci si propagano a tutte le VM del progetto.

Per impostare i metadati a livello di progetto, puoi utilizzare chiavi dei metadati sia predefinite che personalizzate. Scopri di più sulle chiavi dei metadati di progetto predefinite e su come impostare metadati di progetto personalizzati.

Metadati di zona

I metadati di zona sono definiti in un ambito di zona all'interno di un progetto e forniscono informazioni sulle VM in quella zona specifica del progetto. Quando imposti i metadati di zona, le voci dei metadati si propagano a tutte le VM nella zona configurata nel progetto. Rispetto ai metadati di progetto, i metadati di zona ti aiutano a eseguire l'isolamento dei guasti e offrono una maggiore affidabilità.

Compute Engine non fornisce chiavi predefinite per i metadati di zona. Per impostare i metadati di zona, devi creare le tue chiavi dei metadati personalizzate. Scopri di più su come impostare metadati di zona personalizzati.

Metadati dell'istanza

I metadati dell'istanza forniscono informazioni su un'istanza VM specifica. Imposti i metadati dell'istanza separatamente per ogni singola istanza VM.

Per impostare i metadati dell'istanza, puoi utilizzare chiavi dei metadati sia predefinite che personalizzate. Scopri di più sulle chiavi dei metadati dell'istanza predefinite e su come impostare metadati dell'istanza personalizzati.

Come vengono organizzati i metadati

Compute Engine archivia e gestisce le chiavi e i valori dei metadati per le tue VM e i tuoi progetti in elenchi delle directory. A seconda del tipo di metadati, Compute Engine archivia le voci dei metadati in una delle seguenti directory:

Tipo di metadati Directory
Metadati a livello di progetto e a livello di zona del progetto
  • Endpoint http:
    http://metadata.google.internal/computeMetadata/v1/project
  • Endpoint https (anteprima):
    https://metadata.google.internal/computeMetadata/v1/project
Metadati dell'istanza
  • Endpoint http:
    http://metadata.google.internal/computeMetadata/v1/instance
  • Endpoint https:
    https://metadata.google.internal/computeMetadata/v1/instance

Ogni directory archivia le voci dei metadati sotto forma di coppie chiave-valore. Alcune voci dei metadati sono anche directory che contengono altre chiavi dei metadati. Le voci dei metadati che fungono da directory sono contrassegnate da una barra finale (/) nel nome della chiave dei metadati. Ad esempio, /project/attributes/ è una directory all'interno della directory project/ che contiene altre chiavi dei metadati. Per creare un elenco delle directory dei metadati personalizzato, devi utilizzare una barra finale (/) nel nome della chiave dei metadati quando crei la voce dei metadati personalizzati.

Le voci dei metadati di progetto e di zona vengono archiviate nella stessa directory project/. Se imposti valori diversi per le stesse chiavi dei metadati personalizzati per le VM a livello di progetto e di zona, i valori dei metadati di zona per queste chiavi hanno la precedenza sui valori dei metadati di progetto nelle rispettive zone.

  • Se aggiungi un valore dei metadati di zona per una chiave dei metadati che ha già un valore dei metadati di progetto, Compute Engine sostituisce il valore dei metadati di progetto per le VM in questa zona specificata e aggiorna la directory /project con il valore di zona.
  • Se aggiungi un nuovo valore dei metadati a livello di progetto per una chiave dei metadati che ha già un valore dei metadati a livello di zona, non cambia nulla. Compute Engine conserva il valore dei metadati di zona nella directory /project nella zona specifica.
  • Se non specifichi un valore dei metadati di zona per una chiave dei metadati personalizzata in una zona specifica, ma la chiave ha un valore dei metadati di progetto, le VM in quella zona continueranno ad avere i valori dei metadati di progetto.

Ad esempio, supponiamo di definire una coppia di metadati a livello di progetto key-1=value-1. Supponiamo di definire anche una coppia di metadati di zona key-1=zonal-value-1 solo per la zona us-central1-a. Tutte le VM nella zona us-central1-a del tuo progetto ereditano key-1=zonal-value1 come coppia di metadati. La coppia di metadati rimane key-1=value-1 per tutte le VM in altre zone in cui non hai impostato metadati di zona per key-1.

Passaggi successivi