Autorizzazione dell'agente operativo

Questa guida spiega come garantire che Ops Agent, che installi sull'istanza della macchina virtuale (VM), sia autorizzato a inviare dati di telemetria a Monitoring.

Panoramica dell'autorizzazione

Con autorizzazione si intende il processo di determinazione delle autorizzazioni di cui dispone un client autenticato per un insieme di risorse. Google Cloud autorizza Ops Agent su un'istanza VM di Compute Engine utilizzando le credenziali predefinite dell'applicazione (ADC).

Ops Agent supporta ADC che autentica l'account di servizio collegato a una VM o una chiave dell'account di servizio.

  • Un account di servizio collegato si riferisce a un account di servizio specifico di una determinata risorsa, ad esempio una VM. L'account di servizio ha le proprie credenziali univoche. ADC utilizza il server metadati della VM per ottenere le credenziali per un servizio.
  • Una chiave dell'account di servizio è una chiave privata utilizzata per autorizzare la coppia di chiavi su un account di servizio in un progetto, che consente di creare un token di accesso. Il token serve per fornire un'identità in modo da poter interagire con le API Google Cloud per conto dell'account di servizio.
  • Ops Agent non supporta l'autorizzazione tramite gcloud auth. Per evitare comportamenti indesiderati, devi revoke tutte le credenziali create utilizzando gcloud auth.

Ti consigliamo di configurare l'ADC per autenticare un account di servizio collegato quando possibile, poiché la chiave privata richiede spazio di archiviazione locale e tale spazio di archiviazione può essere compromesso. Per ulteriori informazioni sulle chiavi degli account di servizio, consulta le best practice per la gestione delle chiavi degli account di servizio.

Verifica gli ambiti di accesso

Alle istanze VM di Compute Engine vengono assegnati ambiti di accesso quando le crei. Le nuove VM di Compute Engine dispongono di ambiti di accesso adeguati per Ops Agent, a differenza delle VM vecchie o in quelle in cui gli ambiti sono stati modificati. Per ulteriori informazioni sugli ambiti di accesso e sugli account di servizio, consulta Autorizzazione nella documentazione di Compute Engine.

Per verificare gli ambiti di accesso, segui questi passaggi:

  1. Esegui una query sugli ambiti di accesso eseguendo il comando seguente sull'istanza Compute Engine:
    curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
  2. Nell'output comando, se l'ambito di accesso https://www.googleapis.com/auth/cloud-platform è elencato, l'autorizzazione è sufficiente.

    Se https://www.googleapis.com/auth/cloud-platform non è nell'elenco, sono necessari due ambiti di accesso, uno da ciascuna delle seguenti coppie "logging" e "monitoring":

    • https://www.googleapis.com/auth/logging.write oppure
      https://www.googleapis.com/auth/logging.admin
    • https://www.googleapis.com/auth/monitoring.write oppure
      https://www.googleapis.com/auth/monitoring.admin

Per modificare gli ambiti di accesso:

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

    Vai a Istanze VM

    Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Compute Engine.

  2. Se necessario, fai clic sull'elenco a discesa dei progetti Google Cloud e seleziona il nome del progetto.
  3. Seleziona Istanze VM dal menu di navigazione, seleziona la scheda Istanze e scegli il nome della tua VM.
  4. Arresta la VM facendo clic su  Arresta.
  5. Dopo l'arresto della VM, fai clic su  Modifica.
  6. Individua Ambiti di accesso nella sezione Identità e accesso API della pagina, quindi seleziona Imposta l'accesso per ogni API.
  7. Per le voci API Stackdriver Logging e API Stackdriver Monitoring, seleziona Write Only (Solo scrittura).
  8. Fai clic su Salva, quindi riavvia la VM facendo clic su  Avvia/Riprendi.

Utilizzare un account di servizio

Il termine autenticazione fa riferimento al processo di determinazione dell'identità del client. Per l'autenticazione, consigliamo di utilizzare un account di servizio, un tipo speciale di account solitamente utilizzato da un'applicazione o da un carico di lavoro, anziché da una persona. Per maggiori informazioni, consulta Panoramica degli account di servizio.

Puoi utilizzare gli account di servizio per l'autenticazione indipendentemente da dove viene eseguito il codice: su Compute Engine, App Engine oppure on-premise. Per ulteriori informazioni, consulta la sezione Autenticazione su Google.

Questa sezione descrive come creare un nuovo account di servizio e assegnargli i ruoli necessari e come aggiornare un account di servizio esistente se non dispone dei ruoli necessari.

Crea un service account

Per creare un account di servizio, completa la procedura di creazione di un account di servizio con le seguenti informazioni:

  • Seleziona il progetto Google Cloud in cui creare l'account di servizio.

    • Per le istanze di Compute Engine, scegli il progetto in cui hai creato l'istanza.

  • Nel menu a discesa Ruolo, seleziona i ruoli seguenti:

    • Monitoring > Monitoring Metric Writer.

    • Logging > Writer log.

  • Se prevedi di eseguire l'autenticazione utilizzando una chiave dell'account di servizio, seleziona JSON come Tipo di chiave e fai clic su Crea.

    Quando fai clic su Crea, un file contenente una chiave dell'account di servizio viene scaricato nel tuo sistema locale. Per ulteriori informazioni, consulta Creare ed eliminare le chiavi degli account di servizio.

Poi, configura l'account di servizio e le impostazioni a seconda che tu provveda all'autorizzazione mediante account di servizio collegati o chiavi private dell'account di servizio.

Verificare e modificare i ruoli di un account di servizio esistente

Puoi utilizzare la console Google Cloud per determinare i ruoli di un account di servizio esistente e per aggiungere eventuali ruoli necessari che mancano:

  1. Nella console Google Cloud, vai alla pagina IAM:

    Vai a IAM

    Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.

  2. Se necessario, fai clic sull'elenco a discesa dei progetti Google Cloud e seleziona il nome del progetto.

  3. Se non vedi un elenco di entità IAM (utenti e account di servizio), seleziona la scheda Autorizzazioni.

  4. Nell'elenco View by Principals (Visualizza per entità), individua la voce relativa all'account di servizio. La colonna Ruolo elenca i ruoli concessi all'account di servizio.

  5. Se il tuo account di servizio non dispone dei ruoli necessari per Ops Agent, segui questi passaggi per aggiungere i ruoli descritti in Creare un account di servizio:

    1. Fai clic su  Modifica nella voce relativa all'account di servizio.
    2. Fai clic su Aggiungi un altro ruolo per aggiungere eventuali ruoli mancanti.
    3. Fai clic su Salva.

Autorizza con un account di servizio collegato

Per autorizzare Ops Agent installato su un'istanza VM di Compute Engine a cui è collegato un account di servizio, segui questi passaggi:

  1. Assicurati di aver verificato gli ambiti di accesso della tua VM.

  2. Concedi al tuo account di servizio i ruoli IAM con meno privilegi possibili. Per i ruoli richiesti, consulta la sezione Creare un account di servizio di questa pagina.

  3. Collega l'account di servizio alla VM su cui è in esecuzione l'agente.

  4. Se non hai già installato l'agente, installalo. Per informazioni su come installare l'agente, consulta Installazione dell'agente.

Autorizza con una chiave dell'account di servizio

Per autorizzare Ops Agent installato su un'istanza VM utilizzando le chiavi private dell'account di servizio, segui questi passaggi:

  1. Trasferisci il file della chiave dell'account di servizio dal tuo sistema locale all'istanza VM:

    1. Crea una variabile di ambiente per puntare al file della chiave dell'account di servizio sul tuo sistema locale. Nell'esempio seguente viene creata una variabile denominata CREDS:

      CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
      
    2. Completa i passaggi indicati nella seguente tabella:

      Compute Engine

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

        Vai a Istanze VM

        Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Compute Engine.

        Identifica INSTANCE_NAME e INSTANCE_ZONE per la tua VM.

      2. Sul tuo sistema locale, esegui un comando Google Cloud CLI per copiare il file della chiave dal tuo sistema locale all'istanza VM:

        REMOTE_USER="$USER"
        INSTANCE="INSTANCE_NAME"
        ZONE="INSTANCE_ZONE"
        gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"
        
      3. Nell'istanza Compute Engine, sposta il file della chiave dell'account di servizio dalla posizione temporanea a una posizione permanente e, per Linux, assicurati che il file della chiave dell'account di servizio sia leggibile solo da root.

        Devi inoltre impostare la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS in modo che punti alla posizione del file della chiave dell'account di servizio. La variabile deve essere visibile al processo dell'agente. Per informazioni sulla configurazione, vedi Impostare GOOGLE_APPLICATION_CREDENTIALS.

        Ad esempio, su Linux puoi eseguire lo script seguente che sposta il file della chiave dell'account di servizio nella posizione predefinita, quindi imposta le autorizzazioni appropriate:

        CREDENTIALS_FILE_LOCATION="/etc/google/auth/application_default_credentials.json"
        sudo mkdir -p /etc/google/auth
        sudo mv "$HOME/temp.json" "$CREDENTIALS_FILE_LOCATION"
        sudo chown root:root "$CREDENTIALS_FILE_LOCATION"
        sudo chmod 0400 "$CREDENTIALS_FILE_LOCATION"
        

  2. L'istanza VM ora include il file delle chiavi dell'account di servizio di cui l'agente ha bisogno. Quindi, installa o riavvia l'agente:

Imposta GOOGLE_APPLICATION_CREDENTIALS

Questa sezione mostra come impostare la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS in modo che sia visibile al processo dell'agente.

Linux

  1. Modifica il seguente file di configurazione o crea il file se non esiste:

    /etc/systemd/system.conf
    
  2. Aggiungi quanto segue al file di configurazione:

    DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
    
  3. Ricarica le variabili di ambiente:

    sudo systemctl daemon-reload
    
  4. Riavvia l'agente eseguendo questo comando sull'istanza VM:

    sudo systemctl restart google-cloud-ops-agent
    

Windows

  1. In PowerShell, esegui questi comandi come amministratore per impostare la variabile di ambiente di sistema GOOGLE_APPLICATION_CREDENTIALS da utilizzare per Ops Agent:

    [Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "PATH_TO_CREDENTIAL_FILE", "Machine")
    
  2. Riavvia l'agente eseguendo questo comando sull'istanza VM:

    Restart-Service -Name google-cloud-ops-agent -Force