In questa pagina viene descritto come instradare le voci di log creando sink configurati con service account gestiti dall'utente. Per impostazione predefinita, Logging utilizza un account di servizio Logging per tutti i sink in una risorsa. Tuttavia, se i sink di log si trovano in progetti diversi, puoi creare e gestire il tuo account di servizio gestito dall'utente, che ti consente di gestire centralmente le autorizzazioni di Identity and Access Management dal progetto che contiene il account di servizio gestito dall'utente.
Puoi creare un sink che utilizza un account di servizio gestito dall'utente solo quando la destinazione del sink è un bucket di log o un Google Cloud progetto. L'esempio in questo documento illustra come configurare un sink che utilizza un service account gestito dall'utente in cui la destinazione è un bucket di log.
Ti consigliamo di rivedere la configurazione del sink di log quando apporti modifiche all'archiviazione dei log. Ad esempio, se elimini la destinazione di un sink di log, elimina il sink di log corrispondente.
Prima di iniziare
-
Nella Google Cloud console, attiva Cloud Shell.
Nella parte inferiore della Google Cloud console, viene avviata una sessiona di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già inclusa e installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Assicurati di avere un account di servizio gestito dall'utente, quindi imposta le seguenti variabili sui valori appropriati per il tuo account di servizio gestito dall'utente:
CUSTOM_SA_PROJECT_ID: CUSTOM_SA_PROJECT_ID: l'ID progetto del progetto che contiene il service account gestito dall'utente.
CUSTOM_SA: l'indirizzo email del tuo account di servizio gestito dall'utente.
Per informazioni su come creare un account di servizio, consulta Creazione di service account.
Assicurati di avere un bucket di log che possa fungere da destinazione di un sink di log, quindi imposta le seguenti variabili sui valori appropriati per il bucket di log. Se necessario, crea un bucket di log:
LOG_BUCKET_PROJECT_ID: l'ID progetto del progetto contenente il bucket di log.
LOCATION: la località del bucket di log.
BUCKET_NAME: il nome del bucket di log.
Identifica il nome del account di servizio Logging esistente nel progetto in cui prevedi di creare il sink di log, quindi imposta le seguenti variabili sui valori appropriati:
SINK_PROJECT_ID: SINK_PROJECT_ID: l'ID progetto del progetto in cui prevedi di creare il sink di log.
LOGGING_SA: l'indirizzo email del account di servizio Logging predefinito. Per ottenere questo indirizzo, esegui il comando seguente:
gcloud logging settings describe --project=SINK_PROJECT_IDNella risposta, la riga che inizia con
loggingServiceAccountIdelenca l'indirizzo email del tuo account di servizio.
Nel progetto contenente il account di servizio gestito dall'utente, assicurati che il vincolo booleano della policy dell'organizzazione
iam.disableCrossProjectServiceAccountUsagenon sia applicato. Per impostazione predefinita, questo vincolo è applicato. Per disattivare questo vincolo in modo da poter collegare un account di servizio a una risorsa in un altro progetto, esegui il comando seguente:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=CUSTOM_SA_PROJECT_IDPer saperne di più sull'attivazione dei service account tra i progetti, consulta Attivare i service account da collegare tra i progetti.
Concedi ruoli IAM
Questa sezione descrive i prerequisiti per la creazione di un sink che utilizza un account di servizio gestito dall'utente.
Consenti al account di servizio gestito dall'utente di scrivere voci di log nella destinazione del sink
Concedi al account di servizio gestito dall'utente le autorizzazioni necessarie per scrivere voci di log nella destinazione del sink che creerai in un passaggio successivo. La destinazione del sink sarà un bucket di log archiviato nel progetto denominato LOG_BUCKET_PROJECT_ID.
Per concedere le autorizzazioni richieste al account di servizio gestito dall'utente, concedigli il ruolo Writer bucket di log (roles/logging.bucketWriter) nel progetto contenente il bucket di log:
gcloud projects add-iam-policy-binding LOG_BUCKET_PROJECT_ID \
--member='serviceAccount:CUSTOM_SA' \
--role='roles/logging.bucketWriter'
Per saperne di più sul comando precedente, consulta
gcloud projects add-iam-policy-binding.
Configura la simulazione dell'identità del account di servizio
Configura il account di servizio Cloud Logging predefinito, LOGGING_SA, in modo che possa simulare l'identità del account di servizio gestito dall'utente, CUSTOM_SA. Il account di servizio Cloud Logging predefinito esiste nel Google Cloud progetto in cui vuoi creare sink di log che utilizzano il account di servizio gestito dall'utente.
Per configurare la simulazione dell'identità del service account, concedi il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) al service account Cloud Logging nel service account gestito dall'utente:
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='serviceAccount:LOGGING_SA' \
--role='roles/iam.serviceAccountTokenCreator'
La simulazione dell'identità del service account coinvolge due entità: il account di servizio che non dispone delle autorizzazioni per accedere a una risorsa e il account di servizio con privilegi che dispone delle autorizzazioni per accedere a una risorsa. In questo caso, il account di servizio gestito dall'utente è l'account con privilegi perché ha la possibilità di scrivere voci di log nella destinazione del sink, ovvero un bucket di log nel progetto denominato LOG_BUCKET_PROJECT_ID. Il account di servizio Logging dispone dei privilegi per instradare le voci di log.
Per saperne di più sul ruolo Creatore token account di servizio, consulta Ruolo Creatore token account di servizio.
Per saperne di più sulla simulazione dell'identità del account di servizio, consulta Informazioni sulla account di servizio account.
Consenti all'entità di eseguire operazioni come account di servizio gestito dall'utente
Concedi all'entità che creerà il sink le autorizzazioni necessarie per eseguire operazioni come account di servizio gestito dall'utente.
Per concedere le autorizzazioni richieste, concedi all'entità il
ruolo Utente account di servizio (roles/iam.serviceAccountUser)
nel Google Cloud progetto che archivia il
service account gestito dall'utente, CUSTOM_SA_PROJECT_ID.
Prima di eseguire il comando seguente, effettua le seguenti sostituzioni:
- PRINCIPAL: un identificatore per l'entità a cui vuoi
concedere il ruolo. Gli identificatori principali hanno in genere il seguente formato:
PRINCIPAL-TYPE:ID. Ad esempio,user:my-user@example.com. Per un elenco completo dei formati chePRINCIPALpuò avere, consulta Identificatori delle entità.
Esegui il
gcloud iam service-accounts add-iam-policy-binding
comando:
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/iam.serviceAccountUser'
Se utilizzi ruoli personalizzati, l'entità deve disporre dell'autorizzazione iam.serviceAccounts.actAs.
Per saperne di più sul ruolo Utente account di servizio, consulta Ruolo Utente account di servizio.
Crea un sink di log che utilizza un account di servizio gestito dall'utente
Per creare un sink con un account di servizio gestito dall'utente, esegui il comando gcloud logging sinks create e includi l'opzione --custom-writer-identity.
Prima di eseguire il comando seguente, effettua le seguenti sostituzioni:
- SINK_NAME: il nome del sink di log.
Esegui il
gcloud logging sinks create
comando:
gcloud logging sinks create SINK_NAME \
logging.googleapis.com/projects/LOG_BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME \
--custom-writer-identity=serviceAccount:CUSTOM_SA \
--project=SINK_PROJECT_ID
Verifica che il sink stia instradando le voci di log
In questa sezione, utilizzi gcloud CLI per scrivere e leggere una voce di log per verificare che il sink stia instradando correttamente le voci di log.
Per verificare che il sink stia instradando correttamente le voci di log:
Esegui il comando
gcloud logging write:Prima di eseguire il comando seguente, effettua le seguenti sostituzioni:
- LOG_NAME: il nome del log. Ad esempio, puoi impostare questo campo su
mylog.
Esegui il
gcloud logging writecomando:gcloud logging write LOG_NAME "Test log entry" --project=SINK_PROJECT_IDIl comando precedente restituisce il seguente messaggio:
Created log entry.- LOG_NAME: il nome del log. Ad esempio, puoi impostare questo campo su
Per leggere la voce di log appena scritta, esegui il comando seguente:
gcloud logging read 'textPayload="Test log entry"' \ --bucket=BUCKET_NAME --location=LOCATION \ --view=_AllLogs --project=SINK_PROJECT_ID
Passaggi successivi
Per scoprire di più sull'instradamento delle voci di log verso le destinazioni supportate, consulta Instrada i log verso destinazioni supportate.
Per una panoramica su come Logging instrada e archivia le voci di log, consulta Panoramica su routing e archiviazione.
Se riscontri problemi durante l'utilizzo dei sink per instradare le voci di log, consulta Risolvere i problemi relativi all'instradamento dei log.
Per scoprire come visualizzare le voci di log nelle relative destinazioni, nonché come vengono formattate e organizzate, consulta Visualizzare i log nelle destinazioni dei sink.