In diesem Dokument wird beschrieben, wie Sie Audit-Logs von Cloud Logging mithilfe von BigQuery-Standard-SQL-Abfragen in der Loganalysen. Mit SQL-Abfragen können Sie Ihre Audit-Logs, die Informationen über Verwaltungsaktivitäten und in Ihren Google Cloud-Ressourcen.
Informationen zu Audit-Logs
Es gibt vier Arten von Audit-Logs, die von Google Cloud geschrieben werden können Dienste:
Audit-Logs zur Administratoraktivität: In Audit-Logs zur Administratoraktivität werden API-Aufrufe oder andere Aktionen, die die Konfiguration oder Metadaten von Ressourcen ändern. Diese Logs werden immer geschrieben. können Sie sie nicht konfigurieren, ausschließen oder deaktivieren.
Audit-Logs zum Datenzugriff: In Audit-Logs zum Datenzugriff werden API-Aufrufe aufgezeichnet, Lesen der Konfiguration oder Metadaten von Ressourcen und der nutzergesteuerten API Aufrufe zum Erstellen, Ändern oder Lesen der vom Nutzer bereitgestellten Ressourcendaten. Weil 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, durch die die Konfiguration von Ressourcen geändert wird. Diese Protokolle werden von Google-Systemen generiert. Diese Protokolle werden nicht vom Nutzer generiert, Aktionen. Sie können Audit-Logs zu Systemereignissen nicht konfigurieren, ausschließen oder deaktivieren.
Audit-Logs zu Richtlinienverstößen: Audit-Logs zu Richtlinienverstößen werden erfasst, wenn ein Google Cloud-Dienst einem Nutzer oder einem Dienstkonto den Zugriff verweigert. Sicherheitsrichtlinien verstoßen. Diese Logs können nicht deaktiviert werden, aber Sie können verhindern Sie mithilfe von Ausschlussfiltern, dass die Protokolle in Logging:
Weitere Informationen zu Audit-Logs finden Sie in der Übersicht zu Audit-Logs. Eine Liste der in Audit-Logs integrierten 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:
Um eine mögliche Rechteausweitung zu identifizieren, Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) oder Umgehung von Abwehrmaßnahmen durch Deaktivieren Logging: Verwenden Sie Audit-Logs zur Administratoraktivität. Für eine Beispielabfrage der dieses Szenario identifiziert, siehe Änderungen an Logging-Einstellungen
zur Identifizierung eines potenziellen Missbrauchs von APIs oder Daten, die in Diensten wie Cloud Storage oder BigQuery verwenden, verwenden Sie Audit-Logs zum Datenzugriff. Für eine Beispielabfrage, die dieses Szenario identifiziert, siehe Hohe API-Nutzung durch ein Hauptkonto ermitteln
Um zu ermitteln, wie häufig und von welchen Benutzern auf Daten zugegriffen wird, fragen Sie nach alle Audit-Logs. Eine Beispielabfrage für dieses Szenario finden Sie unter Ermittle die häufigsten Aktionen, die im letzten Monat ausgeführt wurden.
Hinweise
Achten Sie darauf, dass Sie ein Google Cloud-Projekt, einen Ordner oder eine Organisation haben, die Audit-Logs.
Achten Sie darauf, dass Sie Zugriff auf eine Ansicht des Log-Buckets haben, den das Audit-Log enthält an die weitergeleitet wird. Der Log-Bucket muss aktualisiert werden, um Loganalysen zu verwenden. Für Informationen zum Erstellen eines Log-Buckets, der für die Verwendung aktualisiert wird Loganalysen finden Sie unter Log-Buckets konfigurieren.
-
Um die Berechtigungen zu erhalten, die Sie zum Erstellen von Senken und Aufrufen von Logs benötigen, bitten Sie Ihren Administrator, Ihnen folgenden IAM-Rollen:
-
Autor von Logkonfigurationen (
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 verwalten.
Sie können 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 Siehe Logging Zugriffssteuerung mit IAM Dokumentation.
-
Autor von Logkonfigurationen (
Um die Abfragen in diesem Dokument auf der Seite Loganalysen zu verwenden, führen Sie Folgendes:
-
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.
Identifizieren Sie den Tabellennamen für die Logansicht, die Sie abfragen möchten.
Rufen Sie die Liste Logansichten auf, um diesen Namen zu ermitteln. die Logansicht aus und wählen Sie Abfrage: Der Bereich Abfrage wird mit einer Standardabfrage gefüllt, die enthält den Tabellennamen der abgefragten Logansicht. Der Tabellenname enthält die Format
project_ID.region.bucket_ID.view_ID
.Weitere Informationen zum Zugriff auf die Standardabfrage finden Sie unter Logansicht abfragen
Ersetzen Sie TABLE_NAME_OF_LOG_VIEW durch den Tabellennamen für die Logansicht. 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
Um zu ermitteln, wann Audit-Logs deaktiviert sind oder Änderungen an der Standardeinstellung vorgenommen werden Logging-Einstellungen können Sie die Audit-Logs zur Administratoraktivität 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"
Ermitteln der häufigsten Aktionen, die im letzten Monat ausgeführt wurden
Um zu ermitteln, welche Aktionen in den letzten 30 Tagen am häufigsten ausgeführt wurden, alle Audit-Logs abfragen:
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 Folgendes zurückgegeben:
die 100 am häufigsten ausgeführten Aktionen mit Informationen zum method_name
,
service_name
, Ressourcentyp und ein Zähler der ausgeführten Aktionen.
Einem Dienstkonto zugewiesene Rollen erkennen
So können Sie die Identitätsübernahme von Dienstkonten oder die Rollen, die Dienstkonten zugewiesen wurden, identifizieren: Audit-Logs zur Administratoraktivität 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
Bei der vorherigen Abfrage wird nach Audit-Logs gesucht, die Rollen erfassen, die einem
Hauptkonto eines Dienstkontos. Mit der Rolle „Ersteller von Dienstkonto-Tokens“ kann das
die Identität des Dienstkontos. Die Abfrage gibt auch eine Zeit an,
innerhalb der letzten sieben Tage ein und schließt zugelassene 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_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 das angegebene Hauptkonto principal_email
berechnet die Abfrage den Durchschnitt
Anzahl der API-Aufrufe pro Tag und die Standardabweichung dieser API-Aufrufe.
Wenn die durchschnittliche Anzahl von API-Aufrufen größer ist als der gleitende Durchschnitt plus
dreimal die Standardabweichung, dann zeigt die Abfrage Folgendes an:
Informationen:
- 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 hier: finden Sie im Repository Community Security Analytics.
Weitere Informationen zum Aktivieren, Aggregieren und Analysieren Ihrer Logs mithilfe der Loganalysen, siehe Sicherheitsloganalysen in Google Cloud