云 Firestore 的审核日志是否包含删除集合?



我知道审计日志默认包括Admin活动,如'delete',但我无法在GCP日志注册表中找到与我的Firestore项目中创建或删除集合相关的任何日志。

我使用了以下查询:

resource.type=("datastore_database" OR "datastore_index")
logName=( 
"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
OR "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access"
OR "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
OR "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy"
)

编辑修复项目路径(感谢Javier M)

DeleteOperation审计日志

这个方法,见ADMIN WRITE审计日志,与长时间运行的操作相关,这些操作是需要很长时间才能完成的API调用。因此,该方法将擦除长时间运行的操作(这意味着客户机不再对其结果感兴趣)。它与删除Cloud Firestore实例中的条目无关。

删除集合你不能看到Delete Collection的日志,因为你不能删除一个集合。相反,您需要删除Collection下的所有文档和子文档。

因此,您将在日志中看到的引用delete的内容将用于删除文档删除字段。删除所有文档后,可以假设也删除了一个Collection。

您可以将Collection视为文档的名称空间或容器(这是文档引用它的方式)。

默认禁用Firestore的数据访问日志。您需要显式地启用它们来接收日志。

另一方面,由于在PROJECT_ID之前缺少projects/,因此查询日志是错误的,如下所述。因此,您应该使用:

logName=(
"projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access"
OR "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
OR "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
OR "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy")

您还可以从methodName中查询日志。例如,每次你创建一个新的集合或字段在Firestore,Write方法将被使用和记录。因此,您可以执行如下查询:

protoPayload.methodName="google.firestore.v1.Firestore.Write"
编辑:

@Troglo

请求删除操作日志信息您可以看到在Write方法下对字段,文档和集合进行的每次删除的日志,因为它保存了每次写操作的信息,例如删除。但是,通过methodName="google.firestore.v1.Firestore.Write"查询将输出到目前为止完成的所有写操作。

或者,您可以使用request对象来构建查询,因为它包含有关写入字段的信息,如updatedelete。因此:

项目下任何集合的删除日志

protoPayload.request.writes.delete:"projects/[PROJECT-ID]/databases/(default)/documents/"

特定集合的删除日志

protoPayload.request.writes.delete:"projects/[PROJECT-ID]/databases/(default)/documents/[COLLECTION-ID]"

注意使用:("has",匹配任何子字符串)而不是=(equal)来构建查询。与后者相比,前者的性能较低。

重要:

请记住,根据今天(2021年10月26日),这些数据访问审计日志在预览中。请查看演出条件和舞台说明,了解更多信息。

相关内容

  • 没有找到相关文章

最新更新