SQL-Abfragen für Sicherheitsinformationen

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 zusammenfassen und analysieren. Diese 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: 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 Logs standardmäßig deaktiviert (mit Ausnahme von BigQuery).

  • Audit-Logs zu Systemereignissen: Audit-Logs zu Systemereignissen enthalten Logeinträge fürGoogle 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, aber Sie können Ausschlussfilter verwenden, um zu verhindern, dass diese Logs in Logging gespeichert werden.

Weitere Informationen zu Audit-Logs finden Sie unter Audit-Logs – Übersicht. Eine Liste der Dienste, die in Audit-Logs integriert 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:

  • Mit Audit-Logs zur Administratoraktivität können Sie potenzielle Rechteausweitungen durch Identity and Access Management (IAM) oder das Umgehen von Sicherheitsmaßnahmen durch Deaktivieren der Protokollierung erkennen. Eine Beispielanfrage, mit der dieses Szenario ermittelt wird, finden Sie unter Änderungen an den Logging-Einstellungen.

  • Mit den Audit-Logs für den Datenzugriff können Sie potenziellen Missbrauch von APIs oder Daten, die in Diensten wie Cloud Storage oder BigQuery gehostet werden, erkennen. Eine Beispielabfrage, mit der dieses Szenario ermittelt wird, finden Sie unter Hohe API-Nutzung durch ein Hauptkonto ermitteln.

  • Wenn Sie herausfinden möchten, wie oft und von welchen Nutzern auf Daten zugegriffen wird, fragen Sie alle Audit-Logs ab. Eine Beispielabfrage, mit der dieses Szenario ermittelt wird, 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 Audit-Logs generiert werden.

  • Sie benötigen Zugriff auf eine Ansicht des Log-Buckets, an den die Audit-Logs weitergeleitet werden. Der Log-Bucket muss aktualisiert werden, damit Loganalysen verwendet werden können. Informationen zum Erstellen eines Log-Buckets, der 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 zum Aufrufen von Logs benötigen:

    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 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 Dokumentation zur Zugriffssteuerung mit IAM für Logging.

  • So verwenden Sie die Abfragen in diesem Dokument auf der Seite Loganalysen:

    1. Rufen Sie in der Google Cloud Console die Seite Log Analytics auf:

      Zu Log Analytics

      Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.

    2. Ermitteln Sie den Tabellennamen für die Logansicht, die Sie abfragen möchten.

      Um diesen Namen zu ermitteln, rufen Sie die Liste Logansichten auf, suchen Sie die Logansicht und wählen Sie dann Abfrage aus. Im Bereich Abfrage wird eine Standardabfrage angezeigt, die den Tabellennamen der abgefragten Logansicht 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.

    3. 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.

    4. Fügen Sie die Abfrage in den Bereich Abfrage ein und klicken Sie dann auf Abfrage ausführen.

Beispielabfragen

In diesem Abschnitt finden Sie Beispiel-SQL-Abfragen zum Abfragen von Audit-Logs.

Änderungen an den Logging-Einstellungen

Wenn Sie herausfinden möchten, wann Audit-Logs deaktiviert wurden oder wann Änderungen an den Standard-Logging-Einstellungen vorgenommen wurden, fragen Sie die Audit-Logs zur Administratoraktivität ab:

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, fragen Sie alle Audit-Logs ab:

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

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.

Rollen erkennen, die einem Dienstkonto zugewiesen wurden

So ermitteln Sie, ob ein Identitätswechsel für ein Dienstkonto stattgefunden hat oder welche Rollen für Dienstkonten gewährt 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_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

Die vorherige Abfrage sucht nach Audit-Logs, in denen Rollen einem Hauptkonto für ein Dienstkonto zugewiesen werden. Mit der Rolle „Ersteller von Dienstkonto-Tokens“ kann das Hauptkonto die Identität des Dienstkontos übernehmen. In der Abfrage wird auch ein Zeitraum von sieben Tagen angegeben und genehmigte Empfänger (%@example.com) werden ausgeschlossen.

Hohe API-Nutzung durch ein Hauptkonto ermitteln

So ermitteln Sie eine ungewöhnlich hohe API-Nutzung durch einen Prinzipal:

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 Prinzipal principal_email wird mit 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 gleitende Durchschnitt plus das Dreifache der Standardabweichung, werden in der Abfrage die folgenden Informationen angezeigt:

  • Ein Zähler für die ausgeführten Aktionen.
  • Die berechnete durchschnittliche Anzahl der Aktionen pro Tag.
  • Die konkreten Aktionen, die ausgeführt wurden.

Nächste Schritte