SQL-Abfragen für Sicherheitsinformationen

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.

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, 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 Logs werden von Google-Systemen generiert und nicht durch Nutzeraktionen bedingt. Audit-Logs zu Systemereignissen können nicht konfiguriert, ausgeschlossen oder deaktiviert werden.

  • 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 verwenden Sie Ausschlussfilter, um zu verhindern, dass diese 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:

  • 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. 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. Eine Beispielabfrage für dieses Szenario finden Sie unter Hohe API-Nutzung durch einen Nutzer 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.

  • Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Sinks und Aufrufen von Protokollen 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 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.

  • Um die Abfragen in diesem Dokument auf der Seite Loganalysen zu verwenden, führen Sie Folgendes:

    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 Monitoring ist.

    2. 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 Logdatenansicht 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 auf Abfrage ausführen.

Beispielabfragen

Dieser Abschnitt enthält Beispiel-SQL-Abfragen zum Abfragen von Audit-Logs.

Änderungen an den 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

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

Rollen ermitteln, die einem Dienstkonto zugewiesen wurden

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

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

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 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 der ausgeführten Aktionen.
  • Die durchschnittliche Anzahl der Aktionen pro Tag.
  • Die ausgeführten Aktionen.

Nächste Schritte