Questa guida spiega come assicurarti che Ops Agent, che installi sull'istanza della macchina virtuale (VM), sia autorizzato a inviare i dati di telemetria a Logging.
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 Compute Engine utilizzando le credenziali predefinite dell'applicazione (ADC).
Ops Agent 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. Il service account ha le proprie credenziali univoche. ADC utilizza il server di metadati della VM per ottenere le credenziali di 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.
- Ops Agent non supporta l'autorizzazione tramite
gcloud auth
. Per evitare comportamenti indesiderati, devi revoca qualsiasi credenziale creata utilizzandogcloud auth
.
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.
Verifica gli ambiti di accesso
Agli ambiti di accesso vengono assegnate le istanze VM di Compute Engine quando vengono create. Le nuove VM di Compute Engine dispongono di ambiti di accesso adeguati Ops Agent, ma le VM vecchie o quelle in cui gli ambiti sono stati modificati potrebbe non esserlo. 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:
- Esegui una query sugli ambiti di accesso eseguendo il seguente comando sulla 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
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:
-
Nella console Google Cloud, 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 progetti Google Cloud e seleziona il nome del progetto.
- Seleziona Istanze VM dal menu di navigazione, quindi Istanze e seleziona il nome della VM.
- Arresta la VM facendo clic su stop Arresta.
- Dopo l'arresto della VM, fai clic su edit Modifica.
- Individua gli Ambiti di accesso in Identità e accesso API della pagina e seleziona Imposta l'accesso per ogni API.
- Per le voci API Stackdriver Logging e API Stackdriver Monitoring, seleziona Write Only (Solo scrittura).
- Fai clic su Salva e poi riavvia la VM facendo clic su play_arrow Avvia/Riprendi.
Utilizza 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 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, vedi 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 su Google.
Questa sezione descrive come creare un nuovo account di servizio e concedergli i ruoli necessari, nonché 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 ha creato l'istanza.
Nel menu a discesa Ruolo, seleziona i ruoli seguenti:
Monitoraggio > 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 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 in base al fatto che l'autorizzazione venga eseguita utilizzando gli account di servizio collegati o le 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 aggiungere eventuali 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 progetti Google Cloud e seleziona il nome del progetto.
Se non vedi un elenco di entità IAM (utenti e account di servizio), poi 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 tuo account di servizio non dispone dei ruoli necessari per l'agente Ops, segui i passaggi riportati di seguito per aggiungere i ruoli descritti in Creare un account di servizio:
- Fai clic su edit Modifica nella voce relativa all'account di servizio.
- Fai clic su Aggiungi un altro ruolo per aggiungere eventuali ruoli mancanti.
- Fai clic su Salva.
Autorizzazione con un account di servizio collegato
Per autorizzare Ops Agent installato su un'istanza VM Compute Engine con un account di servizio collegato, segui questi passaggi:
Assicurati di aver verificato gli ambiti di accesso della tua VM.
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.
Collega l'account di servizio alla VM su cui è in esecuzione l'agente.
Se non hai già installato l'agente, installalo. Per informazioni su come installare l'agente, consulta Installazione dell'agente.
Autorizzazione con una chiave dell'account di servizio
Per autorizzare Ops Agent installato su un'istanza VM utilizzando le chiavi private dell'account di servizio:
Trasferisci il file della chiave dell'account di servizio dal sistema locale all'istanza VM:
Crea una variabile di ambiente che indirizzi 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
Completa i passaggi indicati nella seguente tabella:
Compute Engine
-
Nella console Google Cloud, 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 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"
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
.Devi anche impostare la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
in modo che punti alla posizione del file di chiave dell'account di servizio, mentre la variabile devono essere visibili al processo dell'agente. Per informazioni sulla configurazione, consulta ImpostareGOOGLE_APPLICATION_CREDENTIALS
.Ad esempio, su Linux puoi eseguire il seguente script che sposta il file della chiave dell'account di servizio nella posizione predefinita e 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"
-
L'istanza VM ora contiene il file della chiave dell'account di servizio di cui ha bisogno l'agente. Quindi, installa o riavvia l'agente:
Per informazioni su come installare l'agente, consulta Installazione dell'agente.
Per informazioni su come riavviare l'agente, consulta Riavviare l'agente.
Se vuoi controllare il file della chiave dell'account di servizio, vedi 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 crea il file se non è presente. esistono:
/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 questo comando sull'istanza VM:
sudo systemctl restart google-cloud-ops-agent
Windows
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")
Riavviare l'agente eseguendo il seguente comando nell'istanza VM:
Restart-Service -Name google-cloud-ops-agent -Force