Un activador de Eventarc declara tu interés en un evento o conjunto de eventos determinado, lo que te permite capturar eventos específicos y reaccionar ante ellos.
Los activadores de Eventarc con type=google.cloud.audit.log.v1.written
envían solicitudes a un destino cuando se crea un registro de auditoría que coincide con los criterios de filtro del activador. Las coincidencias se realizan en los siguientes valores de la entrada de registro de auditoría:
serviceName
: el servicio que escribió el registro de auditoríamethodName
: la operación que se auditaresourceName
: el recurso que se audita
Para obtener una lista de los servicios de Google Cloud que proporcionan registros de auditoría, consulta Servicios de Google Google con registros de auditoría. También puedes recuperar los valores de filtro de eventos que se aplican al tipo de evento google.cloud.audit.log.v1.written
.
Identifica los filtros de eventos
A fin de identificar los filtros de eventos exactos necesarios para crear un activador, genera el evento que deseas capturar y, luego, visualiza su entrada de registros de auditoría de Cloud correspondiente. Ten en cuenta que los datos de una entrada de registro pueden dividirse y distribuirse en varias entradas.
Asegúrate de haber habilitado los tipos de registros de auditoría de acceso a los datos para tu servicio.
Ten en cuenta que no se enumera ningún servicio que tenga habilitada la auditoría de forma predeterminada.
En la tabla principal de la página Registros de auditoría, selecciona un servicio de Google Cloud.
En la pestaña Tipos de registro, selecciona las casillas de verificación Lectura de administración, Lectura de datos y Escritura de datos. A continuación, haz clic en Guardar.
Realiza la operación para la que deseas crear un filtro de eventos y genera una entrada de registro de auditoría. Por ejemplo, almacena un archivo en un bucket de Cloud Storage.
En la consola de Google Cloud, ve a la página Explorador de registros.
En el panel Compilador de consultas, crea y ejecuta una consulta para filtrar las entradas de registro y recuperar los resultados. Por ejemplo:
resource.type="gcs_bucket" resource.labels.bucket_name="eventarc-bucket"
Para obtener más detalles sobre cómo compilar consultas para recuperar y definir mejor los registros, visita Compila consultas mediante el lenguaje de consulta de Logging.
Para ver los detalles completos de una entrada de registro, haz clic en la flecha desplegable (▸) al comienzo de la entrada.
El campo
protoPayload
distingue una entrada de registro de auditoría de otras entradas de registro. En el siguiente ejemplo, se omiten algunas partes de la entrada de registro y se destacan algunos campos:{ 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" }
La siguiente información se puede usar para verificar el contenido de esta entrada de registro de auditoría:
El campo
protoPayload.@type
estype.googleapis.com/google.cloud.audit.AuditLog
.El campo
logName
incluye el dominiocloudaudit.googleapis.com
.
El campo
protoPayload.serviceName
es el servicio que escribió el registro de auditoría.El campo
protoPayload.methodName
es la operación que se audita.El campo
protoPayload.resourceName
es el recurso que se audita.
Para obtener más detalles sobre cómo encontrar información en una entrada de registro de auditoría, consulta Información sobre los registros de auditoría.
Recupera valores de filtros de eventos
Puedes usar el comando gcloud eventarc audit-logs-provider
a fin de explorar y enumerar los valores serviceName
y methodName
del proveedor para el tipo de evento google.cloud.audit.log.v1.written
.
Para enumerar los nombres de los servicios, ejecuta el siguiente comando:
gcloud eventarc audit-logs-provider service-names list
Esto muestra todos los valores de atributo serviceName
para el tipo de evento google.cloud.audit.log.v1.written
.
Para enumerar los nombres de los métodos de un servicio específico, ejecuta el siguiente comando:
gcloud eventarc audit-logs-provider method-names list \ --service-name=SERVICE_NAME
Reemplaza SERVICE_NAME
por un valor serviceName
, por ejemplo, bigquery.googleapis.com
.
Ejemplos de activadores de Eventarc
En el ejemplo siguiente, se crea un activador llamado cal-workflows-trigger
para un
destino de Workflows. El activador filtra los registros de auditoría que escribe
bigquery.googleapis.com
y para la operación identificada como
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
En el siguiente ejemplo, se crea un activador llamado cal-run-trigger
para un
destino de Cloud Run. El activador filtra los registros de auditoría que escribe
workflows.googleapis.com
y para la operación identificada como
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
Entradas de registro de auditoría de gran tamaño
Cloud Logging divide las entradas de registro de auditoría que son mayores que el límite de uso y distribuye los datos contenidos en la entrada de registro de auditoría original en varias entradas divididas. Si una entrada de registro contiene un campo split
, el resultado es el de dividir una entrada de registro original más grande. El campo split
es un objeto LogSplit
que contiene la información necesaria para identificar entradas divididas relacionadas.
Cada entrada dividida tiene un protoPayload
que incluye los mismos valores serviceName
, methodName
y resourceName
para ayudar a filtrar los eventos de registros de auditoría de Cloud. Los activadores de Eventarc entregan un evento para cada entrada dividida.
Cuando tienes una entrada de registro de auditoría que se divide en varias entradas de registro, puedes filtrar cualquiera de los campos en LogEntry
. Por ejemplo, si necesitas la primera entrada en una serie de entradas de registro divididas, puedes ejecutar el siguiente comando de gcloud CLI y usar split.index=0
para indicar la posición de la primera entrada:
gcloud logging read "split.index=0"
Para obtener más información, incluido cómo reconocer entradas y consultas de muestra, consulta Divide las entradas del registro de auditoría.