BigQuery 中的审核日志简介

日志是为响应特定事件或操作而生成的文本记录。例如,BigQuery 会为创建或删除表、购买槽或运行加载作业等操作创建日志条目。

Google Cloud 还会写入日志,包括可让您深入了解与使用 Google Cloud 服务相关的操作问题的审核日志。如需详细了解 Google Cloud 如何处理日志记录,请参阅 Cloud Logging 文档和 Cloud Audit Logs 概览

审核日志与 INFORMATION_SCHEMA 视图

Google Cloud 项目仅包含 Google Cloud 项目直属资源的审核日志。其他 Google Cloud 资源(例如文件夹、组织和结算账号)具有自己的审核日志。

审核日志可帮助您回答“哪些用户何时在何处对您的 Google Cloud 资源执行过哪些操作”的问题。审核日志是基于用户和访问模式的系统活动的权威信息来源,应该是审核或安全问题的主要来源。

BigQuery 中的 INFORMATION_SCHEMA 视图是另一个数据分析来源,您可以将其与指标和日志结合使用。这些视图包含有关作业、数据集、表和其他 BigQuery 实体的元数据。例如,您可以获取关于在指定时间段内运行了哪些 BigQuery 作业的实时元数据。然后,您可以按项目、用户、引用的表和其他维度对结果进行分组或过滤。

INFORMATION_SCHEMA 视图为您提供相关信息,帮助您对 BigQuery 工作负载执行更详细的分析,例如:

  • 指定项目在过去七天内所有查询的平均槽利用率是多少?
  • 过去 30 分钟内发生了哪些流式传输错误(按错误代码分组)?

BigQuery 审核日志包含 API 调用的日志条目,但并未介绍 API 调用的影响。API 调用的子集会创建作业(例如查询和加载),作业的信息由 INFORMATION_SCHEMA 视图捕获。例如,您可以在 INFORMATION_SCHEMA 视图中查找特定查询使用的时间和槽,但在审核日志中却做不到。

如需深入了解 BigQuery 工作负载的性能,请参阅作业元数据流式元数据预留元数据

如需详细了解 Google Cloud 服务写入的审核日志类型,请参阅审核日志类型

审核日志格式

Google Cloud 服务以结构化 JSON 格式写入审核日志。Google Cloud 日志条目的基本数据类型是 LogEntry 结构。此结构包含日志的名称、生成日志条目的资源、时间戳(世界协调时间 [UTC])和其他基本信息。

日志在称为“载荷字段”的子字段中包含记录事件的详细信息。对于审核日志,载荷字段名为 protoPayload。此字段的类型 (protoPayload.@type) 设置为 type.googleapis.com/google.cloud.audit.AuditLog,表示该字段使用 AuditLog 日志结构。

对数据集、表和作业的操作,BigQuery 以两种不同的格式写入审核日志,但两种格式共享 AuditLog 基本类型。

旧格式包括以下字段和值:

  • resource.type 字段的值为 bigquery_resource
  • BigQuery 会在 protoPayload.serviceData 字段中写入关于操作的详细信息。此字段的值使用 AuditData 日志结构。

新版格式包括以下字段和值:

  • resource.type 字段的值为 bigquery_projectbigquery_datasetbigquery_project 资源包含与作业有关的日志条目,而 bigquery_dataset 资源则包含与存储空间有关的日志条目。
  • BigQuery 会在 protoPayload.metadata 字段中写入关于操作的详细信息。此字段的值使用 BigQueryAuditMetadata 结构。

我们建议您使用新版格式日志。如需了解详情,请参阅审核日志迁移指南

以下是显示失败操作的日志条目的简化示例:

{
  "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",
  ...
}

对于针对 BigQuery 预留执行的操作,protoPayload 字段使用 AuditLog 结构,protoPayload.requestprotoPayload.response 字段包含更多信息。您可以在 BigQuery Reservations API 中查找字段定义。如需了解详情,请参阅监控 BigQuery 预留

如需深入了解审核日志格式,请参阅了解审核日志

限制

日志消息的大小上限为 10 万字节。如需了解详情,请参阅截断的日志条目

可见性和访问权限控制

BigQuery 审核日志可能包含用户可能会认为敏感的信息,例如 SQL 文本、架构定义以及资源(例如表和数据集)的标识符。如需了解如何管理对此信息的访问权限,请参阅 Cloud Logging 访问权限控制文档

后续步骤