Introducción a los registros de auditoría en BigQuery

Los registros son registros de texto que se generan en respuesta a eventos o acciones particulares. Por instancia, BigQuery crea entradas de registro para acciones como crear o borrar una tabla, comprar ranuras o ejecutar un trabajo de carga.

Google Cloud también escribe registros, incluidos los registros de auditoría que proporcionan estadísticas sobre los problemas operativos relacionados con el uso de los servicios de Google Cloud. Para obtener más información sobre cómo Google Cloud controla los registros, consulta la documentación de Cloud Logging y la descripción general de los registros de auditoría de Cloud.

Registros de auditoría frente a vistas INFORMATION_SCHEMA

Los proyectos de Google Cloud contienen registros de auditoría exclusivos para los recursos que están directamente dentro del proyecto de Google Cloud. Otros recursos de Google Cloud, como las carpetas, organizaciones y cuentas de facturación, contienen sus propios registros de auditoría.

Los registros de auditoría te ayudan a responder las preguntas “¿Quién hizo qué, dónde y cuándo?” para tus recursos de Google Cloud. Los registros de auditoría son la fuente definitiva de información para la actividad del sistema por parte de los patrones de acceso y de los usuarios, y deben ser la fuente principal de las preguntas de auditoría o seguridad.

Las vistas INFORMATION_SCHEMA en BigQuery son otra fuente de estadísticas que puedes usar junto con las métricas y los registros. Estas vistas contienen metadatos sobre trabajos, conjuntos de datos, tablas y otras entidades de BigQuery. Por ejemplo, puedes obtener metadatos en tiempo real sobre qué trabajos de BigQuery se ejecutaron durante un tiempo específico. Luego, puedes agrupar o filtrar los resultados por proyecto, usuario, tablas a las que se hace referencia y otras dimensiones.

Las vistas INFORMATION_SCHEMA proporcionan información para realizar un análisis más detallado sobre tus cargas de trabajo de BigQuery, como los siguientes:

  • ¿Cuál es el uso promedio de las ranuras de todas las búsquedas de los últimos siete días de un proyecto determinado?
  • ¿Qué errores de transmisión ocurrieron en los últimos 30 minutos, agrupados por código de error?

Los registros de auditoría de BigQuery contienen entradas de registro para las llamadas a la API, pero no describen su impacto. Un subconjunto de llamadas a la API crea trabajos (como de consulta y carga) cuya información se captura con las vistas INFORMATION_SCHEMA. Por ejemplo, puedes encontrar información sobre el tiempo y las ranuras que usa una consulta específica en las vistas INFORMATION_SCHEMA, pero no en los registros de auditoría.

Para obtener estadísticas sobre el rendimiento de las cargas de trabajo de BigQuery en particular, consulta los metadatos de trabajos, los metadatos de transmisión y los metadatos de reservas.

Para obtener más información sobre los tipos de registros de auditoría que escriben los servicios de Google Cloud, consulta Tipos de registros de auditoría.

Formato del registro de auditoría

Los servicios de Google Cloud escriben registros de auditoría en formato JSON estructurado. El tipo de datos base para las entradas de registro de Google Cloud es la estructura LogEntry. Esta estructura contiene el nombre del registro, el recurso que generó la entrada de registro, la marca de tiempo (UTC) y otro tipo de información básica.

Los registros incluyen detalles del evento registrado en un subcampo que se denomina campo de carga útil. Para los registros de auditoría, el campo de carga útil se llama protoPayload. El tipo de campo (protoPayload.@type) se establece en type.googleapis.com/google.cloud.audit.AuditLog, lo que indica que el campo usa la estructura de registro AuditLog.

Para las operaciones en conjuntos de datos, tablas y trabajos, BigQuery escribe registros de auditoría en dos formatos diferentes, aunque ambos comparten el tipo de base AuditLog.

El formato anterior incluye los siguientes campos y valores:

  • El valor para el campo resource.type es bigquery_resource.
  • BigQuery escribe los detalles sobre una operación en el campo protoPayload.serviceData. El valor de este campo utiliza la estructura de registro AuditData.

El formato más reciente incluye los siguientes campos y valores:

  • El valor del campo resource.type es bigquery_project o bigquery_dataset. El recurso bigquery_project tiene entradas de registro sobre los trabajos, mientras que el recurso bigquery_dataset tiene entradas de registro sobre el almacenamiento.
  • BigQuery escribe los detalles sobre una operación en el campo protoPayload.metadata. El valor de este campo usa la estructura BigQueryAuditMetadata.

Recomendamos consumir registros en el formato más reciente. Para obtener más información, consulta la guía de migración de registros de auditoría.

El siguiente es un ejemplo abreviado de una entrada de registro que muestra una operación con errores:

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "code": 5,
      "message": "Not found: Dataset myproject:mydataset was not found in location US"
    },
    "authenticationInfo": { ... },
    "requestMetadata":  { ... },
    "serviceName": "bigquery.googleapis.com",
    "methodName": "google.cloud.bigquery.v2.JobService.InsertJob",
    "metadata": {
  },
  "resource": {
    "type": "bigquery_project",
    "labels": { .. },
  },
  "severity": "ERROR",
  "logName": "projects/myproject/logs/cloudaudit.googleapis.com%2Fdata_access",
  ...
}

Para las operaciones en las reservas de BigQuery, el campo protoPayload usa la estructura AuditLog, y los campos protoPayload.request y protoPayload.response contienen más información. Puedes encontrar las definiciones de campo en la API de BigQuery Reservation. Para obtener más información, consulta Supervisa reservas de BigQuery.

Para comprender mejor el formato del registro de auditoría, consulta Información sobre los registros de auditoría.

Limitaciones

Los mensajes de registro tienen un límite de tamaño de 100,000 bytes. Para obtener más información, consulta Entrada de registro truncada.

Visibilidad y control de acceso

Es posible que los registros de auditoría de BigQuery incluyan información que los usuarios podrían considerar sensible, como texto de SQL, definiciones de esquemas e identificadores para recursos como tablas y conjuntos de datos. Para obtener información sobre cómo administrar el acceso a esta información, consulta la documentación del control de acceso de Cloud Logging.

¿Qué sigue?