Ereignisfilter für Cloud-Audit-Logs bestimmen

Ein Eventarc-Trigger deklariert Ihr Interesse an einem bestimmten Ereignis oder einer Reihe von Ereignissen. So können Sie bestimmte Ereignisse erfassen und auf sie reagieren. Eventarc-Trigger mit type=google.cloud.audit.log.v1.written senden Anfragen an ein Ziel, wenn ein Audit-Log erstellt wird, das den Filterkriterien des Triggers entspricht. Es werden Abgleichungen für folgende Werte im Audit-Logeintrag vorgenommen:

  • serviceName: Dienst, der das Audit-Log geschrieben hat
  • methodName: Zu prüfender Vorgang
  • resourceName: Zu prüfende Ressource

Eine Liste der Google Cloud-Dienste, die Audit-Logs bereitstellen, finden Sie unter Google Cloud-Dienste mit Audit-Logs. Sie können auch die Ereignisfilterwerte abrufen, die für den Ereignistyp google.cloud.audit.log.v1.written gelten.

Ereignisfilter identifizieren

Um die genauen Ereignisfilter zu identifizieren, die zum Erstellen eines Triggers erforderlich sind, generieren Sie das Ereignis, das Sie erfassen möchten, und rufen Sie dann den entsprechenden Cloud-Audit-Log-Eintrag auf. Beachten Sie, dass Daten aus einem Logeintrag auf mehrere Einträge verteilt werden können.

  1. Achten Sie darauf, dass die Audit-Log-Typen zum Datenzugriff für Ihren Dienst aktiviert sind.

    Zu den Audit-Logs

    Beachten Sie, dass alle Dienste, bei denen die Prüfung standardmäßig aktiviert ist, nicht aufgeführt sind.

    1. Wählen Sie auf der Seite Audit-Logs in der Haupttabelle einen Google Cloud-Dienst aus.

    2. Aktivieren Sie auf dem Tab Logtyp die Kästchen Lesen durch Administrator, Daten lesen und Daten schreiben. Klicken Sie anschließend auf Speichern.

  2. Führen Sie den Vorgang aus, für den Sie einen Ereignisfilter erstellen und einen Audit-Logeintrag generieren möchten. Speichern Sie beispielsweise eine Datei in einem Cloud Storage-Bucket.

  3. Rufen Sie in der Google Cloud Console Log-Explorer auf.

    Zum Log-Explorer

  4. Erstellen Sie im Bereich Query Builder eine Abfrage und führen Sie eine Abfrage aus, um die Logeinträge zu filtern und die Ergebnisse abzurufen. Beispiel:

    resource.type="gcs_bucket" resource.labels.bucket_name="eventarc-bucket"
    

    Weitere Informationen zum Erstellen von Abfragen zum Abrufen und Optimieren von Logs finden Sie unter Abfragen mit der Logging-Abfragesprache erstellen.

  5. Um alle Details zu einem Logeintrag aufzurufen, klicken Sie auf den Erweiterungspfeil (▸) am Anfang des Eintrags.

    Im Feld protoPayload wird ein Audit-Log-Eintrag von anderen Logeinträgen unterschieden. Im folgenden Beispiel werden einige Teile des Logeintrags weggelassen und bestimmte Felder hervorgehoben:

    {
       protoPayload:{
          @type:"type.googleapis.com/google.cloud.audit.AuditLog",
          status:{},
          authenticationInfo:{},
          requestMetadata:{},
          serviceName:"storage.googleapis.com",
          methodName:"storage.objects.create",
          authorizationInfo:[],
          resourceName:"projects/_/buckets/eventarc-bucket/objects/random.txt",
          resourceLocation:{}
       },
       insertId:"il9evleafpdk",
       resource:{
          type:"gcs_bucket",
          labels:{
             project_id:"cloud-run-test",
             location:"us-central1",
             bucket_name:"eventarc-bucket"
          }
       },
       timestamp:"2021-03-05T15:55:20.754688805Z",
       severity:"INFO",
       logName:"projects/cloud-run-test/logs/cloudaudit.googleapis.com%2Fdata_access",
       receiveTimestamp:"2021-03-05T15:55:20.884984611Z"
    }

    • Mit den folgenden Informationen können Sie den Inhalt dieses Audit-Log-Eintrags prüfen:

      • Das Feld protoPayload.@type ist type.googleapis.com/google.cloud.audit.AuditLog.

      • Das Feld logName enthält die Domain cloudaudit.googleapis.com.

    • Das Feld protoPayload.serviceName ist der Dienst, der das Audit-Log geschrieben hat.

    • Das Feld protoPayload.methodName ist der zu prüfende Vorgang.

    • Das Feld protoPayload.resourceName ist die zu prüfende Ressource.

    Weitere Informationen zum Suchen von Informationen in einem Audit-Log-Eintrag finden Sie unter Audit-Logs verstehen.

Ereignisfilterwerte abrufen

Mit dem Befehl gcloud eventarc audit-logs-provider können Sie serviceName- und methodName-Werte für den Ereignistyp google.cloud.audit.log.v1.written untersuchen und auflisten.

Führen Sie den folgenden Befehl aus, um Dienstnamen aufzulisten:

gcloud eventarc audit-logs-provider service-names list

Dadurch werden alle serviceName-Attributwerte für den Ereignistyp google.cloud.audit.log.v1.written zurückgegeben.

Führen Sie den folgenden Befehl aus, um Methodennamen für einen bestimmten Dienst aufzulisten:

gcloud eventarc audit-logs-provider method-names list \
     --service-name=SERVICE_NAME

Ersetzen Sie SERVICE_NAME durch einen serviceName-Wert, z. B. bigquery.googleapis.com.

Beispiele für Eventarc-Trigger

Im folgenden Beispiel wird ein Trigger mit dem Namen cal-workflows-trigger für ein Workflow-Ziel erstellt. Der Trigger filtert nach Audit-Logs, die von bigquery.googleapis.com geschrieben wurden, und nach dem als google.cloud.bigquery.v2.JobService.InsertJob identifizierten Vorgang:

gcloud eventarc triggers create cal-workflows-trigger \
   --location=us-central1 \
   --destination-workflow=my-workflow \
   --destination-workflow-location=europe-west4 \
   --event-filters="type=google.cloud.audit.log.v1.written" \
   --event-filters="serviceName=bigquery.googleapis.com" \
   --event-filters="methodName=google.cloud.bigquery.v2.JobService.InsertJob" \
   --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

Im folgenden Beispiel wird ein Trigger mit dem Namen cal-run-trigger für ein Cloud Run-Ziel erstellt. Der Trigger filtert nach Audit-Logs, die von workflows.googleapis.com geschrieben wurden, und nach dem als google.cloud.workflows.v1.Workflows.GetWorkflow identifizierten Vorgang:

gcloud eventarc triggers create cal-run-trigger \
   --location=us-central1 \
   --destination-run-service=helloworld-events \
   --destination-run-region=us-central1 \
   --event-filters="type=google.cloud.audit.log.v1.written" \
   --event-filters="serviceName=workflows.googleapis.com" \
   --event-filters="methodName=google.cloud.workflows.v1.Workflows.GetWorkflow" \
   --event-filters="resourceName=projects/_/locations/us-central1/workflows/test-workflow" \
   --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Übergroße Audit-Logeinträge

Cloud Logging teilt Audit-Logeinträge auf, die das Nutzungslimit überschreiten, und verteilt die im ursprünglichen Audit-Logeintrag enthaltenen Daten auf mehrere aufgeteilte Einträge. Wenn ein Logeintrag ein split-Feld enthält, ist der Eintrag das Ergebnis der Aufteilung eines größeren ursprünglichen Logeintrags. Das Feld split ist ein LogSplit-Objekt, das die Informationen enthält, die zum Identifizieren zugehöriger aufgeteilter Einträge erforderlich sind.

Jeder aufgeteilte Eintrag hat einen protoPayload, der dieselben Werte für serviceName, methodName und resourceName enthält, damit die Ereignisse der Cloud-Audit-Logs gefiltert werden können. Eventarc-Trigger liefern pro aufgeteiltem Eintrag ein Ereignis.

Wenn ein Audit-Logeintrag vorhanden ist, der in mehrere Logeinträge aufgeteilt ist, können Sie nach jedem der Felder im LogEntry filtern. Wenn Sie beispielsweise den ersten Eintrag in einer Reihe von aufgeteilten Logeinträgen benötigen, können Sie den folgenden gcloud CLI-Befehl mit split.index=0 ausführen, um die Position des ersten Eintrags anzugeben:

gcloud logging read "split.index=0"

Weitere Informationen zur Erkennung von Einträgen und Beispielabfragen finden Sie unter Audit-Logeinträge aufteilen.

Nächste Schritte