Autorizza l'agente Monitoring

Questa guida spiega come garantire che l'agente Monitoring, che installi sull'istanza della macchina virtuale (VM), sia autorizzato a inviare dati di telemetria all'Osservabilità di Google Cloud.

Panoramica delle autorizzazioni

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

L'agente Monitoring supporta ADC che autentica l'account di servizio collegato di una VM o una chiave dell'account di servizio.

  • Un account di servizio collegato si riferisce a un account di servizio specifico per una determinata risorsa, ad esempio una VM. L'account di servizio ha le proprie credenziali univoche. ADC utilizza il server di 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. Puoi utilizzare il token per fornire un'identità in modo da poter interagire con le API Google Cloud per conto dell'account di servizio.

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

Per le istanze VM AWS EC2, l'agente Monitoring supporta l'autenticazione solo utilizzando il metodo chiave dell'account di servizio.

Prima di iniziare

Leggi questa guida se una delle seguenti condizioni si applica al tuo caso:

  • Se stai eseguendo istanze di Compute Engine molto vecchie o se hai modificato gli ambiti di accesso o le impostazioni dell'account di servizio per le tue istanze Compute Engine, devi completare i passaggi descritti in questa guida prima di installare l'agente. Queste VM potrebbero non avere il file delle chiavi dell'account di servizio richiesto. Per informazioni su come verificare gli ambiti di accesso e le impostazioni dell'account di servizio delle istanze, consulta Verificare le credenziali di Compute Engine.

    Sulle istanze VM di Compute Engine appena create, gli ambiti di accesso e le impostazioni dell'account di servizio sono sufficienti per eseguire gli agenti.

  • Se esegui istanze VM Amazon EC2 (AWS VC2), segui questi passaggi prima di installare l'agente:

    1. Identifica il progetto di hosting AWS per l'account AWS con le tue istanze EC2. Il progetto di hosting è un progetto Google Cloud il cui unico scopo è archiviare le metriche e i log delle istanze EC2 in un account AWS.

      Se hai un progetto del connettore AWS per un account AWS, il progetto del connettore è il progetto di hosting AWS.

      Se non disponi di un progetto del connettore AWS per l'account, esegui una ricerca nei progetti Google Cloud esistenti per determinare se in precedenza hai creato un progetto di hosting AWS per l'account. Se viene trovato un progetto di hosting, utilizzalo.

      Se non riesci a trovare un progetto di hosting AWS per l'account, ti consigliamo di creare un progetto Google Cloud da utilizzare come progetto di hosting. Se disponi di istanze EC2 in più account AWS, crea un progetto Google Cloud per ogni account. Ti consigliamo inoltre di utilizzare una convenzione di denominazione per questi progetti o di utilizzare le etichette del progetto, in modo da identificare i progetti di hosting. Sconsigliamo di riutilizzare un progetto Google Cloud esistente, soprattutto se contiene risorse Google Cloud.

    2. Completa i passaggi per autorizzare l'agente utilizzando un file di chiavi dell'account di servizio.

Per verificare gli ambiti di accesso:

  1. Esegui una query sugli ambiti di accesso eseguendo questo comando sulla tua istanza di 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 è elencato l'ambito di accesso https://www.googleapis.com/auth/cloud-platform, disponi di autorizzazione sufficiente.

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

    • 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. Nel pannello di navigazione della console Google Cloud, seleziona Compute Engine, quindi seleziona Istanze VM:

    Vai a Istanze VM

  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, quindi seleziona il nome della tua VM.
  4. Arresta la VM facendo clic su  Arresta.
  5. Una volta arrestata la VM, fai clic su  Modifica.
  6. Individua Ambiti di accesso nella sezione Identità e accesso API della pagina e seleziona Imposta accesso per ogni API.
  7. Per le voci API Stackdriver Logging e API Stackdriver Monitoring, seleziona Write Only.
  8. Fai clic su Salva, quindi riavvia la VM facendo clic su  Avvia/Riprendi.

Utilizza 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 utilizzato in genere da un'applicazione o da un carico di lavoro anziché da una persona. Per ulteriori informazioni, consulta la 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 o on-premise. Per ulteriori informazioni, consulta la sezione Autenticazione a Google.

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

Crea un account di servizio

Per creare un account di servizio, completa le procedure 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.

    • Per le istanze Amazon EC2, seleziona il progetto di hosting AWS.

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

    • Monitoring > Writer metriche di Monitoring. Questa operazione autorizza l'agente Monitoring.

    Se installerai anche l'agente Logging, aggiungi il ruolo seguente per l'agente:

    • Logging > Writer log. Questo autorizza l'agente Logging.
  • 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, nel tuo sistema locale viene scaricato un file contenente una chiave dell'account di servizio. Per maggiori informazioni, consulta Creare ed eliminare le chiavi degli account di servizio.

Quindi, configura l'account di servizio e le impostazioni a seconda che la tua autorizzazione venga concessa utilizzando account di servizio collegati o chiavi private degli 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 mancanti:

  1. Nel pannello di navigazione della console Google Cloud, seleziona IAM:

    Vai a IAM

  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 Visualizza per entità, individua la voce per l'account di servizio. Nella colonna Ruolo sono elencati i ruoli concessi all'account di servizio.

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

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

Autorizza con un account di servizio collegato

Per autorizzare l'agente Monitoring installato su un'istanza VM di Compute Engine a cui è associato un account di servizio:

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

  2. Concedi al tuo account di servizio i ruoli IAM con privilegi minimi 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 l'agente Monitoring installato su un'istanza VM utilizzando le chiavi private dell'account di servizio:

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

    1. Crea una variabile di ambiente che punti al file delle chiavi 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 mostrati nella seguente tabella:

      Compute Engine

      1. Nel pannello di navigazione della console Google Cloud, seleziona Compute Engine, quindi seleziona Istanze VM:

        Vai a Istanze VM

        Identifica INSTANCE_NAME e INSTANCE_ZONE per la tua VM.

      2. Nel 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 di 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.

        Queste sono le posizioni in cui l'agente attende il file della chiave:

        • VM Linux: /etc/google/auth/application_default_credentials.json
        • VM Linux: qualsiasi località archiviata nella variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS, che deve essere visibile al processo dell'agente. Per informazioni sulla configurazione, consulta 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"
        

      Amazon EC2

      1. Per la tua VM, identifica YOUR-INSTANCE'S-ID e YOUR-INSTANCE'S-AWS-REGION.

      2. Nel sistema locale, utilizza scp per copiare il file della chiave dell'account di servizio dal sistema locale all'istanza VM:

        KEY="YOUR-SSH-KEY-PAIR-FILE"
        INSTANCE="ec2-YOUR-INSTANCE'S-ID.YOUR-INSTANCE'S-AWS-REGION.compute.amazonaws.com"
        # The remote user depends on the installed OS: ec2-user, ubuntu, root, etc.
        REMOTE_USER="EC2-USER"
        scp -i "$KEY" "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json"
        

        Il valore della variabile di ambiente INSTANCE presuppone che l'istanza EC2 non si trovi nella regione us-east-1. Per scoprire come definire la variabile INSTANCE quando l'istanza si trova nella regione us-east-1, consulta la convenzione di denominazione definita da Amazon.

      3. Nell'istanza EC2, sposta il file della chiave dell'account di servizio dalla posizione temporanea in una delle posizioni seguenti e, per Linux, assicurati che il file della chiave dell'account di servizio sia leggibile solo da root.

        Queste sono le posizioni in cui l'agente attende il file della chiave:

        • VM Linux: /etc/google/auth/application_default_credentials.json

        • VM Windows: C:\ProgramData\Google\Auth\application_default_credentials.json

        • VM Linux e Windows: qualsiasi località archiviata nella variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS, che deve essere visibile al processo dell'agente. Per informazioni sulla configurazione, consulta 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 ha ora il file delle chiavi dell'account di servizio necessario all'agente. 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/default/stackdriver-agent
    
  2. Aggiungi quanto segue al file di configurazione:

    GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE
    
  3. Riavvia l'agente eseguendo questo comando sull'istanza VM:

    sudo service stackdriver-agent restart
    

Windows

  1. In PowerShell, esegui questi comandi come amministratore per impostare la variabile di ambiente di sistema GOOGLE_APPLICATION_CREDENTIALS che deve essere utilizzata da 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 StackdriverMonitoring