Questa guida spiega come assicurarsi che Ops Agent, che installi sull'istanza di macchina virtuale (VM), sia autorizzato a inviare dati di telemetria a Logging.
Panoramica dell'autorizzazione
Autorizzazione si riferisce al processo di determinazione delle autorizzazioni di cui dispone un client autenticato per un insieme di risorse. Google Cloud autorizza l'Ops Agent su un'istanza VM di Compute Engine utilizzando le credenziali predefinite dell'applicazione (ADC).
L'agente Ops supporta ADC che autenticano ilaccount di serviziot collegato di una VM o una chiave deaccount di serviziont.
- Un service account collegato si riferisce a un account di servizio specifico per una determinata risorsa, ad esempio una VM. Il account di servizio ha credenziali univoche. ADC utilizza il server di metadati della VM per ottenere le credenziali per un servizio.
- Una chiave del service account si riferisce a una chiave privata utilizzata per autorizzare la coppia di chiavi su un account di servizio in un progetto, il che ti consente di creare un token di accesso. Utilizzi il token per fornire un'identità in modo da poter interagire con le Google Cloud API per conto del account di servizio.
- Ops Agent non supporta l'autorizzazione tramite
gcloud auth
. Per evitare comportamenti indesiderati, devi revocare le credenziali create utilizzandogcloud auth
.
Ti consigliamo di configurare ADC per l'autenticazione utilizzando un service account collegato ogni volta che è possibile, poiché la chiave privata richiede l'archiviazione locale e questa archiviazione può essere compromessa. Per ulteriori informazioni sulle chiavi dei account di servizio, consulta Best practice per la gestione delle account di servizio account.
Verifica gli ambiti di accesso
Alle istanze VM di Compute Engine vengono assegnati ambiti di accesso al momento della creazione. Le nuove VM di Compute Engine dispongono di ambiti di accesso adeguati per l'Ops Agent, ma le VM precedenti o quelle su cui sono stati modificati gli ambiti potrebbero non averli. Per ulteriori informazioni sugli ambiti di accesso e sui service account, consulta Autorizzazione nella documentazione di Compute Engine.
Per verificare gli ambiti di accesso:
- Esegui una query sugli ambiti di accesso eseguendo il seguente comando 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
Nell'output del comando, se è elencato l'ambito di accesso
https://www.googleapis.com/auth/cloud-platform
hai un'autorizzazione sufficiente.Se
https://www.googleapis.com/auth/cloud-platform
non è elencato, sono necessari due ambiti di accesso, uno per ciascuna delle seguenti coppie "logging" e "monitoraggio":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:
-
Nella Google Cloud console, vai alla pagina Istanze VM.
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Compute Engine.
- Se necessario, fai clic sull'elenco a discesa dei Google Cloud progetti e seleziona il nome del tuo progetto.
- Seleziona Istanze VM dal menu di navigazione, seleziona la scheda Istanze e poi il nome della tua VM.
- Arresta la VM facendo clic su stop Arresta.
- Dopo l'arresto della VM, fai clic su edit Modifica.
- Individua la sezione Ambiti di accesso nella sezione Identità e accesso API della pagina, quindi seleziona Imposta l'accesso per ogni API.
- Per le voci API Stackdriver Logging e API Stackdriver Monitoring, seleziona Solo scrittura.
- Fai clic su Salva, quindi riavvia la VM facendo clic su play_arrow Avvia/Riprendi.
Utilizzare un account di servizio
Il termine autenticazione fa riferimento al processo di determinazione dell'identità del client. Per l'autenticazione, ti consigliamo di utilizzare un service account, un tipo speciale di account utilizzato in genere da un'applicazione o da un workload, anziché da una persona. Per saperne di più, vedi Panoramica dei service account.
Puoi utilizzare i service account per l'autenticazione indipendentemente da dove viene eseguito il codice: su Compute Engine, App Engine o on-premise. Per ulteriori informazioni, consulta Autenticazione su Google.
Questa sezione descrive come creare un nuovo account di servizio e concedergli i ruoli necessari, nonché come aggiornare unaccount di serviziot 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 service account con le seguenti informazioni:
Seleziona il progetto Google Cloud in cui creare il account di servizio.
- Per le istanze Compute Engine, scegli il progetto in cui hai creato l'istanza.
Nel menu a discesa Ruolo, seleziona i seguenti ruoli:
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, sul tuo sistema locale viene scaricato un file contenente una chiave dell'account di servizio. Per ulteriori informazioni, vedi Creare ed eliminare le account di servizio account.
A questo punto, configura il account di servizio e le impostazioni in base al metodo di autorizzazione che preferisci: tramite service account collegati o tramite chiavi private delaccount di serviziot.
Verificare e modificare i ruoli di un account di servizio esistente
Puoi utilizzare la console Google Cloud per determinare i ruoli di un service account esistente e per aggiungere i ruoli necessari mancanti:
-
Nella console Google Cloud , vai alla pagina IAM:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.
Se necessario, fai clic sull'elenco a discesa dei Google Cloud progetti e seleziona il nome del tuo progetto.
Se non vedi un elenco di entità IAM (utenti e service account), seleziona la scheda Autorizzazioni.
Nell'elenco Visualizza per entità, individua la voce relativa all'account di servizio. La colonna Ruolo elenca i ruoli concessi all'account di servizio.
Se il account di servizio non dispone dei ruoli necessari per Ops Agent, segui questi passaggi per aggiungere i ruoli descritti in Creare un service account:
- Fai clic su edit Modifica nella voce relativa al account di servizio.
- Fai clic su Aggiungi un altro ruolo per aggiungere i ruoli mancanti.
- Fai clic su Salva.
Autorizzare con un account di servizio collegato
Per autorizzare Ops Agent installato su un'istanza VM di Compute Engine con unaccount di serviziot collegato, procedi nel seguente modo:
Assicurati di aver verificato gli ambiti di accesso della tua VM.
Concedi al tuo account di servizio i ruoli IAM con privilegi minimi possibili. Per i ruoli richiesti, consulta la sezione Crea un service account di questa pagina.
Collega il service account alla VM in cui è in esecuzione l'agente.
Se non hai ancora installato l'agente, installalo. Per informazioni su come installare l'agente, consulta Installazione dell'agente.
Autorizza con una chiave del account di servizio
Per autorizzare Ops Agent installato su un'istanza VM utilizzando le chiavi private delaccount di serviziot, procedi nel seguente modo:
Trasferisci il file della chiave del account di servizio dal sistema locale all'istanza VM:
Crea una variabile di ambiente che indirizzi al file della chiave del account di servizio sul tuo sistema locale. L'esempio seguente crea una variabile denominata
CREDS
:CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
-
Nella Google Cloud console, vai alla pagina 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.
Sul tuo sistema locale, esegui un comando 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"
Sull'istanza di Compute Engine, sposta il file di chiavi del account di servizio dalla posizione temporanea a una posizione permanente e, per Linux, assicurati che il file di chiavi deaccount di serviziont sia leggibile solo da
root
.Devi anche impostare la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
in modo che punti alla posizione del file della chiave del account di servizio e la variabile deve essere visibile al processo dell'agente. Per informazioni sulla configurazione, vedi ImpostaGOOGLE_APPLICATION_CREDENTIALS
.Ad esempio, su Linux puoi eseguire il seguente script che sposta il file della chiave delaccount di serviziot nella posizione predefinita e poi 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"
La tua istanza VM ora ha il file della chiave del account di servizio di cui l'agente ha bisogno. Successivamente, installa o riavvia l'agente:
Per informazioni su come installare l'agente, consulta Installazione dell'agente.
Per informazioni su come riavviare l'agente, vedi Riavvio dell'agente.
Se vuoi ricontrollare il file della chiave del account di servizio, consulta la sezione Verifica delle credenziali della chiave privata.
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
Modifica il seguente file di configurazione o crealo se non esiste:
/etc/systemd/system.conf
Aggiungi quanto segue al file di configurazione:
DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
Ricarica le variabili di ambiente:
sudo systemctl daemon-reload
Riavvia l'agente eseguendo il seguente comando sull'istanza VM:
sudo systemctl restart google-cloud-ops-agent
Windows
In PowerShell, esegui i seguenti 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")
Riavvia l'agente eseguendo il seguente comando sull'istanza VM:
Restart-Service -Name google-cloud-ops-agent -Force