Informazioni sui metadati della VM


Ogni istanza di macchina virtuale (VM) archivia i propri metadati su un server 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 della VM e illustra i tipi e le proprietà dei metadati della VM.

Utilizzi dei metadati della VM

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

Script di avvio e chiusura

Il server metadati è particolarmente utile se utilizzato in combinazione con gli script di avvio e di chiusura, perché puoi utilizzarlo per ricevere informazioni 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'IP esterno di una VM e utilizza questo IP nello 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 per l'evento. Per ulteriori informazioni, consulta la sezione Ricevere notifiche relative alla migrazione live.

Attributi degli ospiti

Gli attributi guest sono un tipo specifico di metadati personalizzati su cui le applicazioni possono scrivere durante l'esecuzione sulle VM. Utilizza gli attributi guest solo per scenari di utilizzo che richiedono piccole quantità di dati che non cambiano di frequente. Per maggiori informazioni 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 Cloud possono utilizzare gli attributi dei partner per creare uno spazio dei nomi in cui definire le voci dei metadati delle istanze. Puoi impostare, aggiornare, eliminare e visualizzare i valori delle voci dei metadati dell'istanza per configurare il servizio.

Ad esempio, quando utilizzi le identità dei carichi di lavoro gestiti 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 effettui una richiesta per ottenere informazioni dal server dei metadati, la richiesta e la successiva risposta dei metadati non escono mai dall'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 metadati. Sono inclusi eventuali valori di metadati personalizzati, certificati client e chiavi private scritti sul server. Google consiglia di procedere con cautela quando si scrivono valori sensibili sul server dei metadati o quando si eseguono processi di terze parti. Devi mettere in sandbox qualsiasi processo che non deve essere in grado di accedere al server dei 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 VM schermate.
  • Un endpoint https: https://metadata.google.internal/computeMetadata/v1. È accessibile solo dalle VM schermate.

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 VM protette.

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 un malintenzionato di eseguire una delle seguenti azioni:

    • 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
  • Riduci i costi: ti aiuta a evitare i costi associati alle violazioni della sicurezza

Come funziona la procedura

Per le VM schermate in cui è installato l'ambiente guest, sulla VM vengono eseguite le seguenti procedure:

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

    1. Compute Engine crea tre certificati come segue:

      • Un certificato radice autofirmato: un certificato univoco generato per la VM.
      • Un certificato di identità del 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 dei 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 principali, 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 quindi 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 dei metadati e lo convalida utilizzando il certificato principale per la VM.

Quando effettui 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 questa query sia autorizzata.

Dove vengono archiviati i certificati

Le sezioni seguenti elencano la posizione di archiviazione dei certificati di identità di client e radice 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 località:

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

Fedora

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

  • /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 principali 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 tutte le procedure in esecuzione sulla VM. Questo è necessario affinché tutte le procedure abbiano accesso al server dei metadati utilizzando l'endpoint https, in modo simile all'endpoint http. Per ulteriori informazioni, 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 località:

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

Chiavi dei metadati predefinite e personalizzate

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

Chiavi dei metadati predefinite

Le chiavi dei metadati predefinite sono chiavi dei metadati 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 a seconda della configurazione del sistema. Ad esempio, per attivare l'accesso al sistema operativo per una VM, puoi impostare il valore della chiave predefinita enable-oslogin su TRUE per quella VM. Per disattivare l'accesso OS per la VM, puoi aggiornare il valore della chiave su FALSE. Puoi aggiornare solo i valori di queste chiavi, ma non le chiavi stesse.

Per ulteriori informazioni sulle chiavi dei metadati predefinite e un elenco di queste chiavi, consulta Chiavi dei metadati predefinite.

Chiavi dei metadati personalizzati

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 di metadati personalizzati, aggiornare i valori delle chiavi esistenti e rimuovere le voci di metadati personalizzati quando non ti servono. L'impostazione di metadati personalizzati è utile per trasmettere 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 tue VM, consulta Configurare i 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 di 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 del progetto, puoi utilizzare chiavi di metadati sia predefinite che personalizzate. Scopri di più sulle chiavi di metadati dei progetti predefinite e su come impostare i metadati dei progetti 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 degli errori e offrono una maggiore affidabilità.

Compute Engine non fornisce chiavi predefinite per i metadati zonali. Per impostare i metadati di zona, devi creare le tue chiavi di metadati personalizzate. Scopri di più su come impostare metadati zonali 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 di metadati sia predefinite che personalizzate. Scopri di più sulle chiavi di metadati delle istanze predefinite e su come impostare i metadati delle istanze personalizzate.

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 nelle schede della directory. A seconda del tipo di metadati, Compute Engine memorizza 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 memorizza 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 la tua voce della directory dei metadati, 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 zonali vengono archiviate nella stessa directoryproject/. Se imposti valori diversi per le stesse chiavi di 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 del 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 zonali nella directory /project nella zona specifica.
  • Se non specifichi un valore dei metadati di zona per una chiave di metadati personalizzata in una zona specifica, ma la chiave ha un valore dei metadati del progetto, le VM continueranno ad avere i valori dei metadati del progetto in quelle zone.

Ad esempio, supponiamo di definire una coppia di metadati a livello di progetto dikey-1=value-1. Supponiamo che tu definisca 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