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.

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

  • Um eine mögliche Rechteausweitung mithilfe der 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:

    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.

  • 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 Loganalysen auf:

      Zu Log Analytics

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

    2. 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: Der Bereich Abfrage wird mit einer Standardabfrage gefüllt, die enthält den Namen der abgefragten Tabelle. 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

    3. Ersetzen Sie TABLE durch den Namen der entsprechenden Tabelle. zu der gewünschten Ansicht hinzu 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 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`
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`
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.

In einem Dienstkonto gewährte 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`,
  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 des Hauptkontos übernehmen. 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`
    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