Autorizza l'agente Monitoring

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

Panoramica dell'autorizzazione

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

L'agente Monitoring supporta ADC che autenticano 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 a un una determinata risorsa, ad esempio una VM. L'account di servizio ha il proprio e credenziali. 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 autorizza su un account di servizio in un progetto, che consente di creare 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.

Ti consigliamo di configurare l'ADC di autenticare un account di servizio collegato, quando possibile, come richiede spazio di archiviazione locale, e lo spazio di archiviazione potrebbe essere compromesso. Per ulteriori informazioni sulle chiavi degli account di servizio, consulta Best practice per la gestione delle chiavi degli account di servizio.

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

Prima di iniziare

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

  • Se esegui istanze di Compute Engine molto vecchie ha modificato gli ambiti di accesso o le impostazioni degli account di servizio di Compute Engine, devi completare i passaggi in questo prima di installare l'agente. Queste VM potrebbero non avere i requisiti e il file delle chiavi dell'account di servizio. Per informazioni su come verificare l'accesso gli ambiti e le impostazioni degli account di servizio delle istanze, Verifica le credenziali di Compute Engine.

    Nelle istanze VM di Compute Engine appena create, gli ambiti di accesso 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 il tuo EC2. di Compute Engine. Il progetto di hosting è un progetto Google Cloud il cui unico scopo consiste nell'archiviare le metriche e i log delle istanze EC2 in un account AWS.

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

      Se non hai un progetto connettore AWS per l'account: cerca nei progetti Google Cloud esistenti per determinare se ha creato in precedenza un progetto di hosting AWS per l'account. Se progetto di hosting, poi utilizzalo.

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

    2. Completa i passaggi per autorizzare l'agente utilizzando una e il file delle chiavi dell'account di servizio.

Per verificare gli ambiti di accesso, segui questi passaggi:

  1. Esegui una query sugli ambiti di accesso eseguendo il comando seguente la tua 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 è indicato, avrai autorizzazioni sufficienti.

    Se https://www.googleapis.com/auth/cloud-platform non è automaticamente, avrai bisogno di due ambiti di accesso, dopo "logging" e "monitoraggio" coppie:

    • https://www.googleapis.com/auth/logging.write o
      https://www.googleapis.com/auth/logging.admin
    • https://www.googleapis.com/auth/monitoring.write o
      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 utilizzi 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, quindi Istanze e seleziona il nome della VM.
  4. Arresta la VM facendo clic su  Arresta.
  5. Dopo l'arresto della VM, fai clic su  Modifica.
  6. Individua gli Ambiti di accesso in Identità e accesso API della pagina e 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 tipicamente usati da un'applicazione o da un carico di lavoro, piuttosto che a una persona. Per ulteriori informazioni, vedi Panoramica degli account di servizio.

Puoi utilizzare gli account di servizio per l'autenticazione indipendentemente da dove si trova 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 concederlo i ruoli necessari e come aggiornare un account di servizio esistente non dispone dei ruoli necessari.

Crea un account di servizio

Per creare un account di servizio, completa la Creazione di un account di servizio delle procedure 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 ha creato l'istanza.

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

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

    • Monitoraggio > Monitoring Metric Writer. Questa operazione autorizza Agente di monitoraggio.

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

    • Logging > Writer log. Questa operazione autorizza un agente.
  • Se prevedi di eseguire l'autenticazione usando una chiave dell'account di servizio, quindi seleziona JSON come Tipo di chiave e fai clic su Crea.

    Quando fai clic su Crea, un file che contiene una chiave dell'account di servizio viene scaricato sul sistema locale. Per ulteriori informazioni, vedi Crea ed elimina le chiavi degli account di servizio.

Successivamente, configura l'account di servizio e le impostazioni a seconda che autorizzi mediante 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 quali ruoli un servizio esistente dell'account e per aggiungere eventuali ruoli necessari che mancano:

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

    Vai a IAM

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e Console di 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), poi seleziona la scheda Autorizzazioni.

  4. Nell'elenco Visualizza per entità, individua la voce relativa alla l'account di servizio. Nella colonna Ruolo sono elencati i ruoli concessi a l'account di servizio.

  5. Se il tuo account di servizio non dispone dei ruoli necessari per di Monitoring, segui questi passaggi per aggiungere i ruoli descritti in Crea 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

Autorizzare l'agente Monitoring installato su un'istanza VM di Compute Engine. a cui è collegato un account di servizio:

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

  2. Concedi al tuo account di servizio i privilegi minimi Ruoli IAM possibili. Per i ruoli richiesti, vedi Sezione Crea 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 mediante 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 della chiave dell'account di servizio sul tuo nel 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 utilizzi 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 sistema locale, esegui Google Cloud CLI. per copiare il file della chiave dal 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. Sposta il file della chiave dell'account di servizio sull'istanza Compute Engine dalla località temporanea a una permanente, Per Linux, assicurati che il file della chiave dell'account di servizio sia leggibile solo entro il giorno root.

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

        • VM Linux: /etc/google/auth/application_default_credentials.json
        • VM Linux: Qualsiasi posizione archiviata nell'ambiente variabile GOOGLE_APPLICATION_CREDENTIALS, che deve essere visibile a durante il processo dell'agente. Per informazioni di configurazione, consulta Imposta GOOGLE_APPLICATION_CREDENTIALS.

        Ad esempio, su Linux puoi eseguire il seguente script che sposta chiave dell'account di servizio sul percorso predefinito, quindi imposta il file autorizzazioni:

        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 alla VM istanza:

        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 le tue L'istanza EC2 non si trova nella regione us-east-1. Per scoprire come definire INSTANCE quando l'istanza si trova nella regione us-east-1, consulta convenzione di denominazione definita da Amazon.

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

        Queste sono le località 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 posizione archiviata nell'ambiente variabile GOOGLE_APPLICATION_CREDENTIALS, che deve essere visibile a durante il processo dell'agente. Per informazioni di configurazione, consulta Imposta GOOGLE_APPLICATION_CREDENTIALS.

        Ad esempio, su Linux puoi eseguire il seguente script che sposta chiave dell'account di servizio sul percorso predefinito, quindi imposta il file autorizzazioni:

        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 è presente. esistono:

    /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 i comandi seguenti come amministratore per impostare GOOGLE_APPLICATION_CREDENTIALS variabile di ambiente di sistema per Ops Agent da utilizzare:

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

    Restart-Service -Name StackdriverMonitoring