In diesem Dokument wird beschrieben, wie Sie Cloud Logging-Audit-Logs mithilfe von BigQuery-Standard-SQL-Abfragen auf der Seite Loganalysen analysieren. Mit SQL-Abfragen können Sie Ihre Audit-Logs aggregieren und analysieren, die Informationen zu Verwaltungsaktivitäten und Zugriffen in Ihren Google Cloud-Ressourcen enthalten.
Informationen zu Audit-Logs
Google Cloud-Dienste können vier Arten von Audit-Logs schreiben:
Audit-Logs zur Administratoraktivität: In Audit-Logs zur Administratoraktivität werden API-Aufrufe oder andere Aktionen aufgezeichnet, mit denen die Konfiguration oder Metadaten von Ressourcen geändert werden. Diese Logs werden immer geschrieben und können weder konfiguriert, ausgeschlossen noch deaktiviert werden.
Audit-Logs zum Datenzugriff: In Audit-Logs zum Datenzugriff werden API-Aufrufe aufgezeichnet, 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 Logs standardmäßig deaktiviert (außer bei BigQuery).
Audit-Logs zu Systemereignissen: Audit-Logs zu Systemereignissen enthalten Logeinträge für Google Cloud-Aktionen, durch die die Konfiguration von Ressourcen geändert wird. Diese Logs werden von Google-Systemen generiert und nicht durch Nutzeraktionen. Sie können Audit-Logs zu Systemereignissen nicht konfigurieren, ausschließen oder deaktivieren.
Audit-Logs zu Richtlinienverstößen: Audit-Logs zu Richtlinienverstößen werden aufgezeichnet, wenn ein Google Cloud-Dienst einem Nutzer oder einem Dienstkonto aufgrund eines Sicherheitsrichtlinienverstoßes den Zugriff verweigert. Diese Logs können nicht deaktiviert werden, aber Sie können mithilfe von Ausschlussfiltern verhindern, dass diese Logs in Logging gespeichert werden.
Weitere Informationen zu Audit-Logs finden Sie in der Übersicht zu Audit-Logs. Eine Liste der in Audit-Logs eingebundenen Dienste finden Sie unter Google Cloud-Dienste mit Audit-Logs.
Mit Audit-Logs Richtlinienverstöße oder verdächtige Aktivitäten identifizieren
Mithilfe von Audit-Logs können Sie Richtlinienverstöße oder verdächtige Aktivitäten identifizieren:
Verwenden Sie Audit-Logs zur Administratoraktivität, um eine mögliche Rechteausweitung mithilfe von Identity and Access Management (IAM) oder einen Umgehungsprozess durch Deaktivieren von Logging zu ermitteln. Eine Beispielabfrage für dieses Szenario finden Sie unter Änderungen an den Logging-Einstellungen.
Verwenden Sie Audit-Logs zum Datenzugriff, um einen potenziellen Missbrauch von APIs oder Daten zu erkennen, 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 identifizieren.
Fragen Sie alle Audit-Logs ab, um herauszufinden, wie häufig und von welchen Nutzern auf Daten zugegriffen wird. Eine Beispielabfrage für dieses Szenario finden Sie unter Die häufigsten im letzten Monat ausgeführten Aktionen ermitteln.
Hinweise
Achten Sie darauf, dass Sie ein Google Cloud-Projekt, einen Ordner oder eine Organisation haben, die Audit-Logs generieren.
Sie benötigen Zugriff auf eine Ansicht des Log-Buckets, an den die Audit-Logs weitergeleitet werden. Der Log-Bucket muss aktualisiert werden, um Loganalysen zu verwenden. Informationen zum Erstellen eines Log-Buckets, der für die Verwendung von Loganalysen aktualisiert wurde, finden Sie unter Log-Buckets konfigurieren.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Erstellen von Senken und Aufrufen von Logs benötigen:
-
Autor von Logkonfigurationen (
roles/logging.configWriter
) für Ihr Projekt -
Log-Anzeige (
roles/logging.viewer
) für Ihr Projekt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Je nachdem, welche Audit-Logs Sie sich ansehen möchten, benötigen Sie möglicherweise separate Rollen oder Berechtigungen. Informationen zum Festlegen von IAM-Rollen finden Sie in der Dokumentation zu Zugriffssteuerung mit IAM in Logging.
-
Autor von Logkonfigurationen (
So verwenden Sie die Abfragen in diesem Dokument auf der Seite Loganalysen:
-
Rufen Sie in der Google Cloud Console die Seite Loganalysen auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
Ermitteln Sie den Tabellennamen für eine Logansicht, indem Sie die Standardabfrage ausführen:
Suchen Sie in der Liste Logansichten die Logansicht und wählen Sie Abfrage aus. Der Bereich Abfrage wird mit einer Standardabfrage gefüllt, die den Namen der abgefragten Tabelle enthält. Der Tabellenname hat das Format
project_ID.region.bucket_ID.view_ID
.Weitere Informationen zum Zugriff auf die Standardabfrage finden Sie unter Logansicht abfragen.
Ersetzen Sie TABLE durch den Namen der Tabelle, die der Ansicht entspricht, die Sie abfragen möchten, und kopieren Sie dann die Abfrage.
Fügen Sie die Abfrage in den Bereich Abfrage ein und klicken Sie auf Abfrage ausführen.
-
Beispielabfragen
Dieser Abschnitt enthält Beispiel-SQL-Abfragen zum Abfragen von Audit-Logs.
Änderungen an Logging-Einstellungen
Fragen Sie die Audit-Logs zur Administratoraktivität ab, um festzustellen, ob Audit-Logs deaktiviert sind oder Änderungen an den Logging-Standardeinstellungen vorgenommen werden:
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`
WHERE
proto_payload.audit_log.service_name = "logging.googleapis.com"
AND log_id = "cloudaudit.googleapis.com/activity"
Ermitteln der häufigsten Aktionen, die im letzten Monat ausgeführt wurden
Fragen Sie alle Audit-Logs ab, um die Aktionen zu ermitteln, die in den letzten 30 Tagen am häufigsten ausgeführt wurden:
SELECT
proto_payload.audit_log.method_name,
proto_payload.audit_log.service_name,
resource.type,
COUNT(*) AS counter
FROM
`TABLE`
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
Die vorherige Abfrage durchsucht alle Audit-Logs der letzten 30 Tage und gibt die 100 am häufigsten ausgeführten Aktionen mit Informationen zu method_name
, service_name
, dem Ressourcentyp und einem Zähler der ausgeführten Aktionen zurück.
In einem Dienstkonto gewährte Rollen erkennen
Wenn Sie die Identitätsübernahme von Dienstkonten oder die für Dienstkonten zugewiesenen Rollen ermitteln möchten, fragen Sie die Audit-Logs zur Administratoraktivität ab:
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`,
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
Bei der vorherigen Abfrage wird nach Audit-Logs gesucht, die Rollen erfassen, die einem Hauptkonto in einem Dienstkonto zugewiesen werden. Mit der Rolle „Ersteller von Dienstkonto-Tokens“ kann das Hauptkonto die Identität des Dienstkontos übernehmen. Die Abfrage gibt außerdem einen Zeitraum der letzten sieben Tage an und schließt genehmigte Empfänger aus (%@example.com
).
Hohe API-Nutzung durch ein Hauptkonto ermitteln
Fragen Sie alle Audit-Logs ab, um eine ungewöhnlich hohe API-Nutzung durch ein Hauptkonto zu identifizieren:
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`
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 das angegebene Hauptkonto principal_email
berechnet die Abfrage die durchschnittliche Anzahl von API-Aufrufen pro Tag und die Standardabweichung dieser API-Aufrufe.
Wenn die durchschnittliche Anzahl der API-Aufrufe größer als der laufende Durchschnitt plus das Dreifache der Standardabweichung ist, zeigt die Abfrage die folgenden Informationen an:
- Ein Zähler der ausgeführten Aktionen.
- Die berechneten durchschnittlichen Aktionen, die pro Tag ausgeführt wurden.
- Die spezifischen Aktionen, die ausgeführt wurden.
Nächste Schritte
Eine Übersicht über Loganalysen finden Sie unter Loganalysen.
Weitere Beispielabfragen finden Sie unter Beispiel-SQL-Abfragen.
Weitere Beispielabfragen zum Generieren von Sicherheitsinformationen aus Ihren Logs finden Sie im Repository von Community Security Analytics.
Informationen zum Aktivieren, Aggregieren und Analysieren von Logs mithilfe von Loganalysen finden Sie unter Sicherheitsloganalysen in Google Cloud.