Puoi utilizzare Cloud Logging per instradare le voci di log dai servizi Google Cloud , dalle tue applicazioni e da altri cloud provider verso destinazioni per l'archiviazione, l'analisi e l'esportazione di terze parti.
Per impostazione predefinita, Cloud Logging instrada tutte le voci di log ai bucket di log nel progetto, nella cartella o nell'organizzazione in cui hanno origine. Tuttavia, puoi configurare i sink di log per instradare i dati di log a bucket personalizzati o a Pub/Sub. Pub/Sub supporta l'esportazione dei dati in strumenti di terze parti.
Routing ed esportazione delle voci di log
Il routing è il processo di spostamento delle voci di log ricevute da un progetto, una cartella o un'organizzazione Google Cloud in una destinazione. Una destinazione è un servizio che elabora le voci di log ricevute ed esegue un'azione. Ad esempio, puoi indirizzare le voci di log a un bucket di log. Questa destinazione analizza le voci di log per trovare informazioni sugli errori e poi le scrive nello spazio di archiviazione.
L'esportazione è il processo di spostamento delle voci di log da Google Cloud a una posizione esterna. Ad esempio, puoi instradare le voci di log a Pub/Sub e poi esportarle in strumenti di terze parti.
Cloud Logging utilizza i sink di log per instradare le voci di log alle destinazioni. Per impostazione predefinita, le voci di log vengono indirizzate a uno dei due bucket di log nel tuo progetto, nella tua cartella o nella tua organizzazioneGoogle Cloud . Puoi creare sink di log per instradare i dati di log ad altre destinazioni. Puoi anche modificare uno dei sink di log creati dal sistema. Questo documento descrive queste opzioni.
Esplora log consente di scaricare le voci di log archiviate nei bucket di log nello spazio di archiviazione locale. Tuttavia, l'opzione di download è limitata a 10.000 voci di log. Per esportare le voci di log daGoogle Cloud, configura un sink di log per instradare le voci di log in entrata a Pub/Sub, quindi esporta i dati da Google Cloud.
Informazioni sui router dei log
Ogni progetto, account di fatturazione, cartella e organizzazione Google Cloud ha un router dei log, che gestisce il flusso delle voci di log tramite i sink a livello di risorsa. Un router dei log gestisce anche il flusso di una voce di log tramite i sink che si trovano nella gerarchia delle risorse della voce. I sink controllano il modo in cui le voci di log vengono instradate alle destinazioni.
Un router dei log archivia temporaneamente una voce di log. Questo comportamento protegge da interruzioni temporanee e disservizi che potrebbero verificarsi quando una voce di log passa attraverso i sink. Lo spazio di archiviazione temporaneo non protegge dagli errori di configurazione.
Lo spazio di archiviazione temporaneo di un router dei log è diverso dallo spazio di archiviazione a lungo termine fornito dai bucket di Logging.
Le voci di log in entrata con timestamp che risalgono a un periodo precedente al periodo di conservazione dei log o che sono successive di più di 24 ore vengono ignorate.
Informazioni sui sink di log
Quando un sink di log riceve una voce di log, determina se ignorarla o indirizzarla alla destinazione del sink. Il sink di log confronta la voce di log con i suoi filtri per prendere questa decisione. La destinazione di un sink può essere un progetto, una località di archiviazione o un servizio come Pub/Sub. Ad esempio, un sink può eseguire il routing delle voci di log a un bucket di log.
I sink di log appartengono a una determinata risorsa Google Cloud : Google Cloud progetti, account di fatturazione, cartelle e organizzazioni. Queste risorse contengono anche più sink di log. Quando una risorsa riceve una voce di log, ogni sink di log in quella risorsa la valuta in modo indipendente. Di conseguenza, più sink di log possono instradare la stessa voce di log.
Per impostazione predefinita, i dati di log vengono archiviati nel progetto in cui hanno origine. Tuttavia, esistono diversi motivi per cui potresti voler modificare questa configurazione:
- Centralizzare l'archiviazione dei dati dei log.
- Per unire i dati di log ad altri dati aziendali.
- Per organizzare i dati di log in modo utile per te.
- Per trasmettere i log ad altre applicazioni, altri repository o terze parti. Ad esempio, potresti voler esportare i log da Google Cloud per poterli visualizzare su una piattaforma di terze parti. Per esportare le voci di log, crea un sink di log che le instradi a Pub/Sub.
Un sink di log configurato in modo errato non esegue il routing delle voci di log. Quando un sink è configurato in modo errato, vengono scritte voci di log che riportano i dettagli dell'errore. Inoltre, viene inviata un'email ai contatti fondamentali della risorsa. Per saperne di più, consulta Risoluzione dei problemi: visualizza gli errori.
I sink di log non possono instradare le voci di log in modo retroattivo. In altre parole, un sink di log non può instradare una voce di log ricevuta prima della creazione del sink. Analogamente, se un sink è configurato in modo errato, instrada solo le voci di log che arrivano dopo la risoluzione dell'errore di configurazione.
Supporto per organizzazioni e cartelle
Per aiutarti a gestire i dati di log in un'organizzazione o in una cartella, puoi:
Puoi creare sink aggregati, che indirizzano le voci di log per un'organizzazione o una cartella e i relativi elementi secondari alla destinazione specificata dal sink. Esistono due tipi di sink aggregati:
- Sink aggregati non di intercettazione
- Sink aggregati di intercettazione
I sink di intercettazione possono eseguire l'override del comportamento di routing per le risorse di livello inferiore nella gerarchia. I sink non intercettanti non influiscono sul routing per altre risorse. Quando un sink di intercettazione in una risorsa corrisponde a una voce di log, questa non viene inviata ai sink nelle risorse figlio, ad eccezione del fatto che la voce di log viene sempre inviata al sink di log
_Requirednella risorsa in cui ha origine la voce di log.Puoi configurare le impostazioni predefinite delle risorse per Cloud Logging per specificare la configurazione del sink
_Defaultcreato dal sistema per le nuove risorse in un'organizzazione o in una cartella. Ad esempio, puoi utilizzare queste impostazioni per disattivare il sink_Defaulto specificare i filtri in quel sink.
Esempi di routing
Questa sezione illustra come una voce di log che ha origine in un progetto potrebbe passare attraverso i sink nella sua gerarchia delle risorse.
Esempio: non esistono sink aggregati
Se nella gerarchia delle risorse della voce di log non esistono sink aggregati, la voce di log viene inviata ai sink di log nel progetto in cui ha origine. Un sink a livello di progetto instrada la voce di log alla destinazione del sink quando la voce di log corrisponde al filtro di inclusione del sink, ma non a nessuno dei filtri di esclusione del sink.
Esempio: esiste un sink aggregato non intercettante
Supponiamo che nella gerarchia delle risorse per una voce di log esista un sink aggregato non intercettante. Dopo che il router dei log invia la voce di log al sink aggregato non intercettante, si verifica quanto segue:
Il sink aggregato non intercettante instrada la voce di log alla destinazione del sink quando la voce di log corrisponde al filtro di inclusione, ma non a un filtro di esclusione.
Il router dei log invia la voce di log ai sink di log nel progetto in cui ha avuto origine la voce di log.
Un sink a livello di progetto instrada la voce di log alla destinazione del sink quando la voce di log corrisponde al filtro di inclusione del sink, ma non a nessuno dei filtri di esclusione del sink.
Esempio: esiste un sink aggregato di intercettazione
Supponiamo che nella gerarchia delle risorse per una voce di log esista un sink aggregato di intercettazione. Dopo che il router dei log invia la voce di log al sink aggregato di intercettazione, si verifica una delle seguenti situazioni:
La voce di log corrisponde al filtro di inclusione, ma non corrisponde a nessun filtro di esclusione:
- La voce di log viene indirizzata alla destinazione del sink aggregato di intercettazione.
- La voce di log viene inviata al sink
_Requirednel progetto in cui è stata generata.
La voce di log non corrisponde al filtro di inclusione o corrisponde ad almeno un filtro di esclusione:
- La voce di log non viene instradata dal sink aggregato di intercettazione.
Il router dei log invia la voce di log ai sink di log nel progetto in cui ha avuto origine la voce di log.
Un sink a livello di progetto instrada la voce di log alla destinazione del sink quando la voce di log corrisponde al filtro di inclusione del sink, ma non a nessuno dei filtri di esclusione del sink.
Filtri dei sink di log
Ogni sink di log contiene un filtro di inclusione e può contenere più filtri di esclusione. Questi filtri determinano se il sink di log esegue il routing di una voce di log alla destinazione del sink. Se non specifichi alcun filtro, ogni voce di log viene indirizzata alla destinazione del sink.
Una voce di log viene instradata da un sink di log in base alle seguenti regole:
Se la voce di log non corrisponde al filtro di inclusione, non viene instradata. Se un sink non specifica un filtro di inclusione, ogni voce di log corrisponde a quel filtro.
Se la voce di log corrisponde al filtro di inclusione e ad almeno un filtro di esclusione, non viene instradata.
Se la voce di log corrisponde al filtro di inclusione e non corrisponde a nessun filtro di esclusione, viene indirizzata alla destinazione del sink.
I filtri in un sink di log vengono specificati utilizzando il linguaggio di query di Logging.
Non puoi utilizzare i filtri di esclusione per ridurre il consumo della
quota API entries.write o il
numero di chiamate API entries.write. I filtri di esclusione vengono applicati dopo che le voci di log sono state ricevute dall'API Logging o dall'API Telemetry.
Sink di log creati dal sistema
Per ogni progetto, account di fatturazione, cartella e organizzazione Google Cloud , Cloud Logging crea due sink di log, uno denominato _Required e l'altro denominato _Default. I filtri di inclusione ed esclusione per questi sink assicurano che ogni voce di log proveniente dalla risorsa venga instradata da uno di questi sink. Entrambi i sink indirizzano i dati di log a un bucket di log che si trova nella stessa risorsa del sink di log.
Il resto di questa sezione fornisce informazioni sui filtri e sulle destinazioni dei sink di log creati dal sistema.
_Required sink di log
Il sink di log _Required in una risorsa esegue il routing di un sottoinsieme di audit log al bucket di log _Required della risorsa.
Questo sink non specifica alcun filtro di esclusione e il filtro di inclusione è il seguente:
LOG_ID("cloudaudit.googleapis.com/activity") OR
LOG_ID("externalaudit.googleapis.com/activity") OR
LOG_ID("cloudaudit.googleapis.com/system_event") OR
LOG_ID("externalaudit.googleapis.com/system_event") OR
LOG_ID("cloudaudit.googleapis.com/access_transparency") OR
LOG_ID("externalaudit.googleapis.com/access_transparency")
Il sink di log _Required corrisponde solo alle voci di log che hanno origine nella risorsa in cui è definito il sink di log _Required. Ad esempio, supponiamo che un sink di log indirizzi una voce di log delle attività dal progetto A al progetto B.
Poiché la voce di log non ha avuto origine nel progetto B, il sink di log _Required nel progetto B non instrada questa voce di log al bucket di log _Required.
Non puoi modificare o eliminare il sink di log _Required.
_Default sink di log
Il sink di log _Default in una risorsa instrada le voci di log al bucket di log _Default della risorsa.
Poiché il filtro di inclusione per questo sink è vuoto, corrisponde a tutte le voci di log. Tuttavia, il filtro di esclusione è configurato come segue:
NOT LOG_ID("cloudaudit.googleapis.com/activity") AND
NOT LOG_ID("externalaudit.googleapis.com/activity") AND
NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND
NOT LOG_ID("externalaudit.googleapis.com/system_event") AND
NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND
NOT LOG_ID("externalaudit.googleapis.com/access_transparency")
Puoi modificare e disattivare il sink di log _Default. Ad esempio, puoi modificare il sink di log _Default e cambiare la destinazione. Puoi anche modificare qualsiasi filtro esistente e aggiungere filtri di esclusione.
Destinazioni sink
La destinazione di un sink può trovarsi in una risorsa diversa dal sink. Ad esempio, puoi utilizzare un sink di log per instradare le voci di log da un progetto a un bucket di log archiviato in un altro progetto.
Sono supportate le seguenti destinazioni:
- ProgettoGoogle Cloud
Seleziona questa destinazione se vuoi che i sink di log nel progetto di destinazione cambino il percorso delle voci di log o se hai creato un sink aggregato di intercettazione. I sink di log nel progetto di destinazione possono reindirizzare le voci di log a qualsiasi destinazione supportata, ad eccezione di un progetto.
I sink di log creati dal sistema nel progetto di destinazione escludono le voci di log che vengono indirizzate al bucket di log
_Requirednel progetto di origine. Ad esempio, se esegui il routing dei log delle attività di amministrazione a un altro progetto, i sink di log_Requirede_Defaultnel progetto di destinazione escludono queste voci di log. Per archiviare queste voci di log, nel progetto di destinazione aggiorna il sink di log_Defaulto crea un sink di log personalizzato.
- Bucket di log
- Seleziona questa destinazione se vuoi archiviare i dati di log in risorse gestite da Cloud Logging. I dati di log archiviati nei bucket di log possono essere visualizzati e analizzati utilizzando servizi come Esplora log.
- Argomento Pub/Sub
- Seleziona questa destinazione se vuoi esportare i dati di log daGoogle Cloud e poi utilizzare un'integrazione di terze parti. Le voci di log vengono formattate come JSON e poi indirizzate a un argomento Pub/Sub.
Limitazioni delle destinazioni
Questa sezione descrive le limitazioni specifiche per le destinazioni:
- Quando configuri una destinazione del sink, fornisci il percorso completo e utilizza l'endpoint globale del servizio.
Gli endpoint di servizio regionali (REP), come
pubsub.LOCATION.rep.googleapis.com, non sono supportati.
Il routing dei log a un argomento Pub/Sub che applica limitazioni in transito non è supportato. Logging non può garantire che le richieste di pubblicazione provengano da una regione consentita, il che causa errori di configurazione di
topic_region_not_allowede log ignorati.Le seguenti limitazioni si applicano quando la destinazione di un sink di log è un progetto Google Cloud :
- Esiste un limite di un hop.
- Il sink di log
_Requirednel progetto di destinazione instrada le voci di log al bucket di log_Requireddel progetto quando le voci di log corrispondono al filtro del sink e provengono dal progetto di destinazione. - Il sink di log
_Defaultnel progetto di destinazione instrada le voci di log che corrispondono al filtro di inclusione e non corrispondono a nessun filtro di esclusione. Il sink di log_Defaultesclude alcune voci di log. Ad esempio, questo sink non esegue il routing delle voci dei log Attività di amministrazione ed Evento di sistema. Puoi modificare questo sink. - Solo i sink aggregati che si trovano nella gerarchia delle risorse di una voce di log elaborano la voce.
Ad esempio, supponiamo che la destinazione di un sink di log nel progetto
Asia il progettoB. In questo caso, si applicano le seguenti regole:- A causa del limite di un hop, i sink di log nel progetto
Bnon possono reindirizzare le voci di log a un altro progetto Google Cloud . - Il bucket di log
_Requireddel progettoBarchivia solo le voci di log provenienti dal progettoB. Questo bucket di log non archivia voci di log provenienti da altre risorse, incluse quelle provenienti dal progettoA. - Se il progetto
Ae il progettoBhanno gerarchie di risorse diverse, una voce di log che un sink di log nel progettoAindirizza al progettoBnon viene inviata ai sink aggregati nella gerarchia di risorse del progettoB. - Se il progetto
Ae il progettoBhanno la stessa gerarchia delle risorse, le voci di log vengono inviate ai sink aggregati in quella gerarchia. Se una voce di log non viene intercettata da un sink aggregato, il router dei log invia la voce ai sink nel progettoA.
Best practice
Gestisci i sink di log quando gestisci lo spazio di archiviazione dei log. Ad esempio, se elimini la destinazione di un sink di log, elimina il sink di log corrispondente.
Per le best practice sull'utilizzo del routing per la governance dei dati o per i casi d'uso comuni, consulta i seguenti documenti:
Esempi: centralizza lo spazio di archiviazione dei log
Questa sezione descrive come configurare lo spazio di archiviazione centralizzato. L'archiviazione centralizzata fornisce un unico luogo in cui eseguire query sui dati di log, semplificando le query quando cerchi tendenze o indaghi su problemi. Dal punto di vista della sicurezza, hai anche un'unica posizione di archiviazione, il che può semplificare le attività dei tuoi analisti della sicurezza.
Se centralizzi l'archiviazione dei log, valuta se applicare un blocco al progetto che archivia i dati di log. Un blocco può impedire l'eliminazione accidentale di un progetto. Per scoprire di più, consulta l'articolo Protezione dei progetti con blocchi.
Centralizza l'archiviazione dei log per i progetti in una cartella
Supponiamo che tu gestisca una cartella e voglia centralizzare l'archiviazione delle voci di log. Per questo caso d'uso, puoi procedere come segue:
- Nella cartella, crei un progetto denominato
CentralStorage. - Crea un sink aggregato di intercettazione per la tua cartella e configuralo per instradare tutte le voci di log. Hai impostato la destinazione del sink sul progetto denominato
CentralStorage.
Quando arriva una voce di log proveniente dalla cartella o da una delle sue risorse secondarie, questa viene inviata al sink aggregato di intercettazione che hai creato. Questo sink instrada le voci di log al progetto denominato CentralStorage. I sink di log in questo progetto elaborano le voci di log:
Il sink di log
_Defaultindirizza al bucket di log_Defaulttutte le voci di log che corrispondono al filtro del sink. Questo bucket di log è la tua posizione di archiviazione centralizzata.Il sink di log
_Requiredindirizza al bucket di log_Requiredle voci di log che corrispondono ai filtri del sink e che hanno origine nel progettoCentralStorage. Questo bucket di log non è una posizione di archiviazione centralizzata. Tuttavia, puoi archiviare centralmente tutti i dati dei log. Per un esempio, consulta Archivia gli audit log in una posizione centrale.
Al termine dell'elaborazione del sink aggregato, la voce di log viene inviata al sink di log _Required nella risorsa in cui ha avuto origine la voce di log. Quando la voce di log corrisponde al filtro nel sink di log _Required, la voce di log viene instradata al bucket di log _Required della risorsa. Di conseguenza, ogni progetto Google Cloud nella tua cartella archivia le voci di log nel proprio bucket di log _Required.
Centralizza l'archiviazione dei log per un insieme di progetti
Puoi anche archiviare le voci di log in un'unica posizione se non hai un'organizzazione o una cartella. Ad esempio, potresti:
- Crea un progetto denominato
CentralStorage. - Per ogni progetto, ad eccezione di
CentralStorage, modifica il sink di log_Defaulte imposta la destinazione sul progetto denominatoCentralStorage.
Potresti chiederti perché nell'esempio precedente la destinazione dei sink di log _Default è impostata su un progetto, anziché sul bucket di log _Default in quel progetto. I motivi principali sono la semplicità e la coerenza.
Quando instradi le voci di log a un progetto, i sink di log nel progetto di destinazione controllano quali voci di log vengono archiviate e dove.
In altre parole, centralizzi la funzionalità di filtro e destinazione. Se vuoi modificare le voci di log archiviate o la loro posizione, devi solo modificare i sink di log in un progetto.
Centralizza l'archiviazione dei log per gli audit log
Puoi archiviare centralmente le voci di log che corrispondono al sink di log _Required. Per archiviare queste voci di log
in modo centralizzato, esegui una delle seguenti operazioni:
Crea sink di log che indirizzano le voci di log corrispondenti al sink di log
_Requireda un bucket di log centralizzato.Configura i sink di log come nei due esempi precedenti, quindi aggiungi un sink di log nel progetto di destinazione che instrada le voci di log corrispondenti al sink di log
_Requireda un bucket di log. Puoi anche modificare i filtri nel sink di log_Default.
Prima di implementare una strategia di questo tipo, consulta le linee guida per i prezzi.
Passaggi successivi
Per aiutarti a instradare e archiviare i dati di Cloud Logging, consulta i seguenti documenti:
Per creare sink per instradare le voci di log verso destinazioni supportate, consulta Instrada i log verso destinazioni supportate.
Per scoprire come creare sink aggregati che possono instradare le voci di log dalle risorse nelle cartelle o nelle organizzazioni, consulta Panoramica dei sink aggregati.
Per scoprire di più sul formato delle voci di log indirizzate e su come i log sono organizzati nelle destinazioni, consulta i seguenti documenti: