Questo documento descrive come analizzare gli audit log di Cloud Logging utilizzando Query SQL standard di BigQuery nel pagina Analisi dei log. Le query SQL consentono di aggregare e analizzare di audit log, che forniscono informazioni sulle attività amministrative e alle tue risorse Google Cloud.
Informazioni sugli audit log
Google Cloud può scrivere in quattro tipi di audit log Google Cloud:
Audit log delle attività di amministrazione: gli audit log delle attività di amministrazione registrano le chiamate API o altre azioni che modificano la configurazione o i metadati delle risorse. Questi i log vengono sempre scritti; non puoi configurarle, escluderle o disabilitarle.
Audit log di accesso ai dati: questi audit log registrano le chiamate API che lettura della configurazione o dei metadati delle risorse, nonché dell'API basata sugli utenti che creano, modificano o leggono i dati delle risorse forniti dall'utente. Poiché un'operazione API frequente, questi log è disabilitata per impostazione predefinita (tranne che per BigQuery).
Audit log degli eventi di sistema: gli audit log degli eventi di sistema contengono le voci di log per Azioni di Google Cloud che modificano la configurazione delle risorse. Questi i log vengono generati dai sistemi Google; questi log non sono generati dall'utente azioni. Non puoi configurare, escludere o disabilitare gli audit log degli eventi di sistema.
Audit log relativi ai criteri negati: gli audit log relativi ai criteri negati vengono registrati quando un servizio Google Cloud 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 disabilitati, ma puoi utilizzare i filtri di esclusione per impedire che questi log vengano archiviati Logging.
Per saperne di più sugli audit log, consulta Panoramica dei log di controllo. Per un elenco dei servizi integrati con gli audit log, consulta Servizi Google 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:
a identificare la potenziale escalation dei privilegi utilizzando Identity and Access Management (IAM) o evasione della difesa tramite la disattivazione Logging, utilizza gli audit log per le attività di amministrazione. Per una query di esempio che identifica questo scenario, consulta Modifiche apportate alle impostazioni di Logging.
Per identificare il potenziale uso improprio delle API o i dati ospitati in servizi come Cloud Storage o BigQuery, utilizza gli audit log di accesso ai dati. Per una query di esempio che identifica questo scenario, consulta Identifica un utilizzo elevato dell'API da parte di un'entità.
Per identificare la frequenza di accesso ai dati e da quali utenti, esegui una query tutti gli audit log. Per un esempio di query che identifica questo scenario, consulta Determinare le azioni più comuni eseguite nell'ultimo mese.
Prima di iniziare
Assicurati di avere un progetto, una cartella o un'organizzazione Google Cloud che genera e gli audit log.
Assicurati di avere accesso a una vista sul bucket di log che gli audit log vengono indirizzati. È necessario eseguire l'upgrade del bucket di log per utilizzare Analisi dei log. Per informazioni su come creare un bucket di log di cui viene 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 seguenti ruoli IAM:
-
Writer configurazione log (
roles/logging.configWriter
) del tuo progetto -
Visualizzatore log (
roles/logging.viewer
) del tuo progetto
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.
A seconda degli audit log che vuoi visualizzare, potrebbe essere necessario ruoli o autorizzazioni. Per informazioni sull'impostazione dei ruoli IAM, consulta Controllo dell'accesso con IAM in Logging. documentazione.
-
Writer configurazione log (
Per utilizzare le query in questo documento della pagina Analisi dei log, esegui la seguenti:
-
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 vista log su cui vuoi eseguire la query.
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 del log oggetto della query. Il nome della tabella contiene formato
project_ID.region.bucket_ID.view_ID
.Per ulteriori informazioni su come accedere alla query predefinita, vedi Eseguire una query su una vista log.
Sostituisci TABLE_NAME_OF_LOG_VIEW con il nome della tabella per la visualizzazione del log su cui vuoi eseguire la query, poi copiala.
Incolla la query nel riquadro Query, quindi fai clic su Esegui query.
-
Query di esempio
Questa sezione fornisce query SQL di esempio per l'esecuzione di query sugli audit log.
Modifiche apportate alle impostazioni di logging
Per identificare quando gli audit log sono disabilitati o quando vengono apportate modifiche ai valori predefiniti Impostazioni di logging, esegui query sugli audit log dell'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: esegui query su tutti gli audit log:
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 cerca in tutti i log di controllo degli ultimi 30 giorni e restituisce
le 100 azioni più eseguite con informazioni su method_name
service_name
, il tipo di risorsa e un contatore delle azioni eseguite.
Rileva i ruoli concessi a un account di servizio
Per identificare l'impersonificazione degli account di servizio o i ruoli concessi agli account di servizio, esegui una query sugli audit log delle 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 gli audit log che acquisiscono i ruoli concessi a un
su un account di servizio. Il ruolo Creatore token account di servizio consente
l'entità rappresenta l'account di servizio. La query specifica anche
degli ultimi sette giorni ed esclude i beneficiari approvati (%@example.com
).
Identifica l'utilizzo elevato di API da parte di un'entità
Per identificare l'utilizzo insolitamente elevato dell'API da parte di un'entità, esegui una query su tutti gli audit log:
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 la media
di chiamate API al giorno e la deviazione standard di queste chiamate.
Quando il numero medio di chiamate API è superiore alla media corrente più
tre volte la deviazione standard, la query mostra quanto segue:
informazioni:
- Un contatore delle azioni eseguite.
- La media calcolata delle azioni eseguite al giorno.
- Le azioni specifiche eseguite.
Passaggi successivi
Per una panoramica di Analisi dei log, consulta Analisi dei log.
Per altri esempi di query, vedi Esempi di query SQL.
Per altre query di esempio utilizzate per generare insight 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.