Impostazione ed esecuzione di query sugli attributi guest


Gli attributi guest sono un tipo specifico di metadati personalizzati che le tue applicazioni su cui è possibile scrivere durante l'esecuzione sull'istanza di macchina virtuale (VM). Qualsiasi applicazione o utente dell'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 già fatto, configura l'autenticazione. Autenticazione è Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine come segue.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Ruoli obbligatori

Le autorizzazioni o i ruoli richiesti dipendono dal fatto che tu stia completando le attività dall'interno o dall'esterno della VM.

All'interno della VM

Se imposti, esegui query o elimini gli attributi guest all'interno della VM, devi disporre solo dei ruoli e delle autorizzazioni per connetterti alla VM. Qualsiasi processo in esecuzione nell'istanza VM può scrivere i valori degli attributi guest, inclusi script e applicazioni che non dispongono dei privilegi di livello sudo o amministrativo.

Per le letture e le scritture dall'interno di una VM, il server di metadati fornisce l'autenticazione e l'autorizzazione automatiche a livello di istanza. Ogni VM può leggere o scrivere solo nel proprio server metadati. Le altre VM non possono accedere di un'altra VM.

Al di fuori della VM

Per abilitare gli attributi guest sono necessari i ruoli e le autorizzazioni seguenti, 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 attivare 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) sulla VM o sul progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per attivare o visualizzare gli attributi guest. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per attivare o visualizzare gli attributi guest sono necessarie le seguenti autorizzazioni:

  • Per abilitare gli attributi guest: compute.instances.setMetadata sulla VM o sul progetto
  • Per visualizzare gli attributi guest: compute.instances.getGuestAttributes nella VM o nel progetto

L'amministratore potrebbe anche essere in grado di fornire al tuo account utente o di servizio queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.

Quando utilizzare gli attributi guest

Utilizza gli attributi guest solo per casi d'uso che richiedono piccole quantità di dati che non cambiano di frequente. I casi d'uso migliori per gli attributi guest presentano le seguenti caratteristiche:

  • Il numero di query è limitato a un massimo di 10 query al minuto per istanza VM.
  • Le query non superano un burst di 3 query al secondo. Se questo valore massimo viene superata, Compute Engine potrebbe rimuovere arbitrariamente gli attributi in fase di scrittura. Questa rimozione dei dati è necessaria per garantire che altri dati di sistema critici possano essere scritti sul server.

Gli attributi ospite funzionano bene nelle situazioni in cui devi pubblicare contenuti non frequenti e di volume ridotto di dati. Ad esempio, gli attributi guest funzionano bene per il seguente utilizzo casi:

  • Gli script di avvio che possono segnalare un'inizializzazione riuscita impostando un parametro personalizzato valore dello stato negli attributi guest.
  • Agenti di gestione della configurazione che possono pubblicare il nome e la versione del sistema operativo ospite negli attributi ospite.
  • Agenti di gestione dell'inventario che possono pubblicare un elenco di pacchetti installati l'istanza VM agli attributi guest.
  • Software di orchestrazione dei carichi di lavoro in grado di segnalare il completamento di un'operazione nell'ambiente guest al piano di controllo software impostando un valore di stato personalizzato negli attributi guest.

Gli attributi ospite non sostituiscono lo streaming di eventi, Pub/Sub o altre forme di dati di archiviazione e configurazione.

Attributi guest e altri servizi Google Cloud

Gli attributi guest vengono utilizzati dagli altri servizi Google Cloud nel modo seguente:

  • Sicurezza SSH: se gli attributi guest sono abilitati e OS Login è disabilitato, il ambiente guest e gcloud CLI usa attributi guest per migliorare la sicurezza SSH utilizzando l'API di Google per recuperare le chiavi host prima di poterti connettere tramite SSH.
  • VM Manager: Pubblicazione dell'agente OS Config del sistema operativo agli attributi guest.

Per rivedere le voci dei metadati archiviate da questi servizi, vedi Chiavi dei metadati degli attributi ospite predefinite.

Abilita gli attributi guest sulla tua VM

Per impostazione predefinita, gli attributi guest sono disattivati. Per attivare gli attributi guest, imposta i valori dei metadati necessari sul tuo VM o nei metadati a livello di progetto:

Console

Imposta enable-guest-attributes nei metadati dell'istanza quando crei una VM:

  1. Nella console Google Cloud, vai alla pagina Crea un'istanza.

    Vai a Crea un'istanza

  2. Specifica i dettagli della VM.

  3. Espandi la sezione Opzioni avanzate ed esegui le seguenti:

    1. Espandi la sezione Gestione.
    2. Nella sezione Metadati, fai clic su Aggiungi elemento e aggiungi le seguenti voci di metadati:

      • Chiave: enable-guest-attributes
      • Valore: TRUE
  4. Per creare la VM, fai clic su Crea.

Imposta enable-guest-attributes nei metadati a livello di progetto in modo che si applichi a tutte le VM del progetto:

  1. Nella console Google Cloud, vai alla pagina Metadati.

    Vai alla pagina Metadati

  2. Fai clic su Modifica.

  3. Aggiungi una voce di metadati in cui la chiave è enable-guest-attributes e è TRUE. In alternativa, imposta il valore su FALSE per disattivare la funzionalità.

  4. Fai clic su Salva per applicare le modifiche.

Imposta enable-guest-attributes nei metadati di una VM esistente:

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai alla pagina Istanze VM

  2. Fai clic sul nome della VM su cui vuoi impostare i metadati valore.
  3. Nella parte superiore della pagina dei dettagli dell'istanza, fai clic su Modifica per modificare le impostazioni dell'istanza.
  4. In Metadati personalizzati, aggiungi una voce di metadati in cui si trova la chiave enable-guest-attributes e il valore è TRUE. In alternativa, imposta il parametro su FALSE per escludere la VM dalla funzionalità.
  5. 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 si applichi a tutte le VM del 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 attributi guest.

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 VM dall'utilizzo degli attributi guest.

Imposta attributi guest

Qualsiasi processo in esecuzione nell'istanza VM può scrivere i valori degli attributi guest, inclusi script e applicazioni che non dispongono dei privilegi di livello sudo o amministrativo. Utenti o account di servizio al di fuori di La VM non può scrivere nei valori dei metadati degli attributi degli ospiti.

VM Linux

Ad esempio, puoi utilizzare una richiesta curl all'interno della 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 KEY. Gli attributi ospite devono avere uno spazio dei nomi.
  • VALUE: il valore che vuoi scrivere.
  • KEY: il percorso dei metadati in guest-attributes in cui è memorizzato il valore.

Utilizza solo lettere, numeri, trattini bassi (_) e trattini (-) per i campi NAMESPACE e KEY.

VM Windows

Ad esempio, potresti usare una richiesta Invoke-RestMethod dalla tua VM per scrivere un valore nei metadati guest-attributes percorso:

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 KEY. Gli attributi ospite devono avere uno spazio dei nomi.
  • VALUE: il valore che vuoi scrivere.
  • KEY: il percorso dei metadati in guest-attributes in cui è memorizzato il valore.

Utilizza solo lettere, numeri, trattini bassi (_) e trattini (-) per i campi NAMESPACE e KEY.

Recupera attributi guest

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 sulla macchina virtuale può scrivere negli attributi guest , che includono script e applicazioni che non contengono sudo o i privilegi a livello di amministratore.

Eseguire una query sul server metadati

Utilizza le seguenti istruzioni per eseguire query sugli attributi guest dall'interno di una VM.

  1. Connettiti alla VM.

  2. Esegui query sugli attributi guest.

    VM Linux

    Ad esempio, puoi utilizzare una richiesta curl dall'interno della VM per leggere un valore dal percorso dei metadati guest-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 chiave guest-attributes di cui vuoi eseguire una query.
    • KEY: il percorso all'interno di guest-attributes da cui vuoi leggere il valore dei metadati.

    In alternativa, puoi restituire tutti i valori degli attributi guest in una sola richiesta. Sostituisci NAMESPACE con lo spazio dei nomi per guest-attributes chiave 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, puoi utilizzare una richiesta Invoke-RestMethod dall'interno della VM per leggere un valore dal percorso dei metadati guest-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 chiave guest-attributes di cui vuoi eseguire una query.
    • KEY: il percorso all'interno di guest-attributes da cui vuoi leggere il valore dei metadati.

    In alternativa, puoi restituire tutti i valori dell'attributo ospite in un'unica richiesta. Sostituisci NAMESPACE con lo spazio dei nomi per la chiave guest-attributes su cui vuoi eseguire una query.

    PS C:\> 
    $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/")
    $value
    

Utilizza Google Cloud CLI o REST

Segui le istruzioni riportate di seguito per visualizzare gli attributi guest dall'esterno di una VM.

gcloud

Utilizza Google Cloud CLI per leggere i valori dei metadati degli attributi guest per una VM. Ad esempio, puoi recuperare tutti i valori per la VM nel seguente modo:

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 un ambito specifico, includi il flag --query-path, l'ambito e la chiave per il valore 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 guest
  • NAMESPACE: lo spazio dei nomi per guest-attributes chiave su cui vuoi eseguire una query
  • KEY: il percorso all'interno dei metadati guest-attributes dove è memorizzato il valore
  • ZONE: 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 progetto
  • ZONE: la zona in cui si trova la VM
  • VM_NAME: il nome della VM da cui vuoi leggere il valore dei metadati dell'attributo guest
  • NAMESPACE: lo spazio dei nomi per la chiave guest-attributes su cui vuoi eseguire una query
  • KEY: il percorso all'interno dei metadati guest-attributes dove è memorizzato il valore

Per recuperare tutte le chiavi per un NAMESPACE, ometti il 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 disponi di 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 OAuth
  • PROJECT_ID: il tuo ID progetto
  • ZONE: la zona in cui si trova la VM
  • VM_NAME: il nome della VM da cui vuoi leggere il valore dei metadati dell'attributo guest
  • NAMESPACE: lo spazio dei nomi per la chiave guest-attributes su cui vuoi eseguire una query
  • KEY: il percorso all'interno dei metadati guest-attributes in cui è archiviato il valore

Eliminazione attributi guest

Segui le istruzioni riportate di seguito per rimuovere gli attributi guest da una VM.

  1. Connettiti alla VM.

  2. Elimina gli attributi guest.

    VM Linux

    Puoi anche eliminare gli attributi guest. 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 chiave guest-attributes che vuoi eliminare
    • KEY: il percorso all'interno di guest-attributes in cui viene memorizzato

    VM Windows

    Puoi anche eliminare gli attributi guest. 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 chiave guest-attributes che vuoi eliminare
    • KEY: il percorso all'interno di guest-attributes in cui è memorizzato il valore

Disattivazione degli attributi guest nell'organizzazione o nella cartella

Se non vuoi che nessuna delle VM della tua organizzazione o della tua cartella attivi gli attributi guest, puoi sostituire e disattivare completamente la funzionalità.

Imposta il vincolo constraints/compute.disableGuestAttributesAccess sulla all'organizzazione o alla cartella, sostituendo PROJECT_ID con nome del tuo progetto:

gcloud resource-manager org-policies enable-enforce \
    constraints/compute.disableGuestAttributesAccess \
    --project=PROJECT_ID

Letto Utilizzo dei vincoli per saperne di più su come impostare e gestire i vincoli per le tue organizzazioni.

Passaggi successivi