了解审核日志

本页面详细介绍了审核日志条目的结构、读取方式和解读方式。

Cloud Audit Logs 会为每个 Google Cloud 项目、文件夹和组织维护以下三类审核日志:

  • 系统事件审核日志
  • 管理员活动审核日志
  • 数据访问审核日志

如需大致了解 Cloud Audit Logs,请参阅 Cloud Audit Logs

审核日志条目的格式

审核日志条目是一种 Cloud Logging 日志条目。与所有 Logging 日志条目一样,审核日志条目同样存储在 LogEntry 对象中。审核日志条目与其他日志条目的区别在于 protoPayload 字段。在审核日志条目中,protoPayload 字段包含一个 AuditLog 对象,用于存储审核日志数据。

简而言之,每个审核日志条目都包含以下信息:

  • 日志条目所属的项目组织
  • 日志条目所适用的资源,这些信息包括受监控资源列表中的资源类型以及表示特定实例的其他值。例如,您可以查看单个 Compute Engine 虚拟机实例或所有虚拟实例中的审核日志条目。
  • 时间戳
  • 服务:服务是单独的 Google Cloud 产品,例如 Compute Engine、Cloud SQL 或 Pub/Sub。每项服务都由其名称标识:比如 Compute Engine 是 compute.googleapis.com,Cloud SQL 是 cloudsql.googleapis.com,等等。审核日志条目的 protoPayload.serviceName 字段中列出了此信息。

    资源类型归属于一项服务,但一项服务可以有多种资源类型。如需查看服务和资源列表,请参阅将服务映射到资源

  • 类型为 protoPayload负载。每个审核日志条目的载荷都是类型为 AuditLog 的对象,该对象了定义一组专用于审核日志记录的字段,例如 serviceNameauthenticationInfo。它还包含一个可选字段 serviceData,某些 Google Cloud 服务会使用该字段在审核日志条目中列出服务专属信息。如需查看使用该字段的 Google Cloud 服务的列表,请参阅服务专属审核数据

  • 日志名称:审核日志条目属于项目、文件夹和组织内的日志。日志名称如下所示:

       projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity
       projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access
       projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_event

       folders/[FOLDER_ID]/logs/cloudaudit.googleapis.com%2Factivity
       folders/[FOLDER_ID]/logs/cloudaudit.googleapis.com%2Fdata_access
       folders/[FOLDER_ID]/logs/cloudaudit.googleapis.com%2Fsystem_event

       organizations/[ORGANIZATION_ID]/logs/cloudaudit.googleapis.com%2Factivity
       organizations/[ORGANIZATION_ID]/logs/cloudaudit.googleapis.com%2Fdata_access
       organizations/[ORGANIZATION_ID]/logs/cloudaudit.googleapis.com%2Fsystem_event
    

在一个项目、文件夹或组织内,这些日志名称通常缩写为 activitydata_accesssystem_event

审核日志条目示例

本部分通过一个审核日志条目示例,介绍了如何查找审核日志条目中最重要的信息。

以下示例是 Resource Manager 写入的管理员活动审核日志条目,其中记录了对名为 my-gcp-project-id 的 Google Cloud 项目中的 Cloud Identity and Access Management 政策所做的一项更改。为简便起见,此示例省略了日志条目的某些部分,并突出显示了某些字段:

        {
          protoPayload: {
            @type: "type.googleapis.com/google.cloud.audit.AuditLog",
            status: {},
            authenticationInfo: {
              principalEmail: "user@example.com"
            },
            serviceName: "appengine.googleapis.com",
            methodName: "SetIamPolicy",
            authorizationInfo: [...],
            serviceData: {
              @type: "type.googleapis.com/google.appengine.legacy.AuditData",
              policyDelta: { bindingDeltas: [
                  action: "ADD",
                  role: "roles/logging.privateLogViewer",
                  member: "user:user@example.com"
              ], }
            },
            request: {
              resource: "my-gcp-project-id",
              policy: { bindings: [...], }
            },
            response: {
              bindings: [
                {
                  role: "roles/logging.privateLogViewer",
                  members: [ "user:user@example.com" ]
                }
              ],
            }
          },
          insertId: "53179D9A9B559.AD6ACC7.B40604EF",
          resource: {
            type: "gae_app",
            labels: { project_id: "my-gcp-project-id" }
          },
          timestamp: "2019-05-27T16:24:56.135Z",
          severity: "NOTICE",
          logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity",
        }
    

下面显示了用于选择上述示例审核日志条目的查询。 它可在高级日志查看器、Logging API 或 Cloud SDK 中使用。 项目标识符位于日志名称中,由于 logName 字段已编入索引,查询速度会很快:

        resource.type = "gae_app"
        logName = "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"
    

如果要从单个资源类型实例(如 gce_instance)查找审核日志,请添加实例限定符:

        resource.type = "gce_instance"
        resource.instance_id = "[INSTANCE_ID]/
        logName = "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"
    

解读示例审核日志条目

在上述审核日志条目示例中,显示的 protoPayloadinsertIdresourcetimestampseveritylogName 字段是 LogEntry 对象的一部分。protoPayload 字段的值为 AuditLog 对象。此对象用于封装审核日志数据。

在查看上述审核日志条目示例时,您可能有以下疑问:

  • 这是审核日志条目吗?是的,您可通过以下两种方式来辨认:

    • protoPayload.@type 字段为 type.googleapis.com/google.cloud.audit.AuditLog

    • logName 字段包含网域 cloudaudit.googleapis.com

  • 哪项服务写入了这条审核日志?这条日志由 App Engine 写入。审核日志条目的 protoPayload.serviceName 字段中列出了此信息。

  • 审核的是哪项操作?审核的是 SetIamPolicy,如 protoPayload.methodName 字段中所示。protoPayload.serviceData 中的 AuditData 对象列出了有关所审核操作的详细信息。

  • 审核的是哪项资源?审核的是在 App Engine 中运行且与一个 Google Cloud 项目 my-gcp-project-id 相关联的应用。您可以通过 resource 字段确定此信息,该字段指定了资源类型 gae_app 和项目标识符 my-gcp-project-id。在此示例中,您可以在受监控的资源类型列表中找到有关资源类型的详细信息。

如需了解详情,请参阅 LogEntry 类型AuditLog 类型IAM AuditData 类型

大规模或长时间运行的审核日志条目

如果某项操作会异步运行或生成大型 AuditLog 记录,则该操作的审核日志会拆分成多个日志条目。当同一操作涉及多个日志条目时,LogEntry 对象将包含一个 operation 字段,并且同一操作的各个条目具有相同的 LogEntry.operation.id 值和 LogEntry.operation.producer 值。

在前面的审核日志条目示例中,operation 字段不存在,这意味着所有审核信息都包含在单个日志条目中。

服务专属审核数据

某些服务会将补充性的数据结构放入审核日志的 serviceData 字段中,以此扩充其 AuditLog 中存储的信息。下表列出了使用 serviceData 字段的服务,并提供了指向其 AuditData 类型的链接。

服务 服务数据类型
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine(旧版) type.googleapis.com/google.appengine.legacy.AuditData
BigQuery type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData
Cloud Identity and Access Management type.googleapis.com/google.iam.v1.logging.AuditData

查看审核日志

如需查找和查看审核日志,您需要知道要查看其审核日志信息的 Google Cloud 项目、文件夹或组织的标识符。您可以进一步指定其他已编入索引的 LogEntry 字段,如 resource.type;如需了解详情,请查看快速查找日志条目

以下是审核日志名称:

       projects/project-id/logs/cloudaudit.googleapis.com%2Factivity
       projects/project-id/logs/cloudaudit.googleapis.com%2Fdata_access
       projects/project-id/logs/cloudaudit.googleapis.com%2Fsystem_event

       folders/folder-id/logs/cloudaudit.googleapis.com%2Factivity
       folders/folder-id/logs/cloudaudit.googleapis.com%2Fdata_access
       folders/folder-id/logs/cloudaudit.googleapis.com%2Fsystem_event

       organizations/organization-id/logs/cloudaudit.googleapis.com%2Factivity
       organizations/organization-id/logs/cloudaudit.googleapis.com%2Fdata_access
       organizations/organization-id/logs/cloudaudit.googleapis.com%2Fsystem_event
    

以下示例使用项目级层查询。如果要查看组织级层或文件夹级层的审核日志,请替换为审核日志名称中列出的适当文件夹级层或组织级层审核日志名称或标识符。

您可以通过多种方式来查看审核日志条目:

Cloud Console

您可以使用 Cloud Console 中的日志查看器来检索您的 Google Cloud 项目的审核日志条目。执行以下操作:

  1. 转到 Cloud Console 中的Google Cloud 的操作套件 Logging > 日志(日志查看器)页面:

    转到“日志查看器”页面

  2. 在页面顶部选择一个现有 Google Cloud 项目,或者创建一个新项目。

  3. 在第一个下拉菜单中,选择您要查看其审核日志的资源类型。

  4. 在第二个下拉菜单中,选择您要查看的日志类型:activity 表示管理员活动审核日志,data_access 表示数据访问审核日志,system_events 表示系统事件审核日志。

    如果您没有看到以上任何选项,则表明项目中没有该类型的审核日志。

如果您希望将现有搜索限制为仅搜索审核日志,请执行以下操作:

  1. 在搜索过滤条件框中,点击下拉箭头 (▾),然后选择转换为高级过滤条件

  2. 在出现的文本框中,在 resource.type 行下方添加以下查询。请注意,您提供的 project-id 必须引用当前选定的 Google Cloud 项目;否则,该查询将不起作用。

            logName : "projects/project-id/logs/cloudaudit.googleapis.com"
        

    如果您希望查看项目的所有可用审核日志,请仅在查询中包含上述内容。如需详细了解查询,请参阅高级日志查询

API

若要使用 Logging API 查看审核日志条目,请执行以下操作:

  1. 转到 entries.list 方法文档中的试用此 API 部分。

  2. 将以下内容加入试用此 API 表单的请求正文部分。点击此预填充的表单后,系统会自动填充请求正文,但您需要在每个日志名称中提供一个有效的 project-id

              {
                "resourceNames": [
                  "projects/project-id"
                ],
                "pageSize": 5,
                "filter": "logName : projects/project-id/logs/cloudaudit.googleapis.com"
              }
        
  3. 点击执行

如需详细了解查询,请参阅高级日志查询

GCLOUD

Cloud SDK 有一组命令 gcloud logging,用于为 Cloud Logging API 提供命令行界面。如需读取您的日志条目,请运行以下命令。在每个日志名称中提供有效的 project-id

        gcloud logging read "logName : projects/project-id/logs/cloudaudit.googleapis.com"

如需详细了解如何使用 gcloud 命令行工具,请参阅读取日志条目

如需查看审核日志条目示例并了解如何在其中找到最重要的信息,请参阅了解审核日志

如需详细了解如何使用日志查看器查找审核日志,包括有关查询语法的提示,请参阅查看日志