In diesem Dokument wird beschrieben, wie Sie Cloud Logging-Audit-Logs mithilfe von BigQuery-Standard-SQL-Abfragen auf der Seite Log Analytics analysieren. Mit SQL-Abfragen können Sie Ihre Audit-Logs zusammenfassen und analysieren. Diese enthalten Informationen zu Verwaltungsaktivitäten und Zugriffen auf Ihre Google Cloud-Ressourcen.
Audit-Logs
Es gibt vier Arten von Audit-Logs, die von Google Cloud-Diensten geschrieben werden können:
Audit-Logs zur Administratoraktivität: In Audit-Logs zur Administratoraktivität werden API-Aufrufe oder andere Aktionen aufgezeichnet, die die Konfiguration oder Metadaten von Ressourcen ändern. Diese Logs werden immer geschrieben. Sie können sie nicht konfigurieren, ausschließen oder deaktivieren.
Audit-Logs zum Datenzugriff: Audit-Logs zum Datenzugriff erfassen API-Aufrufe, die die Konfiguration oder Metadaten von Ressourcen lesen, sowie nutzergesteuerte API-Aufrufe, die von Nutzern bereitgestellte Ressourcendaten erstellen, ändern oder lesen. Da der Zugriff auf Daten ein häufiger API-Vorgang ist, sind diese Protokolle standardmäßig deaktiviert (außer für BigQuery).
Audit-Logs zu Systemereignissen: Audit-Logs zu Systemereignissen enthalten Logeinträge für Google Cloud-Aktionen, die die Konfiguration von Ressourcen ändern. Diese Logs werden von Google-Systemen generiert und nicht durch Nutzeraktionen. Audit-Logs zu Systemereignissen können nicht konfiguriert, ausgeschlossen oder deaktiviert werden.
Audit-Logs zu Richtlinienverstößen: Audit-Logs zu Richtlinienverstößen werden aufgezeichnet, wenn ein Google Cloud-Dienst den Zugriff auf einen Nutzer oder ein Dienstkonto aufgrund eines Verstoßes gegen eine Sicherheitsrichtlinie verweigert. Diese Logs können nicht deaktiviert werden. Sie können jedoch Ausschlussfilter verwenden, um zu verhindern, dass diese Logs in Cloud Logging gespeichert werden.
Weitere Informationen zu Audit-Logs finden Sie unter Audit-Logs – Übersicht. Eine Liste der Dienste, die mit Audit-Logs verknüpft sind, finden Sie unter Google Cloud-Dienste mit Audit-Logs.
Audit-Logs verwenden, um Richtlinienverstöße oder verdächtige Aktivitäten zu erkennen
Mit Audit-Logs können Sie Richtlinienverstöße oder verdächtige Aktivitäten erkennen:
Audit-Logs zu Administratoraktivitäten können verwendet werden, um eine potenzielle Berechtigungseskalierung durch die Verwendung von Identity and Access Management (IAM) oder eine Umgehung der Abwehrmaßnahmen durch das Deaktivieren des Loggings zu erkennen. Eine Beispielabfrage für dieses Szenario finden Sie unter Änderungen an den Logging-Einstellungen.
Mithilfe von Prüfprotokollen für den Datenzugriff können Sie potenziellen Missbrauch von APIs oder Daten identifizieren, die in Diensten wie Cloud Storage oder BigQuery gehostet werden. Eine Beispielabfrage für dieses Szenario finden Sie unter Hohe API-Nutzung durch ein Hauptkonto ermitteln.
Wenn Sie wissen möchten, wie oft und von wem auf Daten zugegriffen wird, rufen Sie alle Audit-Logs ab. Eine Beispielabfrage für dieses Szenario finden Sie unter Häufigste Aktionen im letzten Monat ermitteln.
Hinweise
Sie benötigen ein Google Cloud-Projekt, einen Ordner oder eine Organisation, in dem bzw. der Prüfprotokolle generiert werden.
Sie benötigen Zugriff auf eine Ansicht des Log-Buckets, an den die Audit-Logs weitergeleitet werden. Der Log-Bucket muss für die Verwendung von Log Analytics aktualisiert werden. Informationen zum Erstellen eines Log-Buckets, das für die Verwendung von Log Analytics aktualisiert wurde, finden Sie unter Log-Buckets konfigurieren.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Senken und Aufrufen von Protokollen benötigen:
-
Autor von Log-Konfigurationen (
roles/logging.configWriter
) für Ihr Projekt -
Loganzeige (
roles/logging.viewer
) für Ihr Projekt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Je nachdem, welche Prüfprotokolle Sie aufrufen möchten, benötigen Sie möglicherweise separate Rollen oder Berechtigungen. Informationen zum Festlegen von IAM-Rollen finden Sie in der Dokumentation zur Zugriffssteuerung mit IAM für Logging.
-
Autor von Log-Konfigurationen (
So verwenden Sie die Abfragen in diesem Dokument auf der Seite Log Analytics:
-
Rufen Sie in der Google Cloud Console die Seite Log Analytics auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.
Geben Sie den Tabellennamen für die Protokollansicht an, die Sie abfragen möchten.
Um diesen Namen zu ermitteln, rufen Sie die Liste Logansichten auf, suchen Sie die gewünschte Ansicht und wählen Sie Abfragen aus. Der Bereich Abfrage enthält eine Standardabfrage, die den Tabellennamen der abgefragten Protokollansicht enthält. Der Tabellenname hat das Format
project_ID.region.bucket_ID.view_ID
.Weitere Informationen zum Zugriff auf die Standardabfrage finden Sie unter Logdatenansicht abfragen.
Ersetzen Sie TABLE_NAME_OF_LOG_VIEW durch den Tabellennamen der Protokollansicht, die Sie abfragen möchten, und kopieren Sie dann die Abfrage.
Fügen Sie die Abfrage in den Bereich Abfrage ein und klicken Sie dann auf Abfrage ausführen.
-
Beispielabfragen
Dieser Abschnitt enthält Beispiel-SQL-Abfragen zum Abfragen von Audit-Logs.
Änderungen an den Logging-Einstellungen
Wenn Sie wissen möchten, wann Audit-Logs deaktiviert werden oder Änderungen an den Standardeinstellungen für die Protokollierung vorgenommen werden, können Sie die Audit-Logs zu Administratoraktivitäten abfragen:
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"
Häufigste Aktionen im letzten Monat ermitteln
Wenn Sie herausfinden möchten, welche Aktionen in den letzten 30 Tagen am häufigsten ausgeführt wurden, führen Sie eine Abfrage auf alle Audit-Logs aus:
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
Bei der vorherigen Abfrage werden alle Audit-Logs der letzten 30 Tage durchsucht und die 100 häufigsten Aktionen mit Informationen zu method_name
, service_name
, dem Ressourcentyp und einem Zähler für die ausgeführten Aktionen zurückgegeben.
Rollen ermitteln, die einem Dienstkonto zugewiesen wurden
Wenn Sie eine Dienstkonto-Identitätsübernahme oder Rollen identifizieren möchten, die Dienstkonten zugewiesen wurden, können Sie die Audit-Logs für Administratoraktivitäten abfragen:
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
Mit der vorherigen Abfrage wird nach Audit-Logs gesucht, in denen Rollen erfasst werden, die einem Hauptkonto in einem Dienstkonto gewährt werden. Mit der Rolle „Ersteller von Dienstkonto-Tokens“ kann das Hauptkonto die Identität des Dienstkontos übernehmen. Außerdem wird ein Zeitraum von sieben Tagen angegeben und genehmigte Begünstigte (%@example.com
) werden ausgeschlossen.
Hohe API-Nutzung durch ein Hauptkonto ermitteln
Wenn Sie eine ungewöhnlich hohe API-Nutzung durch einen Nutzer identifizieren möchten, fragen Sie alle Audit-Logs ab:
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
Für den angegebenen Hauptbevollmächtigten, principal_email
, wird in der Abfrage die durchschnittliche Anzahl der API-Aufrufe pro Tag und die Standardabweichung dieser API-Aufrufe berechnet.
Wenn die durchschnittliche Anzahl der API-Aufrufe größer ist als der laufende Durchschnitt plus dreimal die Standardabweichung, werden in der Abfrage die folgenden Informationen angezeigt:
- Ein Zähler für die ausgeführten Aktionen.
- Die durchschnittliche Anzahl der Aktionen pro Tag.
- Die ausgeführten Aktionen.
Nächste Schritte
Eine Übersicht über Log Analytics finden Sie unter Log Analytics.
Weitere Beispielabfragen finden Sie unter Beispiel-SQL-Abfragen.
Weitere Beispielabfragen, mit denen Sicherheitsinformationen aus Ihren Logs generiert werden, finden Sie im Repository Community Security Analytics.
Informationen zum Aktivieren, Aggregieren und Analysieren von Logs mit Log Analytics finden Sie unter Sicherheitsloganalysen in Google Cloud.