Cloud Audit Logs 概览

本文档从概念上简要介绍了 Cloud Audit Logs。

Google Cloud 服务会写入用于记录 Google Cloud 资源中的管理活动和访问情况的审核日志。审核日志可帮助您回答“哪些用户何时在何处对您的 Google Cloud 资源执行过哪些操作”的问题,透明度与本地环境相同。启用审核日志有助于安全、审核和合规性实体监控Google Cloud 数据和系统,检查是否存在可能的漏洞或外部数据滥用。

生成审核日志的Google Cloud 服务

如需查看可提供审核日志的 Google Cloud 服务的列表,请参阅具有审核日志的Google Cloud 服务。所有Google Cloud 服务最终都会提供审核日志。

如需大致了解 Google Workspace 审核日志,请参阅 Google Workspace 审核日志

所需的角色

如需查看审核日志,您必须拥有适当的 Identity and Access Management (IAM) 权限和角色:

  • 如需获得对管理员活动、政策拒绝和系统事件审核日志进行只读访问所需的权限,请让您的管理员为您授予项目的 Logs Viewer (roles/logging.viewer) IAM 角色。

    如果您仅具有 Logs Viewer 角色 (roles/logging.viewer),则无法查看 _Default 存储桶中的数据访问审核日志。

  • 如需获得访问 _Required_Default 存储桶中的所有日志(包括数据访问日志)所需的权限,请让您的管理员为您授予项目的 Private Logs Viewer (roles/logging.privateLogViewer) IAM 角色。

    Private Logs Viewer 角色 ((roles/logging.privateLogViewer)) 包含 Logs Viewer 角色 (roles/logging.viewer) 具有的权限,以及读取 _Default 存储桶中的数据访问审核日志所需的权限。

如需详细了解适用于审核日志数据的 IAM 权限和角色,请参阅使用 IAM 进行访问权限控制

审核日志类型

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

管理员活动审核日志

管理员活动审核日志是由用户驱动的 API 调用或其他用于修改资源配置或元数据的操作写入的日志条目。例如,这些日志会记录用户创建虚拟机实例或更改 Identity and Access Management 权限的时间。

管理员活动审核日志始终会写入;您无法配置、排除或停用它们。即使您停用 Cloud Logging API,系统仍会生成管理员活动审核日志。

如需查看会写入管理员活动审核日志的服务列表以及有关哪些活动会生成这些日志的详细信息,请参阅具有审核日志的Google Cloud 服务

数据访问审核日志

数据访问审核日志是由读取资源配置或元数据的 API 调用写入的日志条目。用户进行的用于创建、修改或读取用户所提供资源数据的 API 调用也会写入这些日志。

具有 Identity and Access Management 政策 allAuthenticatedUsersallUsers ��公开资源不会生成审核日志。无需登录 Google Cloud、Google Workspace、Cloud Identity 或云端硬盘企业版账号即可访问的资源不会生成审核日志。这有助于保护最终用户的身份和信息。

默认情况下,数据访问审核日志(BigQuery 数据访问审核日志除外)处于停用状态,因为这些审核日志可能非常大。如果您想针对 BigQuery 以外的 Google Cloud 服务写入数据访问审核日志,则必须明确启用这些日志。启用这些日志可能导致我们因额外的日志使用量而对您的 Google Cloud 项目收取费用。如需了解如何启用和配置数据访问审核日志,请参阅启用数据访问审核日志

如需查看会写入数据访问审核日志的服务列表以及有关哪些活动会生成这些日志的详细信息,请参阅具有审核日志的Google Cloud 服务

除非您将数据访问审核日志路由到其他位置,否则这些日志会存储在 _Default 日志存储桶中。如需了解详情,请参阅本页面中的存储和路由审核日志部分。

系统事件审核日志

系统事件审核日志是由 Google Cloud 修改资源配置的系统写入的日志条目。系统事件审核日志不是通过直接用户操作生成的。例如,当由于自动扩缩而自动向代管式实例组 (MIG) 添加或从中移除虚拟机时,系统会写入系统事件审核日志。

系统事件审核日志始终会写入;您无法配置、排除或停用它们。

如需查看会写入系统事件审核日志的服务列表以及有关哪些活动会生成这些日志的详细信息,请参阅具有审核日志的Google Cloud 服务

政策拒绝审核日志

当 Google Cloud 服务因违反安全政策而拒绝对用户或服务账号的访问时,系统会写入政策拒绝审核日志条目。

默认情况下,系统会生成政策拒绝审核日志,并向您的Google Cloud 项目收取日志存储费用。您无法停用政策拒绝审核日志,但可以使用排除项过滤条件来防止将政策拒绝审核日志存储在 Cloud Logging 中。

如需查看会写入政策拒绝审核日志的服务列表以及有关哪些活动会生成这些日志的详细信息,请参阅具有审核日志的Google Cloud 服务

审核日志条目结构

Cloud Logging 中的每个审核日志条目都是类型为 LogEntry 的对象。审核日志条目与其他日志条目的区别在于 protoPayload 字段;此字段包含用于存储审核日志数据的 AuditLog 对象。

如需了解如何读取和解读审核日志条目,以及查看审核日志条目示例,请参阅了解审核日志

日志名称

Cloud Audit Logs 日志名称包括以下内容:

  • 资源标识符,指明审核日志所属的 Google Cloud 项目或其他 Google Cloud 实体。

  • 字符串 cloudaudit.googleapis.com

  • 一个字符串,指明日志是包含管理员活动、数据访问、政策拒绝还是系统事件审核日志记录数据。

以下是审核日志名称,包括资源标识符的变量:

   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
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   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
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   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
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

审核日志中的调用方身份

审核日志会记录对Google Cloud 资源执行所记录操作的身份。调用方的身份保存在 AuditLog 对象的 AuthenticationInfo 字段中。

审核日志记录不会针对任何成功的访问或任何写入操作隐去调用方主账号邮箱。

对于因“权限遭拒”错误而失败的只读操作,审核日志记录可能会隐去调用方主账号邮箱,除非调用方是服务账号。

除了上面列出的条件外,以下条件适用于某些Google Cloud 服务:

  • BigQuery:除非满足某些条件,否则系统会在审核日志中隐去调用方身份和 IP 地址以及一些资源名称。

  • Cloud Storage:启用 Cloud Storage 使用情况日志后,Cloud Storage 会将使用情况数据写入 Cloud Storage 存储桶,进而为该存储桶生成数据访问审核日志。生成的数据访问审核日志会将其调用方身份隐去。

  • Firestore:如果 JSON Web 令牌 (JWT) 用于第三方身份验证,则 thirdPartyPrincipal 字段会包含该令牌的标头和载荷。例如,使用 Firebase Authentication 进行身份验证的请求的审核日志包含该请求的身份验证令牌
  • VPC Service Controls:对于政策拒绝审核日志,会进行以下隐去操作:

    • 调用方邮箱的部分内容可能会隐去,并替换为三个句点字符 ...

    • 属于网域 google.com 的某些调用方邮箱会隐去,并替换为 google-internal

  • 组织政策:调用方邮箱的部分内容可能会隐去,并替换为三个句点字符 ...

审核日志中的调用方 IP 地址

调用方的 IP 地址保存在 AuditLog 对象的 RequestMetadata.callerIp 字段中:

  • 对于来自互联网的调用方,该地址是公共 IPv4 或 IPv6 地址。
  • 对于在内部生产网络内从一个Google Cloud 服务向另一个服务发出的调用,callerIp 会隐去,替换为“private”。
  • 对于来自具有外部 IP 地址的 Compute Engine 虚拟机的调用方,callerIp 是虚拟机的外部地址。
  • 对于来自没有外部 IP 地址的 Compute Engine 虚拟机的调用方,如果该虚拟机与所访问的资源位于同一组织或项目中,则 callerIp 是该虚拟机的内部 IPv4 地址。否则,callerIp 会隐去,替换为“gce-internal-ip”。如需了解详情,请参阅 VPC 网络概览

查看审核日志

您可以查询所有审核日志,也可以按其审核日志名称来查询日志。审核日志名称包含您要查看审核日志记录信息的 Google Cloud 项目、文件夹、结算账号或组织的资源标识符。您的查询可以指定已编入索引的 LogEntry 字段。如需详细了解如何查询日志,请参阅在 Logs Explorer 中构建查询

您可以使用 Logs Explorer 查看过滤后的各个日志条目。如果您想使用 SQL 分析一组日志条目,请使用 Log Analytics 页面。如需了解详情,请参阅以下主题:

您可以使用Google Cloud 控制台、Google Cloud CLI 或 Logging API 在 Cloud Logging 中查看大多数审核日志。不过,对于与结算功能相关的审核日志,您只能使用 Google Cloud CLI 或 Logging API。

控制台

在 Google Cloud 控制台中,您可以使用 Logs Explorer 来检索 Google Cloud 项目、文件夹或组织的审核日志条目:

  1. 在 Google Cloud 控制台中,前往 Logs Explorer 页面:

    前往 Logs Explorer

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 选择现有的 Google Cloud 项目、文件夹或组织。

  3. 如需显示所有审核日志,请在查询编辑器字段中输入以下任一查询,然后点击运行查询

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. 如需显示特定资源和审核日志类型的审核日志,请在查询构建器窗格中执行以下操作:

    • 资源类型中,选择要查看其审核日志的 Google Cloud 资源。

    • 日志名称中,选择要查看的审核日志类型:

      • 对于管理员活动审核日志,选择 activity
      • 对于数据访问审核日志,选择 data_access
      • 对于系统事件审核日志,选择 system_event
      • 对于政策拒绝审核日志,选择 policy
    • 点击运行查询

    如果您没有看到这些选项,则表示 Google Cloud 项目、文件夹或组织中没有该类型的任何审核日志。

    如果您在尝试从日志浏览器中查看日志时遇到问题,请参阅问题排查信息。

    如需详细了解如何使用日志浏览器进行查询,请参阅在日志浏览器中构建查询

gcloud

Google Cloud CLI 为 Logging API 提供了命令行界面。在每个日志名称中提供有效的资源标识符。例如,如果您的查询包含 PROJECT_ID,则您提供的项目标识符必须引用当前选定的Google Cloud 项目。

如需读取 Google Cloud 项目级审核日志条目,请运行以下命令:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \
    --project=PROJECT_ID

如需读取文件夹级审核日志条目,请运行以下命令:

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \
    --folder=FOLDER_ID

如需读取组织级审核日志条目,请运行以下命令:

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \
    --organization=ORGANIZATION_ID

如需读取 Cloud Billing 账号级层审核日志条目,请运行以下命令:

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

向命令添加 --freshness 标志可读取超过 1 天的日志。

如需详细了解如何使用 gcloud CLI,请参阅 gcloud logging read

REST

构建查询时,请在每个日志名称中提供有效的资源标识符。例如,如果您的查询包含 PROJECT_ID,则您提供的项目标识符必须引用当前选定的Google Cloud 项目。

例如,要使用 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. 点击执行

存储和路由审核日志

Cloud Logging 使用日志存储桶作为容器,用于存储和整理日志数据。对于每个结算账号、Google Cloud 项目、文件夹和组织,Logging 都会自动创建两个日志存储桶(_Required_Default)以及具有相应名称的接收器

Cloud Logging _Required 存储桶会存储管理员活动审核日志和系统事件审核日志。您无法阻止存储管理员活动或系统事件审核日志。您也无法配置将日志条目路由到 _Required 存储桶的接收器。

管理员活动审核日志和系统事件审核日志始终存储在生成日志的项目的 _Required 存储桶中。

如果您将管理员活动审核日志和系统事件审核日志路由到其他项目,则这些日志不会通过目标项目的 _Default_Required 接收器进行传递。因此,这些日志不会存储在目标项目的 _Default 日志存储桶或 _Required 日志存储桶中。如需存储这些日志,请在目标项目中创建日志接收器。如需了解详情,请参阅将日志路由到支持的目标位置

默认情况下,_Default 存储桶会存储任何已启用的数据访问审核日志以及政策拒绝审核日志。为防止数据访问审核日志存储在 _Default 存储桶中,您可以停用这些日志。如需防止任何政策拒绝审核日志存储在 _Default 存储桶中,您可以通过修改其接收器的过滤条件将其排除。

您还可以使用接收器将审核日志条目路由到 Google Cloud 项目级的用户定义 Cloud Logging 存储桶或 Logging 外部的受支持目标位置。如需了解如何路由日志,请参阅将日志路由到支持的目标位置

配置日志接收器的过滤条件时,您需要指定要路由的审核日志类型:如需查看过滤示例,请参阅安全日志记录查询

如果您想路由某个 Google Cloud 组织、文件夹或结算账号及其子级的审核日志条目,请参阅汇总接收器概览

审核日志保留

如需详细了解 Logging 将保留日志条目多长时间,请参阅配额和限制:日志保留期限中的保留期限信息。

访问权限控制

IAM 权限和角色决定您能否在 Logging APILogs ExplorerGoogle Cloud CLI 中访问审核日志数据。

如需详细了解您可能需要的 IAM 权限和角色,请参阅使用 IAM 进行访问权限控制

配额和限制

如需详细了解日志记录用量限制(包括审核日志的大小上限),请参阅配额和限制

价格

Cloud Logging 不会对将日志路由到支持的目标位置收费;但目标位置可能会收取费用。除了 _Required 日志存储桶之外,Cloud Logging 会针对将日志流式传输到日志存储桶以及存储时间超过日志存储桶默认保留期限的情况收取费用。

Cloud Logging 不会针对复制日志、创建日志范围/分析视图,或通过 Logs Explorer/Log Analytics 页面发出的查询收取费用。

有关详情,请参阅以下文档:

后续步骤

  • 了解 Access Transparency,它会提供 Google Cloud 员工在访问您的 Google Cloud 内容时所执行的操作的日志。