Ein Eventarc-Trigger deklariert Ihr Interesse an einem bestimmten Ereignis oder einer Reihe von Ereignissen, mit denen Sie bestimmte Ereignisse erfassen und darauf reagieren können.
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. Übereinstimmungen werden mit den folgenden Werten aus dem Audit-Logeintrag vorgenommen:
serviceName
: der Dienst, der das Audit-Log geschrieben hatmethodName
: der zu prüfende VorgangresourceName
: die 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.
Achten Sie darauf, dass die Audit-Log-Typen zum Datenzugriff für Ihren Dienst aktiviert sind.
Beachten Sie, dass alle Dienste, bei denen die Prüfung standardmäßig aktiviert ist, nicht aufgeführt sind.
Wählen Sie auf der Seite Audit-Logs in der Haupttabelle einen Google Cloud-Dienst aus.
Aktivieren Sie auf dem Tab Logtyp die Kästchen Lesen durch Administrator, Daten lesen und Daten schreiben. Klicken Sie anschließend auf Speichern.
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.
Rufen Sie in der Google Cloud Console Log-Explorer auf.
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.
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
isttype.googleapis.com/google.cloud.audit.AuditLog
.Das Feld
logName
enthält die Domaincloudaudit.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 die Werte der Anbieter serviceName
und methodName
für den Ereignistyp google.cloud.audit.log.v1.written
untersuchen und auflisten.
Führen Sie folgenden Befehl aus, um Dienstnamen aufzulisten:
gcloud eventarc audit-logs-provider service-names list
Dies gibt alle serviceName
-Attributwerte für den Ereignistyp google.cloud.audit.log.v1.written
zurück.
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 Workflows-Ziel erstellt. Der Trigger filtert nach Audit-Logs, die von bigquery.googleapis.com
geschrieben werden, und für den Vorgang, der als google.cloud.bigquery.v2.JobService.InsertJob
identifiziert wird:
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 werden, und nach dem Vorgang, der als google.cloud.workflows.v1.Workflows.GetWorkflow
identifiziert wird:
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
Zu groß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 Feld split
enthält, resultiert der Eintrag aus 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 eine protoPayload
, die dieselben Werte für serviceName
, methodName
und resourceName
enthält, damit die Ereignisse der Cloud-Audit-Logs gefiltert werden können. Eventarc-Trigger liefern für jeden Aufteilungseintrag 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, einschließlich der Erkennung von Einträgen und Beispielabfragen, finden Sie unter Audit-Logeinträge aufteilen.