Questo documento descrive come analizzare gli audit log di Cloud Logging utilizzando query SQL standard di BigQuery nella pagina Log Analytics. Le query SQL ti consentono di aggregare e analizzare i tuoi audit log, che forniscono informazioni sulle attività amministrative e sugli accessi nelle tue risorse Google Cloud .
Informazioni sugli audit log
Esistono quattro tipi di audit log che possono essere scritti dai Google Cloud servizi:
Audit log per le attività di amministrazione: gli audit log per le attività di amministrazione registrano le chiamate API o altre azioni che modificano la configurazione o i metadati delle risorse. Questi log vengono sempre scritti; non puoi configurarli, escluderli o disabilitarli.
Audit log di accesso ai dati: gli audit log di accesso ai dati registrano le chiamate API che leggono la configurazione o i metadati delle risorse, nonché le chiamate API effettuate dagli utenti che creano, modificano o leggono i dati delle risorse forniti dall'utente. Poiché l'accesso ai dati è un'operazione API frequente, questi log sono disabilitati per impostazione predefinita (tranne per BigQuery).
Audit log degli eventi di sistema: gli audit log degli eventi di sistema contengono voci di log per Google Cloud azioni che modificano la configurazione delle risorse. Questi log vengono generati dai sistemi Google e non dalle azioni dell'utente. Non puoi configurare, escludere o disabilitare gli audit log degli eventi di sistema.
Audit log Policy Denied: gli audit log Policy Denied vengono registrati quando un Google Cloud servizio nega l'accesso a un utente o a un account di servizio a causa di una violazione delle norme di sicurezza. Questi log non possono essere disattivati, ma puoi utilizzare filtri di esclusione per impedire che vengano archiviati in Logging.
Per ulteriori informazioni sui log di controllo, vedi Panoramica dei log di controllo. Per un elenco dei servizi integrati con gli audit log, vedi ServiziGoogle Cloud con audit log.
Utilizzare i log di controllo per identificare violazioni delle norme o attività sospette
Puoi utilizzare i log di controllo per identificare violazioni delle norme o attività sospette:
Per identificare una potenziale escalation dei privilegi utilizzando Identity and Access Management (IAM) o l'elusione della difesa disattivando Logging, utilizza gli audit log delle attività di amministrazione. Per una query di esempio che identifica questo scenario, vedi Modifiche apportate alle impostazioni di logging.
Per identificare un potenziale uso improprio delle API o dei dati ospitati in servizi come Cloud Storage o BigQuery, utilizza i log di controllo dell'accesso ai dati. Per una query di esempio che identifica questo scenario, vedi Identificare l'utilizzo elevato dell'API da parte di un principal.
Per identificare la frequenza di accesso ai dati e gli utenti che vi accedono, esegui una query per tutti i log di controllo. Per una query di esempio che identifica questo scenario, vedi Determinare le azioni più comuni eseguite nell'ultimo mese.
Prima di iniziare
Assicurati di avere un progetto, una cartella o un'organizzazione che generi log di controllo. Google Cloud
Assicurati di avere accesso a una visualizzazione del bucket dei log a cui vengono indirizzati i log di controllo. È necessario eseguire l'upgrade del bucket di log per utilizzare Analisi dei log. Per informazioni su come creare un bucket di log di cui è stato eseguito l'upgrade per utilizzare Analisi dei log, consulta Configurare i bucket di log.
-
Per ottenere le autorizzazioni necessarie per creare sink e visualizzare i log, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Logs Configuration Writer (
roles/logging.configWriter
) sul tuo progetto -
Visualizzatore log (
roles/logging.viewer
) sul tuo progetto
Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
A seconda dei log di controllo che vuoi visualizzare, potrebbero essere necessari ruoli o autorizzazioni separati. Per informazioni sull'impostazione dei ruoli IAM, consulta la documentazione Controllo dell'accesso con IAM di Logging.
-
Logs Configuration Writer (
Per utilizzare le query in questo documento nella pagina Analisi dei log, procedi nel seguente modo:
-
Nella console Google Cloud , vai alla pagina Analisi dei log:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.
Identifica il nome della tabella per la visualizzazione dei log che vuoi interrogare.
Per identificare questo nome, vai all'elenco Visualizzazioni log, individua la visualizzazione log e seleziona Query. Il riquadro Query viene compilato con una query predefinita, che include il nome della tabella della visualizzazione log su cui viene eseguita la query. Il nome della tabella ha il formato
project_ID.region.bucket_ID.view_ID
.Per saperne di più su come accedere alla query predefinita, consulta Eseguire query su una visualizzazione di log.
Sostituisci TABLE_NAME_OF_LOG_VIEW con il nome della tabella per la visualizzazione dei log su cui vuoi eseguire la query, poi copia la query.
Incolla la query nel riquadro Query, quindi fai clic su Esegui query.
-
Query di esempio
Questa sezione fornisce query SQL di esempio per interrogare gli audit log.
Modifiche apportate alle impostazioni di logging
Per identificare quando gli audit log sono disabilitati o quando vengono apportate modifiche alle impostazioni di logging predefinite, esegui una query sugli audit log delle attività di amministrazione:
SELECT
receive_timestamp, timestamp AS eventTimestamp,
proto_payload.audit_log.request_metadata.caller_ip,
proto_payload.audit_log.authentication_info.principal_email,
proto_payload.audit_log.resource_name,
proto_payload.audit_log.method_name
FROM
`TABLE_NAME_OF_LOG_VIEW`
WHERE
proto_payload.audit_log.service_name = "logging.googleapis.com"
AND log_id = "cloudaudit.googleapis.com/activity"
Determinare le azioni più comuni eseguite nell'ultimo mese
Per identificare le azioni eseguite più di frequente negli ultimi 30 giorni, interroga tutti i log di controllo:
SELECT
proto_payload.audit_log.method_name,
proto_payload.audit_log.service_name,
resource.type,
COUNT(*) AS counter
FROM
`TABLE_NAME_OF_LOG_VIEW`
WHERE
timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND log_id="cloudaudit.googleapis.com/data_access"
GROUP BY
proto_payload.audit_log.method_name,
proto_payload.audit_log.service_name,
resource.type
ORDER BY
counter DESC
LIMIT 100
La query precedente esegue la ricerca in tutti gli audit log degli ultimi 30 giorni e restituisce
le 100 azioni più eseguite con informazioni su method_name
,
service_name
, tipo di risorsa e un contatore delle azioni eseguite.
Rilevare i ruoli concessi a un account di servizio
Per identificare la simulazione dell'identità del service account o i ruoli concessi agli account di servizio, interroga i log di controllo dell'attività di amministrazione:
SELECT
timestamp,
proto_payload.audit_log.authentication_info.principal_email as grantor,
JSON_VALUE(bindingDelta.member) as grantee,
JSON_VALUE(bindingDelta.role) as role,
proto_payload.audit_log.resource_name,
proto_payload.audit_log.method_name
FROM
`TABLE_NAME_OF_LOG_VIEW`,
UNNEST(JSON_QUERY_ARRAY(proto_payload.audit_log.service_data.policyDelta.bindingDeltas)) AS bindingDelta
WHERE
timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND log_id = "cloudaudit.googleapis.com/activity"
AND (
(resource.type = "service_account"
AND proto_payload.audit_log.method_name LIKE "google.iam.admin.%.SetIAMPolicy")
OR
(resource.type IN ("project", "folder", "organization")
AND proto_payload.audit_log.method_name = "SetIamPolicy"
AND JSON_VALUE(bindingDelta.role) LIKE "roles/iam.serviceAccount%")
)
AND JSON_VALUE(bindingDelta.action) = "ADD"
-- Principal (grantee) exclusions
AND JSON_VALUE(bindingDelta.member) NOT LIKE "%@example.com"
ORDER BY
timestamp DESC
La query precedente cerca i log di controllo che acquisiscono i ruoli concessi a un
principal su unaccount di serviziot. Il ruolo Creatore token service account consente al
principal di rappresentare ilaccount di serviziot. La query specifica anche un intervallo di tempo
degli ultimi sette giorni ed esclude i beneficiari approvati (%@example.com
).
Identificare un utilizzo elevato dell'API da parte di un principal
Per identificare un utilizzo insolitamente elevato dell'API da parte di un principal, esegui una query su tutti i log di controllo:
SELECT
*
FROM (
SELECT
*,
AVG(counter) OVER (
PARTITION BY principal_email
ORDER BY day
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS avg,
STDDEV(counter) OVER (
PARTITION BY principal_email
ORDER BY day
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS stddev,
COUNT(*) OVER (
PARTITION BY principal_email
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS numSamples
FROM (
SELECT
proto_payload.audit_log.authentication_info.principal_email,
EXTRACT(DATE FROM timestamp) AS day,
ARRAY_AGG(DISTINCT proto_payload.audit_log.method_name IGNORE NULLS) AS actions,
COUNT(*) AS counter
FROM `TABLE_NAME_OF_LOG_VIEW`
WHERE
timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 60 DAY)
AND proto_payload.audit_log.authentication_info.principal_email IS NOT NULL
AND proto_payload.audit_log.method_name NOT LIKE "storage.%.get"
AND proto_payload.audit_log.method_name NOT LIKE "v1.compute.%.list"
AND proto_payload.audit_log.method_name NOT LIKE "beta.compute.%.list"
GROUP BY
proto_payload.audit_log.authentication_info.principal_email,
day
)
)
WHERE
counter > avg + 3 * stddev
AND day >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
ORDER BY
counter DESC
Per l'entità specificata, principal_email
, la query calcola il numero medio di chiamate API al giorno e la deviazione standard di queste chiamate API.
Quando il numero medio di chiamate API è superiore alla media corrente più
tre volte la deviazione standard, la query mostra le seguenti
informazioni:
- Un contatore delle azioni eseguite.
- La media calcolata delle azioni eseguite al giorno.
- Le azioni specifiche che sono state eseguite.
Passaggi successivi
Per una panoramica di Analisi dei log, consulta Analisi dei log.
Per altre query di esempio, vedi Query SQL di esempio.
Per ulteriori query di esempio utilizzate per generare informazioni sulla sicurezza dai log, consulta il repository Community Security Analytics.
Per scoprire come abilitare, aggregare e analizzare i log utilizzando Analisi dei log, consulta Analisi dei log di sicurezza in Google Cloud.