我有一个数据集 ID,创建了表。哪些被删除了。我需要检查谁删除了它们以及何时删除。
问问题
1793 次
2 回答
3
您需要启用审计日志导出。
有很多类型的删除:
- 从 UI / API 中删除
- 使用 QUERY 删除(覆盖为目标表)
- 通过 CREATE OR REPLACE 语法删除
- 通过到期自动删除
此处解释了常见的删除类型:
类型 1:您发出了删除表的查询/API 调用等。
然后您可以运行如下查询:
SELECT * FROM `dataset.cloudaudit_googleapis_com_activity_20190919`
where resource.type='bigquery_resource'
and protopayload_auditlog.methodName='tableservice.delete'
你会得到一个大表,它不能作为一张漂亮的图片在这里发布,但作为简化的 JSON,它在这里:
[
{
"logName": "projects/editedname/logs/cloudaudit.googleapis.com%2Factivity",
"resource": {
"type": "bigquery_resource",
"labels": {
"project_id": "editedname",
}
},
"protopayload_auditlog": {
"serviceName": "bigquery.googleapis.com",
"methodName": "tableservice.delete",
"resourceName": "projects/editedname/datasets/dataset/tables/industry2",
"authenticationInfo": {
"principalEmail": "something@domain.com",
"authoritySelector": null,
"serviceAccountKeyName": null,
"serviceAccountDelegationInfo": []
},
"authorizationInfo": [
{
"resource": "projects/editedname/datasets/dataset/tables/industry2",
"permission": "bigquery.tables.delete",
"granted": "true",
"resourceAttributes": null
}
],
"requestMetadata": {
"callerIp": "1.2.3.4",
"callerSuppliedUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36,gzip(gfe)",
"callerNetwork": null,
"requestAttributes": null,
"destinationAttributes": null
},
},
"timestamp": "2019-09-19 08:47:00.381 UTC",
"receiveTimestamp": "2019-09-19 08:47:00.590316 UTC",
"severity": "NOTICE",
}
]
如您所见,您有已删除的表,例如:industry2
在我的示例中,还有用户或服务帐户的电子邮件地址,以及日期,甚至metadata
是 IP 调用者的日期和 userAgent。
更多关于这里的可用信息
类型 2:您发出了表覆盖查询或CREATE OR REPLACE
语法
对于这些“删除”,您不会找到单独的已删除条目。但是您可以在metadataJson
于 2019-09-20T09:59:44.280 回答
3
最简单的方法是在 GCP 控制台中单击“活动”选项卡,通过“大查询”过滤“资源类型”并查找“删除表”条目。如果您单击该条目,它将展开并显示有关删除的信息,以及执行删除的帐户。
于 2019-09-20T10:02:40.353 回答