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 hatmethodName
: Zu prüfender VorgangresourceName
: 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 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.