In diesem Dokument wird beschrieben, wie Sie Cloud Logging-Audit-Logs mithilfe von BigQuery-Standard-SQL auf der Seite Loganalysen analysieren. Mit SQL-Abfragen können Sie Ihre Audit-Logs zusammenfassen und analysieren. Sie enthalten Informationen zu Verwaltungsaktivitäten und Zugriffen in Ihren 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: In Audit-Logs zum Datenzugriff werden API-Aufrufe, die die Konfiguration oder Metadaten von Ressourcen lesen, sowie nutzergesteuerte API-Aufrufe zum Erstellen, Ändern oder Lesen der von Nutzern bereitgestellten Ressourcendaten aufgezeichnet. Da der Datenzugriff 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, die die Konfiguration von Ressourcen ändern. 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 abgelehnten Richtlinien 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. Sie können jedoch 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 Dienste, die in Audit-Logs eingebunden sind, finden Sie unter Google Cloud-Dienste mit Audit-Logs.
Mithilfe von Audit-Logs Richtlinienverstöße oder verdächtige Aktivitäten ermitteln
Mithilfe von Audit-Logs können Sie Richtlinienverstöße oder verdächtige Aktivitäten ermitteln:
Verwenden Sie Audit-Logs zur Administratoraktivität, um eine potenzielle Rechteausweitung mithilfe von Identity and Access Management (IAM) oder das Umgehen von Abwehrmaßnahmen durch Deaktivieren von Logging zu identifizieren. Eine Beispielabfrage, die dieses Szenario identifiziert, finden Sie unter Änderungen an den Logging-Einstellungen.
Verwenden Sie Audit-Logs zum Datenzugriff, um den potenziellen Missbrauch von APIs oder Daten zu identifizieren, die in Diensten wie Cloud Storage oder BigQuery gehostet werden. Eine Beispielabfrage, die dieses Szenario identifiziert, finden Sie unter Hohe API-Nutzung durch ein Hauptkonto identifizieren.
Fragen Sie alle Audit-Logs ab, um zu ermitteln, wie oft und von welchen Nutzern auf Daten zugegriffen wird. Eine Beispielabfrage, die dieses Szenario identifiziert, finden Sie unter Die häufigsten Aktionen des letzten Monats ermitteln.
Hinweise
Achten Sie darauf, dass Sie ein Google Cloud-Projekt, einen Ordner oder eine Organisation haben, die Audit-Logs generieren.
Achten Sie darauf, dass Sie Zugriff auf eine Ansicht des Log-Buckets haben, an den die Audit-Logs weitergeleitet werden. Der Log-Bucket muss aktualisiert werden, um Log Analytics verwenden zu können. Informationen zum Erstellen eines Log-Buckets, für den ein Upgrade für die Verwendung von Loganalysen durchgeführt 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 -
Loganzeige (
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 aufrufen möchten, benötigen Sie möglicherweise separate Rollen oder Berechtigungen. Informationen zum Festlegen von IAM-Rollen finden Sie in der Logging-Dokumentation zur Zugriffssteuerung mit IAM.
-
Autor von Logkonfigurationen (
So verwenden Sie die Abfragen in diesem Dokument auf der Seite Loganalysen:
-
Wählen Sie im Navigationsbereich der Google Cloud Console Logging und dann Loganalysen aus:
Ermitteln Sie den Tabellennamen für eine Logansicht, indem Sie die Standardabfrage ausführen:
Suchen Sie in der Liste Logansichten nach der Logansicht und wählen Sie dann Abfrage aus. Im Bereich Abfrage wird eine Standardabfrage mit dem Namen der abgefragten Tabelle angezeigt. 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. 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
Fragen Sie die Audit-Logs zur Administratoraktivität ab, um festzustellen, wann Audit-Logs deaktiviert sind oder wann Änderungen an den Standard-Logging-Einstellungen 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"
Die häufigsten Aktionen des letzten Monats ermitteln
Fragen Sie alle Audit-Logs ab, um zu ermitteln, welche Aktionen 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
, Ressourcentyp und einem Zähler der ausgeführten Aktionen zurück.
Rollen erkennen, die für ein Dienstkonto gewährt wurden
Fragen Sie die Audit-Logs zur Administratoraktivität ab, um die Identitätsübernahme von Dienstkonten oder Rollen zu identifizieren, die Dienstkonten zugewiesen wurden:
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
Die vorherige Abfrage sucht nach Audit-Logs, die die Rollen erfassen, die einem Hauptkonto in einem Dienstkonto gewährt wurden. Mit der Rolle „Ersteller von Dienstkonto-Tokens“ kann das Hauptkonto die Identität des Dienstkontos übernehmen. Außerdem gibt die Abfrage einen Zeitraum der letzten sieben Tage an und schließt genehmigte Empfänger von Fördermitteln (%@example.com
) aus.
Hohe API-Nutzung durch ein Hauptkonto identifizieren
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.
Ist die durchschnittliche Anzahl von API-Aufrufen größer als der laufende Durchschnitt plus das Dreifache der Standardabweichung, werden in der Abfrage die folgenden Informationen angezeigt:
- Zähler der ausgeführten Aktionen.
- Der berechnete Durchschnitt der pro Tag ausgeführten Aktionen.
- 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 Community Security Analytics.
Informationen zum Aktivieren, Aggregieren und Analysieren Ihrer Logs mit Log Analytics finden Sie unter Sicherheitsloganalysen in Google Cloud.