Un déclencheur Eventarc déclare votre intérêt pour un événement ou un ensemble d'événements spécifique, ce qui vous permet de capturer des événements spécifiques et d'agir en conséquence.
Les déclencheurs Eventarc avec type=google.cloud.audit.log.v1.written
envoient des requêtes à une destination lorsque vous créez un journal d'audit correspondant aux critères de filtrage du déclencheur. Les correspondances sont effectuées sur les valeurs suivantes de l'entrée de journal d'audit :
serviceName
: service ayant écrit le journal d'auditmethodName
: opération en cours d'auditresourceName
: ressource en cours d'audit
Pour obtenir la liste des services Google Cloud qui fournissent des journaux d'audit, consultez la page Services Google Cloud avec journaux d'audit. Vous pouvez également récupérer les valeurs des filtres d'événements qui s'appliquent au type d'événement google.cloud.audit.log.v1.written
.
Identifier les filtres d'événements
Pour identifier les filtres d'événements exacts nécessaires à la création d'un déclencheur, générez l'événement que vous souhaitez capturer, puis affichez son entrée Cloud Audit Logging correspondante. Notez que les données d'une entrée de journal peuvent être réparties et réparties sur plusieurs entrées.
Assurez-vous d'avoir activé pour votre service les types de journaux d'audit pour l'accès aux données.
Notez que les services pour lesquels l'audit est activé par défaut ne sont pas répertoriés.
Dans le tableau principal de la page Journaux d'audit, sélectionnez un service Google Cloud.
Dans l'onglet Types de journaux, cochez les cases Lecture administrateur, Lecture de données et Écriture de données, puis cliquez sur Enregistrer.
Effectuez l'opération pour laquelle vous souhaitez créer un filtre d'événements et générer une entrée de journal d'audit. Vous pouvez par exemple stocker un fichier dans un bucket Cloud Storage.
Dans la console Google Cloud, accédez à la page Explorateur de journaux.
Dans le volet Générateur de requêtes, créez et exécutez une requête pour filtrer les entrées de journal et récupérer les résultats. Exemple :
resource.type="gcs_bucket" resource.labels.bucket_name="eventarc-bucket"
Pour en savoir plus sur la création de requêtes permettant de récupérer et d'affiner les journaux, consultez la page Créer des requêtes à l'aide du langage de requête Logging.
Pour afficher tous les détails d'une entrée de journal, cliquez sur la flèche de développement (▸) au début de l'entrée.
Le champ
protoPayload
fait la distinction entre une entrée de journal d'audit et les autres entrées de journal. Dans l'exemple suivant, certaines parties de l'entrée de journal sont omises et certains champs sont mis en évidence :{ 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" }
Les informations suivantes peuvent être utilisées pour vérifier le contenu de cette entrée de journal d'audit :
Le champ
protoPayload.@type
correspond àtype.googleapis.com/google.cloud.audit.AuditLog
.Le champ
logName
inclut le domainecloudaudit.googleapis.com
.
Le champ
protoPayload.serviceName
correspond au service qui a écrit le journal d'audit.Le champ
protoPayload.methodName
correspond à l'opération en cours d'audit.Le champ
protoPayload.resourceName
correspond à la ressource en cours d'audit.
Pour en savoir plus sur la recherche d'informations dans une entrée de journal d'audit, consultez la section Comprendre les journaux d'audit.
Récupérer les valeurs des filtres d'événements
Vous pouvez exécuter la commande gcloud eventarc audit-logs-provider
pour explorer et répertorier les valeurs serviceName
et methodName
du fournisseur pour le type d'événement google.cloud.audit.log.v1.written
.
Pour répertorier les noms des services, exécutez la commande suivante :
gcloud eventarc audit-logs-provider service-names list
Elle renvoie toutes les valeurs de l'attribut serviceName
pour le type d'événement google.cloud.audit.log.v1.written
.
Pour répertorier les noms de méthodes pour un service spécifique, exécutez la commande suivante :
gcloud eventarc audit-logs-provider method-names list \ --service-name=SERVICE_NAME
Remplacez SERVICE_NAME
par une valeur serviceName
(par exemple, bigquery.googleapis.com
).
Exemples de déclencheurs Eventarc
L'exemple suivant crée un déclencheur appelé cal-workflows-trigger
pour une destination Workflows. Le déclencheur filtre les journaux d'audit écrits par bigquery.googleapis.com
et l'opération identifiée comme google.cloud.bigquery.v2.JobService.InsertJob
:
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
L'exemple suivant crée un déclencheur appelé cal-run-trigger
pour une destination Cloud Run. Le déclencheur filtre les journaux d'audit écrits par workflows.googleapis.com
et l'opération identifiée comme google.cloud.workflows.v1.Workflows.GetWorkflow
:
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
Entrées de journal d'audit surdimensionnées
Cloud Logging répartit les entrées de journal d'audit qui dépassent la limite d'utilisation et répartit les données contenues dans l'entrée de journal d'audit d'origine dans plusieurs entrées partitionnées. Si une entrée de journal contient un champ split
, elle résulte de la scission d'une entrée de journal d'origine plus grande. Le champ split
est un objet LogSplit
qui contient les informations nécessaires pour identifier les entrées de journal fractionnées associées.
Chaque entrée fractionnée possède un attribut protoPayload
qui inclut les mêmes valeurs serviceName
, methodName
et resourceName
afin de filtrer les événements Cloud Audit Logs. Les déclencheurs Eventarc fournissent un événement pour chaque entrée fractionnée.
Lorsque l'entrée de journal d'audit est divisée en plusieurs entrées de journal, vous pouvez filtrer n'importe quel champ de l'entrée LogEntry
. Par exemple, si vous avez besoin de la première entrée d'une série d'entrées de journal fractionnées, vous pouvez exécuter la commande gcloud CLI suivante, en utilisant split.index=0
pour indiquer la position de la première entrée :
gcloud logging read "split.index=0"
Pour en savoir plus, y compris sur la reconnaissance des entrées et des exemples de requêtes, consultez la page Diviser les entrées du journal d'audit.