Determina filtros de eventos para los registros de auditoría de Cloud

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ía
  • methodName: la operación que se audita
  • resourceName: 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.

  1. Asegúrate de haber habilitado los tipos de registros de auditoría de acceso a los datos para tu servicio.

    Ir a Registros de auditoría

    Ten en cuenta que no se enumera ningún servicio que tenga habilitada la auditoría de forma predeterminada.

    1. En la tabla principal de la página Registros de auditoría, selecciona un servicio de Google Cloud.

    2. 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.

  2. 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.

  3. En la consola de Google Cloud, ve a la página Explorador de registros.

    Ir al Explorador de registros

  4. 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.

  5. 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 es type.googleapis.com/google.cloud.audit.AuditLog.

      • El campo logName incluye el dominio cloudaudit.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.

¿Qué sigue?