Questa guida spiega come assicurarti che l'agente Logging, che installi sulla tua istanza di macchina virtuale (VM), sia autorizzato a inviare dati di telemetria a Google Cloud Observability.
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 l'agente Logging su un'istanza VM Compute Engine utilizzando le credenziali predefinite dell'applicazione (ADC).
L'agente Logging supporta l'ADC che autentica l'account di servizio associato di una VM o una chiave dell'account di servizio.
- Un account di servizio associato si riferisce a un account di servizio specifico per una determinata risorsa, ad esempio una VM. Il account di servizio 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 si riferisce a 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. Utilizza 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 per l'autenticazione utilizzando un account di servizio collegato se possibile, poiché la chiave privata richiede spazio di archiviazione locale e questo spazio di archiviazione può 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 Logging supporta l'autenticazione solo utilizzando il metodo della chiave dell'account di servizio.
Prima di iniziare
Leggi questa guida se una delle seguenti condizioni si applica a te:
Se utilizzi istanze Compute Engine molto vecchie o se hai modificato gli ambiti di accesso o le impostazioni del 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 della chiave dell'account di servizio richiesto. Per informazioni su come verificare gli ambiti di accesso e le impostazioni degli account di servizio delle istanze, consulta Verificare le credenziali di Compute Engine.
Nelle istanze VM di Compute Engine appena create, gli ambiti di accesso e le impostazioni degli account di servizio sono sufficienti per eseguire gli agenti.
Se utilizzi istanze VM Amazon EC2 (AWS VC2), segui questa procedura prima di installare l'agente:
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 scopo esclusivo è archiviare le metriche e i log delle istanze EC2 in un account AWS.
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 hai 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 dei progetti per identificare i progetti di hosting. Ti sconsigliamo di riutilizzare un progetto Google Cloud esistente, soprattutto se contiene risorse Google Cloud.
Completa i passaggi per autorizzare l'agente utilizzando un file della chiave dell'account di servizio.
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
Se nell'output comando è elencato l'ambito di accesso
https://www.googleapis.com/auth/cloud-platform
, significa che disponi dell'autorizzazione sufficiente.Se
https://www.googleapis.com/auth/cloud-platform
non è elencato, hai bisogno di due ambiti di accesso, uno per ciascuna delle seguenti coppie di "registrazione" 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 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, poi la scheda Istanze e infine il nome della VM.
- Arresta la VM facendo clic su stop Arresta.
- Dopo l'arresto della VM, fai clic su edit Modifica.
- Individua 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 Sola 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, 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 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 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:
- Logging > Writer log. In questo modo, l'agente Logging viene autorizzato a importare i log.
- Monitoraggio > Monitoring Metric Writer. In questo modo, l'agente Logging viene autorizzato a importare le proprie metriche di integrità.
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 sul tuo sistema locale. Per ulteriori informazioni, consulta Creare ed eliminare le chiavi degli account di servizio.
Successivamente, configura l'account di servizio e le impostazioni in base al fatto che tu autorizzi 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 principali IAM (utenti e account di servizio), 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 Logging, 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 l'agente Logging installato su un'istanza VM Compute Engine con un account di servizio associato, segui questi passaggi:
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 Creare un account di servizio di questa pagina.
Associa l'account di servizio alla VM in cui è in esecuzione l'agente.
Se non l'hai ancora fatto, installa l'agente. Per informazioni su come installare l'agente, consulta Installazione dell'agente.
Autorizzazione con una chiave dell'account di servizio
Per autorizzare l'agente Logging 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. L'esempio seguente crea una variabile denominata
CREDS
:CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
Completa i passaggi mostrati nella tabella seguente:
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"
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
.Queste sono le posizioni in cui l'agente si aspetta 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 memorizzata nella variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
, che deve essere visibile al processo dell'agente. Per informazioni sulla configurazione, consulta ImpostaGOOGLE_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"
- VM Linux:
Amazon EC2
Per la tua VM, identifica YOUR-INSTANCE'S-ID e YOUR-INSTANCE'S-AWS-REGION.
Sul tuo sistema locale, utilizza scp per copiare il file della chiave dell'account di servizio dal tuo 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 la tua istanza EC2 non si trovi nella regioneus-east-1
. Per scoprire come definire la variabileINSTANCE
quando l'istanza si trova nella regioneus-east-1
, consulta la convenzione di denominazione definita da Amazon.Nell'istanza EC2, sposta il file della chiave dell'account di servizio dalla collocazione temporanea a 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 posizioni in cui l'agente si aspetta 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 memorizzata nella variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
, che deve essere visibile al processo dell'agente. Per informazioni sulla configurazione, consulta ImpostaGOOGLE_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. Poi, 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 ricontrollare il file della chiave dell'account di servizio, consulta la sezione Verificare le credenziali della chiave privata.
Imposta GOOGLE_APPLICATION_CREDENTIALS
Questa sezione mostra come impostare la variabile di ambienteGOOGLE_APPLICATION_CREDENTIALS
in modo che sia visibile al processo dell'agente.
Linux
Modifica il seguente file di configurazione o creane uno se non esiste:
/etc/default/google-fluentd
Aggiungi quanto segue al file di configurazione:
GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE
Riavviare l'agente eseguendo il seguente comando nell'istanza VM:
sudo service google-fluentd restart
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")
Riavviare l'agente eseguendo il seguente comando nell'istanza VM:
Restart-Service -Name StackdriverLogging