了解审核日志

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

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

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

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

查看审核日志

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

基本查看器

您可以使用 GCP Console 中的“日志查看器”基本界面来检索审核日志条目。请执行以下操作:

  1. 转到 GCP Console 中的 Stackdriver Logging > 日志(日志查看器)页面:

    转到“日志查看器”页面

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

  3. 在第一个下拉菜单中,选择您要查看其审核日志的资源类型。您可以选择特定资源,也可以选择 Global 以包括所有资源。

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

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

高级查看器

您可以使用 GCP Console 中的“日志查看器”高级界面来检索审核日志条目。请执行以下操作:

  1. 转到 GCP Console 中的 Stackdriver Logging > 日志(日志查看器)页面:

    转到“日志查看器”页面

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

  3. 在第一个下拉菜单中,选择您要查看其审核日志的资源类型。您可以选择特定资源,也可以选择 Global 以包括所有资源。

  4. 点击搜索过滤框最右侧的下拉箭头 (▾),然后选择转换为高级过滤条件

  5. 创建一项过滤条件,以进一步指定要查看的日志条目。要检索项目中的所有审核日志,请添加以下过滤条件。在每个日志名称中提供一个有效 [PROJECT_ID]

      logName = ("projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"
          OR "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events"
          OR "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access")
    

    如需详细了解过滤条件,请参阅高级日志过滤条件

API

要使用 Stackdriver 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%2Factivity OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access)"
      }
    
  3. 点击执行

如需详细了解过滤条件,请参阅高级日志过滤条件

SDK

要使用 Cloud SDK 读取日志条目,请运行以下命令。在每个日志名称中提供一个有效 [PROJECT_ID]

gcloud logging read "logName=(projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access)

要详细了解如何使用 Cloud SDK 读取日志条目,请参阅读取日志条目

审核日志条目的格式

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

AuditLog 类型定义了一组专门针对审核日志的字段,例如 serviceNameauthenticationInfo。另外还包含一个可选字段 serviceData,某些 Google Cloud Platform 服务会使用该字段在审核日志条目中列出服务专属信息。如需查看使用该字段的 GCP 服务的列表,请参阅服务专属审核数据

审核日志条目示例

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

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

    {
      protoPayload: {
        @type: "type.googleapis.com/google.cloud.audit.AuditLog",
        status: {},
        authenticationInfo: {
          principalEmail: "user@example.com"
        },
        serviceName: "cloudresourcemanager.googleapis.com",
        methodName: "SetIamPolicy",
        authorizationInfo: [...],
        serviceData: {
          @type: "type.googleapis.com/google.iam.v1.logging.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: "project",
        labels: { project_id: "my-gcp-project-id" }
      },
      timestamp: "2016-04-27T16:24:56.135Z",
      severity: "NOTICE",
      logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity",
    }

下面显示了用于选择上述示例审核日志条目的过滤条件。此过滤条件可在高级查看器、Stackdriver Logging API 或 Cloud SDK 中使用。项目标识符包含在日志名称中。由于 logName 字段已编入索引,因此该过滤条件的执行速度会比较快:

resource.type = "project"
logName = "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity"

如果要查找来自 gce_instance 等资源类型的某个实例的审核日志,请添加实例限定符:

resource.type = "gce_instance"
resource.instance_id = "12345678901234567890"
logName = "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity"

解读示例审核日志条目

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

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

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

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

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

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

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

  • 审核的是哪项资源? 审核的是 Google Cloud Platform 项目 my-gcp-project-idresource 字段指明了资源类型是 project 且项目标识符是 my-gcp-project-id。请在受监控的资源类型列表中查找 project,然后您会看到它属于“Google 项目”。

如需了解详情,请参阅 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 身份和访问权限管理 type.googleapis.com/google.iam.v1.logging.AuditData
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Stackdriver Logging
需要帮助?请访问我们的支持页面