Cloud Audit Logs 概览

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

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

生成审核日志的 Google 服务

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

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

审核日志类型

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

管理员活动审核日志

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

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

数据访问审核日志

数据访问审核日志包含用于读取资源配置或元数据的 API 调用,以及用户进行的用于创建、修改或读取用户所提供资源数据的 API 调用。

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

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

系统事件审核日志

系统事件审核日志包含修改资源配置的 Google Cloud 操作所对应的日志条目。系统事件审核日志是 Google 系统生成的;而不是通过直接用户操作生成的。

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

政策拒绝审核日志

当 Google Cloud 服务因违反安全政策而访问用户或服务帐号时,系统会记录政策拒绝审核日志。安全政策由 VPC Service Controls 确定,后者向 Cloud Logging 提供政策拒绝审核日志。

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

审核日志条目结构

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

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

日志名称

Cloud Audit Logs 日志名称包含资源标识符,用于指明 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
   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 组织中的服务帐号时;在这种情况下,电子邮件地址不会被隐去。

除以上所列的条件后,以下情况将适用于某些 Google Cloud 服务:

  • 旧版 App Engine API:不收集身份信息。

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

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

  • Firestore:如果 JSON Web 令牌 (JWT) 用于第三方身份验证,则 thirdPartyPrincipal 字段会包含该令牌的标头和载荷。例如,使用 Firebase Authentication 进行身份验证的请求的审核日志包含该请求的身份验证令牌

  • VPC Service Controls:对于政策拒绝审核日志,会进行以下隐去:

    • 部分来电者电子邮件地址可能会被遮盖,并替换为三个英文句点字符 ...

    • 去掉了属于网域 google.com 的一些来电者电子邮件地址,并将其替换为 google-internal

    • 不隐去 Google 管理的服务帐号的来电者电子邮件地址。

如果您使用 Google Cloud Console 的“活动”页面查看审核日志,则对于身份被遮盖或为空的日志条目,系统会显示 User (anonymized)

查看审核日志

如需查询审核日志,您需要知道审核日志名称,其中包含您要查看其审核日志记录信息的 Cloud 项目、文件夹、结算帐号或组织的资源标识符。在查询中,您可以进一步指定其他已编入索引的 LogEntry 字段,例如 resource.type。如需详细了解如何查询,请参阅在日志浏览器中构建查询

您可以使用 Cloud Console、Google Cloud CLI 或 Logging API 在 Cloud Logging 中查看审核日志。

控制台

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

  1. 在控制台中,转到日志记录 & 日志浏览器页面。

    转到日志浏览器

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

  3. 查询构建器窗格中,执行以下操作:

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

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

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

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

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

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

gcloud

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

如需读取 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

API

构建查询时,请在每个日志名称中提供有效的资源标识符。例如,如果您的查询包含 PROJECT_ID,则您提供的项目标识符必须引用当前选定的 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 项目、文件夹或组织的活动页面中查看缩写的审核日志条目。实际审核日志条目包含的信息量可能超过活动页面中显示的信息。

如需在控制台中查看缩写的审核日志条目,请执行以下操作:

  1. 转到活动页面:

    转到“活动”页面

  2. 在项目选择器中,选择要查看其审核日志条目的 Cloud 项目、文件夹或组织。

  3. 过滤条件面板中,选择要查看的条目。

在“活动”页面中,如果系统在审核日志条目中遮盖用于执行记录操作的身份,则会显示 User (anonymized)。如需了解详情,请参阅此页上的审核日志中的调用方身份

存储和路由审核日志

Cloud Logging 使用日志存储桶作为容器,用于存储和整理日志数据。对于每个 Cloud 项目、文件夹和组织,Logging 都会自动创建两个日志存储桶:_Required_Default,并相应地命名为接收器

Cloud Logging _Required 存储桶会提取并存储管理员活动审核日志和系统事件审核日志。您不能配置 _Required 存储桶或其中的任何日志数据。

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

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

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

如果想要路由某个 Google Cloud 组织,文件夹或结算帐号的审核日志条目,请参阅配置汇总接收器

审核日志保留

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

访问权限控制机制

IAM 权限和角色决定了您能否访问 Logging API日志浏览器Google Cloud CLI 中的审核日志数据。

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

配额和限制

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

价格

如需了解 Cloud Logging 价格,请参阅 Google Cloud 的运维套件价格:Cloud Logging

后续步骤