google-bigquery - 如何在日志中查找谁删除了表
问题描述
我有一个数据集 ID,创建了表。哪些被删除了。我需要检查谁删除了它们以及何时删除。
解决方案
您需要启用审计日志导出。
有很多类型的删除:
- 从 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
推荐阅读
- google-apps-script - 复选框更改值
- git - 如何在 Visual Studio 和 Github Desktop 中将具有不相关历史记录的代表推送到 github?
- math - 关于另一个矩形旋转移动一个矩形
- sql - 使用视图和最大值的最高居住者的详细信息?
- python - 访问任意树上的特定子级
- angular - 将 *ngIf 与 Ionic 一起使用
- dart - 衰落边缘列表视图 - 颤振
- python - NotSupportedError:不支持身份验证插件“caching_sha2_password”
- php - PHPMailer 无法解析
- python - 在工作中,看到python程序员在一个类中定义一个空类来获得“点结构”。这很糟糕吗?