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_project
或bigquery_dataset
。bigquery_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.request
和 protoPayload.response
字段包含更多信息。您可以在 BigQuery Reservations API 中查找字段定义。如需了解详情,请参阅监控 BigQuery 预留。
如需深入了解审核日志格式,请参阅了解审核日志。
限制
日志消息的大小上限为 10 万字节。如需了解详情,请参阅截断的日志条目。
可见性和访问权限控制
BigQuery 审核日志可能包含用户可能会认为敏感的信息,例如 SQL 文本、架构定义以及资源(例如表和数据集)的标识符。如需了解如何管理对此信息的访问权限,请参阅 Cloud Logging 访问权限控制文档。
后续步骤
- 如需了解如何使用 Cloud Logging 审核与政策标记相关的活动,请参阅审核政策标记。
- 如需了解如何使用 BigQuery 分析记录的活动,请参阅 BigQuery 审核日志概览。