Gli attributi guest sono un tipo specifico di metadati personalizzati su cui le applicazioni possono scrivere durante l'esecuzione sull'istanza della macchina virtuale (VM). Qualsiasi applicazione o utente sulla tua istanza VM può leggere e scrivere dati in questi valori dei metadati degli attributi guest.
Prima di iniziare
- Per le VM Windows Server, utilizza
PowerShell 3.0 o versioni successive.
Ti consigliamo di utilizzare
ctrl+v
per incollare i blocchi di codice copiati. -
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.
Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
- Imposta una regione e una zona predefinite.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
-
Ruoli obbligatori
Le autorizzazioni o i ruoli richiesti dipendono dal completamento delle attività dall'interno o dall'esterno della VM.
All'interno della VM
Se stai impostando, eseguendo query o eliminando gli attributi guest dall'interno della VM, hai solo bisogno dei ruoli e delle autorizzazioni per la connessione alla VM. Qualsiasi processo in esecuzione nell'istanza VM può scrivere nei valori degli attributi guest, inclusi script e applicazioni che non hanno privilegi a livello di amministratore o sudo.
Per le letture e le scritture dall'interno di una VM, il server metadati fornisce autenticazione e autorizzazione automatiche a livello di istanza. Ogni VM può leggere o scrivere solo sul proprio server di metadati. Le altre VM non possono accedere al server di metadati di un'altra VM.
All'esterno della VM
I ruoli e le autorizzazioni seguenti sono necessari per abilitare gli attributi guest o visualizzare gli attributi guest dall'esterno della VM utilizzando Google Cloud CLI o REST. Non puoi impostare o eliminare gli attributi guest dall'esterno di una VM.
Per assicurarti che il tuo account utente o di servizio disponga delle autorizzazioni
necessarie per abilitare o visualizzare gli attributi guest,
chiedi all'amministratore di concedere al tuo account utente o di servizio il
ruolo IAM Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1
) per la VM o il progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questo ruolo predefinito contiene le autorizzazioni necessarie per attivare o visualizzare gli attributi guest. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per attivare o visualizzare gli attributi ospite, sono necessarie le seguenti autorizzazioni:
-
Per abilitare gli attributi guest:
compute.instances.setMetadata
-
Per visualizzare gli attributi guest:
compute.instances.getGuestAttributes
L'amministratore potrebbe anche essere in grado di concedere queste autorizzazioni al tuo account utente o di servizio con ruoli personalizzati o altri ruoli predefiniti.
Quando utilizzare gli attributi ospite
Utilizza gli attributi guest solo per casi d'uso che richiedono piccole quantità di dati che non cambiano di frequente. I migliori casi d'uso per gli attributi ospite hanno le seguenti caratteristiche:
- Il numero di query è limitato a un massimo di 10 query al minuto per istanza VM.
- Le query non superano le tre query al secondo. Se questa frequenza massima viene superata, Compute Engine potrebbe rimuovere arbitrariamente gli attributi guest in fase di scrittura. Questa rimozione dei dati è necessaria per garantire che altri dati critici di sistema possano essere scritti sul server.
Gli attributi guest sono ideali per le situazioni in cui devi pubblicare dati poco frequenti e a basso volume. Ad esempio, gli attributi guest sono adatti ai seguenti casi d'uso:
- Script di avvio che possono segnalare l'inizializzazione riuscita impostando un valore di stato personalizzato negli attributi guest.
- Agenti di gestione della configurazione che possono pubblicare il nome e la versione di un sistema operativo guest negli attributi guest.
- Agenti di gestione dell'inventario che possono pubblicare l'elenco dei pacchetti installati nell'istanza VM negli attributi guest.
- Software di orchestrazione dei carichi di lavoro in grado di segnalare il completamento di un'operazione nel guest al piano di controllo del software impostando un valore di stato personalizzato negli attributi guest.
Gli attributi guest non sostituiscono i flussi di eventi, Pub/Sub o altre forme di repository di archiviazione e configurazione dei dati.
Attributi guest e altri servizi Google Cloud
Gli attributi guest vengono utilizzati da altri servizi Google Cloud come segue:
- Sicurezza SSH: se gli attributi guest sono abilitati e OS Login è disabilitato, l'ambiente guest e gcloud CLI utilizzano gli attributi guest per migliorare la sicurezza SSH utilizzando l'API di Google per recuperare le chiavi host prima di connetterti alla VM mediante SSH.
- VM Manager: l'agente OS Config pubblica i dati del sistema operativo negli attributi guest.
Per esaminare le voci dei metadati archiviate da questi servizi, consulta Chiavi dei metadati degli attributi guest predefinite.
Abilita gli attributi guest sulla VM
Per impostazione predefinita, gli attributi guest sono disattivati. Per abilitare gli attributi guest, imposta i valori dei metadati necessari sulle singole VM o nei metadati a livello di progetto:
Console
Imposta enable-guest-attributes
nei metadati dell'istanza quando crei una VM:
Nella console Google Cloud, vai alla pagina Crea un'istanza.
Specifica i dettagli della VM.
Espandi la sezione Opzioni avanzate ed esegui le seguenti operazioni:
- Espandi la sezione Gestione.
Nella sezione Metadati, fai clic su Aggiungi elemento per aggiungere le seguenti voci di metadati:
- Chiave:
enable-guest-attributes
- Valore:
TRUE
- Chiave:
Per creare la VM, fai clic su Crea.
Imposta enable-guest-attributes
nei metadati a livello di progetto in modo che venga applicato a tutte le VM nel tuo progetto:
Nella console Google Cloud, vai alla pagina Metadati.
Fai clic su Modifica.
Aggiungi una voce di metadati in cui la chiave è
enable-guest-attributes
e il valore èTRUE
. In alternativa, imposta il valore suFALSE
per disabilitare la funzionalità.Fai clic su Salva per applicare le modifiche.
Imposta enable-guest-attributes
nei metadati di una VM esistente:
- Nella console Google Cloud, vai alla pagina Istanze VM.
- Fai clic sul nome della VM per cui vuoi impostare il valore dei metadati.
- Nella parte superiore della pagina dei dettagli dell'istanza, fai clic su Modifica per modificare le relative impostazioni.
- In Metadati personalizzati, aggiungi una voce di metadati in cui la chiave è
enable-guest-attributes
e il valore èTRUE
. In alternativa, imposta il valore suFALSE
per escludere la VM dalla funzionalità. - Nella parte inferiore della pagina dei dettagli dell'istanza, fai clic su Salva per applicare le modifiche alla VM.
gcloud
Imposta enable-guest-attributes
nei metadati dell'istanza quando crei una VM:
Utilizza il comando gcloud compute instances create
in Google Cloud CLI e imposta enable-guest-attributes=TRUE
per attivare gli attributi guest. Sostituisci
VM_NAME
con il nome della tua VM.
gcloud compute instances create VM_NAME \ --metadata=enable-guest-attributes=TRUE
Imposta enable-guest-attributes
nei metadati a livello di progetto in modo che
venga applicato a tutte le VM nel tuo progetto:
Utilizza il comando project-info add-metadata
in Google Cloud CLI e imposta enable-guest-attributes=TRUE
per attivare gli attributi guest:
gcloud compute project-info add-metadata \ --metadata=enable-guest-attributes=TRUE
In alternativa, puoi impostare enable-guest-attributes
su FALSE
per disattivare gli attributi ospite.
Imposta enable-guest-attributes
nei metadati di una VM esistente:
Utilizza il comando instances add-metadata
in Google Cloud CLI e imposta enable-guest-attributes=TRUE
per attivare gli attributi guest. Sostituisci
VM_NAME
con il nome della tua VM.
gcloud compute instances add-metadata VM_NAME \ --metadata=enable-guest-attributes=TRUE
In alternativa, puoi impostare enable-guest-attributes
su FALSE
per
escludere la tua VM dall'uso degli attributi guest.
Imposta attributi ospite
Qualsiasi processo in esecuzione nell'istanza VM può scrivere nei valori degli attributi guest, inclusi script e applicazioni che non hanno privilegi a livello di amministratore o sudo. Gli utenti o gli account di servizio esterni alla VM non possono scrivere nei valori dei metadati degli attributi guest.
VM Linux
Ad esempio, potresti utilizzare una richiesta curl
dall'interno della tua VM per scrivere un valore nel percorso dei metadati guest-attributes
:
curl -X PUT --data "VALUE" http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"
Sostituisci quanto segue:
NAMESPACE
: un raggruppamento logico per il tuoKEY
. Gli attributi guest devono avere uno spazio dei nomi.VALUE
: il valore che vuoi scrivere.KEY
: il percorso dei metadati all'interno diguest-attributes
in cui è archiviato il valore.
Utilizza solo lettere, numeri, trattini bassi (_
) e trattini (-
) per i campi NAMESPACE
e KEY
.
VM Windows
Ad esempio, potresti utilizzare una richiesta Invoke-RestMethod
all'interno della tua VM per scrivere un valore nel percorso
dei metadati guest-attributes
:
PS C:\>
$value = (Invoke-RestMethod `
-Method PUT -Body "VALUE" `
-Headers @{'Metadata-Flavor' = 'Google'} `
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY")
$value
Sostituisci quanto segue:
NAMESPACE
: un raggruppamento logico per il tuoKEY
. Gli attributi guest devono avere uno spazio dei nomi.VALUE
: il valore che vuoi scrivere.KEY
: il percorso dei metadati all'interno diguest-attributes
in cui è archiviato il valore.
Utilizza solo lettere, numeri, trattini bassi (_
) e trattini (-
) per i campi NAMESPACE
e KEY
.
Visualizza attributi ospite
Gli utenti o gli account di servizio possono leggere gli attributi guest dall'esterno di una VM se hanno il ruolo richiesto. In alternativa, qualsiasi utente o applicazione all'interno della VM può leggere i valori dei metadati per quella VM specifica.
Qualsiasi processo in esecuzione nella macchina virtuale può scrivere nel valore degli attributi guest, inclusi script e applicazioni che non hanno privilegi a livello di sudo o amministratore.
Esegui una query sul server dei metadati
Segui queste istruzioni per eseguire query sugli attributi guest dall'interno di una VM.
Connettiti alla VM.
Esegui una query sugli attributi guest.
VM Linux
Ad esempio, potresti utilizzare una richiesta
curl
all'interno della tua VM per leggere un valore dal percorso dei metadatiguest-attributes
:curl http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"
Sostituisci quanto segue:
NAMESPACE
: lo spazio dei nomi per la chiaveguest-attributes
su cui vuoi eseguire una query.KEY
: il percorso all'interno diguest-attributes
da cui leggere il valore dei metadati.
In alternativa, puoi restituire tutti i valori degli attributi ospite in un'unica richiesta. Sostituisci
NAMESPACE
con lo spazio dei nomi per la chiaveguest-attributes
su cui vuoi eseguire la query.curl http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/ -H "Metadata-Flavor: Google"
VM Windows
Ad esempio, potresti utilizzare una richiesta
Invoke-RestMethod
all'interno della tua VM per leggere un valore dal percorso dei metadatiguest-attributes
:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY") $value
Sostituisci quanto segue:
NAMESPACE
: lo spazio dei nomi per la chiaveguest-attributes
su cui vuoi eseguire una query.KEY
: il percorso all'interno diguest-attributes
da cui leggere il valore dei metadati.
In alternativa, puoi restituire tutti i valori degli attributi ospite in un'unica richiesta. Sostituisci
NAMESPACE
con lo spazio dei nomi per la chiaveguest-attributes
su cui vuoi eseguire la query.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/") $value
Usa Google Cloud CLI o REST
Segui queste istruzioni per visualizzare gli attributi guest dall'esterno di una VM.
gcloud
Utilizza Google Cloud CLI per leggere i valori dei metadati degli attributi ospiti per una VM. Ad esempio, puoi recuperare tutti i valori per la VM come segue:
gcloud compute instances get-guest-attributes VM_NAME \ --zone=ZONE
Per recuperare tutti i valori in uno spazio dei nomi specifico, includi il flag --query-path
e lo spazio dei nomi che hai definito:
gcloud compute instances get-guest-attributes VM_NAME \ --query-path=NAMESPACE \ --zone=ZONE
Per recuperare tutti i valori in uno spazio dei nomi specifico, includi il flag --query-path
, lo spazio dei nomi e la chiave del valore che hai definito:
gcloud compute instances get-guest-attributes VM_NAME \ --query-path=NAMESPACE/KEY \ --zone=ZONE
Sostituisci quanto segue:
VM_NAME
: il nome della VM da cui vuoi leggere il valore dei metadati dell'attributo guestNAMESPACE
: lo spazio dei nomi per la chiaveguest-attributes
su cui vuoi eseguire la queryKEY
: il percorso all'interno dei metadatiguest-attributes
in cui è archiviato il valoreZONE
: la zona in cui si trova la VM
REST
Utilizza il metodo compute.instances.getguestattributes
:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE/KEY
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progettoZONE
: la zona in cui si trova la VMVM_NAME
: il nome della VM da cui vuoi leggere il valore dei metadati dell'attributo guestNAMESPACE
: lo spazio dei nomi per la chiaveguest-attributes
su cui vuoi eseguire la queryKEY
: il percorso all'interno dei metadatiguest-attributes
in cui è archiviato il valore
Per recuperare tutte le chiavi di un oggetto NAMESPACE
, ometti KEY
:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE
Per recuperare tutte le chiavi in ogni spazio dei nomi sulla VM, ometti completamente NAMESPACE
e queryPath
:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes
In alternativa, se hai un token OAuth, puoi utilizzare curl
:
curl -H "Authorization: Bearer OAUTH_TOKEN" https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE/KEY
Sostituisci quanto segue:
OAUTH_TOKEN
: il tuo token OAuthPROJECT_ID
: il tuo ID progettoZONE
: la zona in cui si trova la VMVM_NAME
: il nome della VM da cui vuoi leggere il valore dei metadati dell'attributo guestNAMESPACE
: lo spazio dei nomi per la chiaveguest-attributes
su cui vuoi eseguire la queryKEY
: il percorso all'interno dei metadatiguest-attributes
in cui è archiviato il valore
Eliminazione attributi ospite
Segui queste istruzioni per rimuovere gli attributi guest da una VM.
Connettiti alla VM.
Elimina gli attributi guest.
VM Linux
Puoi anche eliminare gli attributi ospite. Ad esempio, utilizza
curl
per eliminare una chiave specifica:curl -X DELETE http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"
Sostituisci quanto segue:
NAMESPACE
: lo spazio dei nomi per la chiaveguest-attributes
che vuoi eliminareKEY
: il percorso all'interno diguest-attributes
in cui è archiviato il valore
VM Windows
Puoi anche eliminare gli attributi ospite. Ad esempio, utilizza
Invoke-RestMethod
per eliminare una chiave specifica:PS C:\> $value = (Invoke-RestMethod ` -Method DELETE ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY") $value
Sostituisci quanto segue:
NAMESPACE
: lo spazio dei nomi per la chiaveguest-attributes
che vuoi eliminareKEY
: il percorso all'interno diguest-attributes
in cui è archiviato il valore
Disattivazione degli attributi guest nella tua organizzazione o cartella
Se non vuoi che nessuna delle VM nella tua organizzazione o cartella abiliti gli attributi guest, puoi sostituire e disabilitare completamente la funzionalità.
Imposta il vincolo constraints/compute.disableGuestAttributesAccess
sulla tua organizzazione o cartella, sostituendo PROJECT_ID
con il nome del tuo progetto:
gcloud resource-manager org-policies enable-enforce \ constraints/compute.disableGuestAttributesAccess \ --project=PROJECT_ID
Per saperne di più su come impostare e gestire i vincoli nelle tue organizzazioni, consulta Utilizzo dei vincoli.
Che cosa succede dopo?
- Scopri di più sui metadati delle VM.