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 conserva le chiavi dei metadati e i valori per le VM e i progetti nelle directory. Ogni directory archivia le voci di 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 seguenti sezioni descrivono alcuni scenari in cui puoi utilizzare i metadati per gestire le VM.

Script di avvio e chiusura

Il server dei metadati è particolarmente utile quando utilizzato in combinazione con gli script di avvio e chiusura perché puoi usare il server dei metadati ricevere in modo programmatico informazioni univoche su una VM, 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 su 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 maintenance-event chiave. 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, vedi Ricevi notifiche sulla migrazione live.

Attributi ospite

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 ulteriori informazioni sugli attributi guest, vedi Imposta ed esegui query sugli attributi guest.

Attributi partner

Gli attributi partner sono un tipo specifico di metadati dell'istanza. Google Cloud possono utilizzare gli attributi partner per creare uno spazio dei nomi all'interno del quale per definire le voci dei metadati dell'istanza. 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 di ottenere informazioni dal server dei metadati, il tuo e la successiva risposta dei metadati non lascia mai l'host fisico che esegue 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 dei metadati personalizzati, certificati client e chiavi private scritti sul server. Google ti consiglia fai attenzione quando scrivi valori sensibili sul server dei metadati o quando processi di terze parti. Devi limitare tramite sandbox qualsiasi processo che non dovrebbe 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 dalle Shielded VM.

Endpoint del server di metadati HTTPS

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

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

L'uso dell'endpoint https per eseguire query sul server di metadati fornisce quanto segue 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 Shielded VM in cui è installato l'ambiente guest, sulla VM vengono eseguiti questi processi:

  1. All'avvio della VM, Compute Engine completa quanto segue:

    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 dei metadati.
      • Un certificato di identità client: un certificato per il client. Questo certificato non viene memorizzato nella cache nel server dei metadati e viene viene ricreato in ogni chiamata all'endpoint del certificato client dal ambiente ospite.

        Per le posizioni di archiviazione dell'identità client e dei certificati radice, vedi Dove vengono archiviati i certificati.

    2. Compute Engine trasferisce la parte pubblica dell'istanza principale all'ambiente guest della VM usando 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 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

Certificati radice per CentOS, Red Hat Enterprise Linux (RHEL) e Rocky Le VM Linux sono archiviate 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

Cappello fedora

I certificati radice per le VM Fedora sono archiviati nel seguente 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 in le 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. Questa operazione è necessaria per consentire a tutti i processi di accedere utilizzando l'endpoint https, simile all'endpoint http. Per ulteriori informazioni, vedi Considerazioni sulla sicurezza dei metadati.

Linux

I certificati di identità client per le VM Linux sono archiviati nel seguente località:

/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 chiavi di metadati 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 su quella VM, ad esempio la VM l'ID istanza 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 la VM in questione. Per disabilitare OS Login per quella VM, puoi aggiornare il valore della chiave per FALSE. Puoi aggiornare solo i valori per queste chiavi, ma non le chiavi stesse.

Per ulteriori informazioni sulle chiavi di metadati predefinite e per l'elenco di queste chiavi, vedi 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 di metadati personalizzate, aggiornare i valori dei tuoi chiavi esistenti e rimuovi tutte 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 di metadati della VM possono fornire informazioni specifiche per una singola VM 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, si propagano a tutte le VM nel progetto.

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

Metadati di zona

I metadati di zona sono definiti a livello di zona all'interno di un progetto e forniscono e informazioni sulle VM nella 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 di zona. Tu devi creare chiavi di metadati personalizzate per impostare i metadati di zona. Scopri di più su come impostare metadati di zona personalizzati.

Metadati dell'istanza

I metadati dell'istanza forniscono informazioni su un'istanza VM specifica. Hai impostato 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 conserva le chiavi e i valori dei metadati e i tuoi progetti e VM negli elenchi delle directory. In base al tipo di di metadati, Compute Engine archivia le voci di metadati in uno dei 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 di metadati sotto forma di coppie chiave/valore. Alcune voci dei metadati sono anche directory che contengono altre chiavi dei metadati. La le voci di 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. A crea il tuo elenco di directory di 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 zona vengono archiviate nello stesso Directory project/. Se imposti valori diversi per lo stesso di metadati 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 valore dei metadati di zona nella directory /project della zona specifica.
  • Se non specifichi un valore dei metadati di zona per una chiave di metadati personalizzata in un una zona specifica, ma la chiave ha un valore di metadati di progetto, le VM continuano i valori dei metadati di progetto in quelle zone.

Ad esempio, supponiamo che tu definisca una coppia di metadati a livello di progetto key-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 per il tuo progetto eredita 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