本指南介绍如何使用 Google Cloud 控制台或 API 在 Cloud 项目、结算帐号、文件夹和组织中启用或停用部分或全部数据访问审核日志。
准备工作
在继续配置数据访问审核日志之前,请先了解以下信息:
重要提示:数据访问审核日志量可能很大。启用数据访问日志可能会导致您的 Cloud 项目因使用额外的日志而产生费用。如需了解价格信息,请参阅 Google Cloud 的运维套件价格:Cloud Logging。
重要提示:如果您已配置数据访问日志来跟踪对象的访问权限,则从 storage.cloud.google.com 进行的经过身份验证的浏览器下载可能会导致 403 响应。如需了解此问题的解决方案,请参阅 Cloud Storage 问题排查指南。
数据访问审核日志(BigQuery 除外)默认处于停用状态。如果您想针对 BigQuery 以外的 Google Cloud 服务写入数据访问审核日志,则必须明确启用这些日志。
数据访问审核日志存储在 _Default 存储桶中,除非您已将其路由到其他位置。如需了解详情,请参阅存储和路由审核日志。
数据访问审核日志可帮助 Google 支持团队排查您的帐号问题。因此,我们建议您尽可能启用数据访问审核日志。
配置概览
您可为 Google Cloud 资源和服务启用和配置数据访问审核日志的某些方面:
组织:您可以在组织中启用和配置数据访问审核日志,这适用于组织中所有现有的和新的 Cloud 项目和文件夹。
文件夹:您可以在文件夹中启用和配置数据访问审核日志,这适用于文件夹中的所有现有和新的 Cloud 项目。您无法停用已在项目的父级组织中启用的数据访问审核日志。
项目:您可以为单个 Cloud 项目配置数据访问审核日志。您无法停用已在父级组织或文件夹中启用的数据访问审核日志。
结算帐号:如需为结算帐号配置数据访问审核日志,请使用 Google Cloud CLI。如需详细了解如何将 gcloud CLI 与数据访问审核日志和结算帐号搭配使用,请参阅 gcloud beta billing accounts set-iam-policy 的参考文档。
默认配置:您可以在组织、文件夹或 Cloud 项目中指定默认数据访问审核日志配置,这些配置适用于将开始生成数据访问审核日志的未来 Google Cloud 服务。有关说明,请参阅设置默认配置。
服务:您可以指定要接收其审核日志的服务。例如,您可能想要接收来自 Compute Engine 的审核日志,但不想接收来自 Cloud SQL 的审核日志。如需查看可生成审核日志的 Google Cloud 服务的列表,请参阅具有审核日志的 Google 服务。
日志类型:您可以配置在数据访问审核日志中记录哪些类型的操作。数据访问审核日志分为三种:
ADMIN_READ:用于记录读取元数据或配置信息的操作。
DATA_READ:用于记录读取用户所提供数据的操作。
DATA_WRITE:用于记录写入用户所提供数据的操作。
例如,Cloud DNS 会写入所有三种类型的数据访问日志,但您可以将数据访问审核日志配置为仅记录 DATA_WRITE 操作。
豁免主帐号:您可以豁免特定主帐号记录其数据访问。例如,您可以豁免内部测试帐号,这样系统就不会记录其 Cloud Debugger 操作。如需查看有效主帐号(包括用户和群组)的列表,请参阅 Binding 类型参考文档。
您可以通过 IAM 审核日志控制台或 API 来配置数据访问审核日志。以下部分对这些方法进行了说明。
服务专属配置
如果同时存在适合所有 Google Cloud 服务 (allServices) 的配置和适合特定 Google Cloud 服务的配置,则最终的服务配置将是这两种配置的并集。换句话说:
您可为特定 Google Cloud 服务启用数据访问审核日志,但无法为已在适用范围更广的配置中启用该功能的 Google Cloud 服务停用数据访问审核日志。
您可为 Google Cloud 服务的数据访问审核日志添加额外信息类型,但无法移除已在适用范围更广的配置中指定的信息类型。
您可以将主帐号添加到豁免列表中,但无法从范围更广的配置中的豁免列表中移除它们。
对于 BigQuery Data Transfer Service,数据访问审核日志配置继承自默认审核日志配置。
Google Cloud 资源配置
您可以为 Cloud 项目、结算帐号、文件夹和组织配置数据访问审核日志。如果存在跨层次结构的 Google Cloud 服务配置,则生成的配置将是配置的并集。换句话说,在 Cloud 项目级别:
您可以为 Google Cloud 服务启用日志,但无法为已在父级组织或文件夹中启用的 Google Cloud 服务停用日志。
您可以启用各类信息,但无法停用已在父级组织或文件夹中启用的信息类型。
您可以将主帐号添加到豁免列表,但无法将其从父级组织或文件夹的豁免列表中移除。
在父级组织或文件夹级别,您可以为该组织或文件夹中的 Cloud 项目启用数据访问审核日志,即使 Cloud 项目中尚未配置数据访问审核日志也是如此。
访问权限控制
Identity and Access Management 角色和权限管理对 Logging 数据的访问权限,包括查看和管理底层数据访问审核日志配置的 IAM 政策。
如需查看或设置与数据访问配置关联的政策,您需要拥有在适当资源级层具有权限的角色。有关授予这些资源级层角色的说明,请参阅管理 Cloud 项目、文件夹和组织的访问权限。
如需设置 IAM 政策,您需要拥有具有 resourcemanager.RESOURCE_TYPE.setIamPolicy 权限的角色。
如需查看 IAM 政策,您需要拥有具有 resourcemanager.RESOURCE_TYPE.getIamPolicy 权限的角色。
重要提示:在 Google Cloud 控制台中查看 Cloud 项目或文件夹级别的数据访问配置时,如果您没有父组织或文件夹的 getIamPolicy 权限,则这些父实体中存在的所有数据访问配置都不会显示在 Google Cloud 控制台中。这些数据访问配置仍会应用于您查看的 Cloud 项目或文件夹中的所有 API 调用。
如需查看查看数据访问审核日志所需的权限和角色列表,请参阅使用 IAM 进行访问权限控制。
使用 Google Cloud 控制台配置数据访问审核日志
本部分介绍如何使用 Google Cloud 控制台配置数据访问审核日志。
您也可以使用 API 或 Google Cloud CLI 以编程方式执行这些任务;如需了解详情,请参阅使用 API 配置数据访问审核日志。
如需在 Google Cloud 控制台中访问审核日志配置选项,请按以下步骤操作:
在 Google Cloud 控制台中,选择 IAM 和管理 & gt; 审核日志:
转到“审核日志”
选择现有的 Cloud 项目、文件夹或组织。
启用审核日志
如需启用数据访问审核日志,请执行以下操作:
在数据访问审核日志配置表中,从服务列中选择一项或多项 Google Cloud 服务。
在日志类型标签页中,选择您要为所选服务启用的数据访问审核日志类型。
点击保存。
如果您已成功启用审核日志,则该表中将包含对勾标记 check_circle。
在以下示例中,您可以看到 Access Approval 服务启用了数据读取审核日志类型:
您还可以为生成数据访问审核日志的所有 Google Cloud 服务启用审核日志。在数据访问审核日志配置表中,选择所有 Google Cloud 服务。
请注意,此批量配置方法仅适用于当前可用于您的资源的 Google Cloud 服务。如果添加了新的 Google Cloud 服务,则该服务将沿用您的默认审核配置。
停用数据访问审核日志
如需停用数据访问审核日志,请执行以下操作:
在数据访问审核日志配置表中,选择一项或多项 Google Cloud 服务。
在信息面板的日志类型标签页中,选择要为所选服务停用的数据访问审核日志类型。
点击保存。
如果您已成功停用数据访问审核日志,该表将以短划线表示。所有已启用的数据访问审核日志都会以对勾标记 check_circle 表示。
设置豁免
您可以设置豁免项,以便控制哪些主帐号生成特定服务的数据访问审核日志。当您添加豁免主帐号时,系统不会为所选日志类型为其创建审核日志。
注意:如果您为审核日志类型的服务添加豁免主帐号,则即使该审核日志类型之前已停用,系统也会启用该类型。
如需设置豁免,请执行以下操作:
在数据访问审核日志配置表中,从服务列中选择一项 Google Cloud 服务。
在信息面板中选择豁免主帐号标签页。
在添加豁免主帐号中,输入您要免于为所选服务生成数据访问审核日志的主帐号。
您可以根据需要多次点击添加豁免主帐号按钮,以添加多个主帐号。
如需查看有效主帐号(包括用户和群组)的列表,请参阅 Binding 类型参考文档。
在已停用的日志类型中,选择要停用的数据访问审核日志类型。
点击保存。
如果您已成功将豁免主帐号添加到服务,数据访问审核日志配置表会在豁免主帐号列中显示数字。
如需从豁免列表中移除主帐号,请执行以下操作:
在数据访问审核日志配置表中,从服务列中选择一项 Google Cloud 服务。
在信息面板中选择豁免主帐号标签页。
将鼠标悬停在主帐号名称上,然后选择出现的删除图标 delete。
主帐号名称以删除线形式显示后,点击保存。
如需修改豁免主帐号的信息,请执行以下操作:
在数据访问审核日志配置表中,从服务列中选择一项 Google Cloud 服务。
在信息面板中选择豁免主帐号标签页。
展开 expand_more 主帐号名称。
根据需要为主帐号选择或取消选择数据访问审核日志类型。
点击保存。
设置默认配置
您可以设置一个配置,供 Cloud 项目、文件夹或组织中所有新的及现有的 Google Cloud 服务沿用。如果某项新的 Google Cloud 服务可用并且组织中的主帐号开始使用此默认配置,则应用此默认配置:该服务将沿用您已为其他 Google Cloud 服务设置的审核日志记录政策,从而确保捕获数据访问审核日志。
如需设置或修改默认配置,请执行以下操作:
点击设置默认配置。
在信息面板的日志类型标签页中,选择要启用或停用的数据访问审核日志类型。
点击保存。
在信息面板中选择豁免主帐号标签页。
在添加豁免主帐号中,输入您要免于为所选服务生成数据访问审核日志的主帐号。
您可以根据需要多次点击添加豁免主帐号按钮,以添加多个主帐号。
如需查看有效主帐号(包括用户和群组)的列表,请参阅 Binding 类型参考文档。
在已停用的日志类型中,选择要停用的数据访问审核日志类型。
点击保存。
使用 API 配置数据访问审核日志
本部分介绍如何使用 API 和 gcloud CLI 以编程方式配置数据访问审核日志。
许多此类任务也可以使用 Google Cloud 控制台执行;如需了解相关说明,请参阅本页面上的使用 Google Cloud 控制台配置数据访问审核日志。
IAM 政策对象
如需使用 API 配置数据访问审核日志,您必须修改与 Cloud 项目、文件夹或组织关联的 IAM 政策。审核日志配置位于政策的 auditConfigs 部分:
如需了解详情,请参阅 IAM 政策类型。
下面的部分更详细地介绍了 AuditConfig 对象。如需了解用于更改配置的 API 和 gcloud CLI 命令,请参阅 getIamPolicy 和 GTVS
AuditConfig 个对象
审核日志配置包含 AuditConfig 对象列表。每个对象针对一项服务配置日志,也可以针对所有服务建立范围更广的配置。每个对象均与如下内容类似:
SERVICE 是服务名称(例如 "appengine.googleapis.com"),或者是特殊值 "allServices"。如果配置未提及特定服务,则范围更广的配置将用于该服务。如果没有配置,则不会为该服务启用数据访问审核日志。 如需查看服务名称列表,请参阅日志服务。
AuditConfig 对象的 auditLogConfigs 部分是一个包含 0 到 3 个对象的列表,其中每个对象都用于配置一类审核日志信息。如果您忽略列表中的某一种类型,则不会为该服务启用该类型的日志信息。
PRINCIPAL 是不为其收集数据访问审核日志的用户。Binding 类型介绍了不同类型的主帐号,包括用户和群组,但并非所有主帐号都可用于配置数据访问审核日志。
以下是 JSON 和 YAML 格式的审核配置示例。YAML 格式是使用 Google Cloud CLI 时的默认格式。
常见配置
以下是 Cloud 项目的一些常见审核日志配置。
启用所有数据访问审核日志
以下 auditConfigs 部分用于为所有服务和主帐号启用数据访问审核日志:
启用一项服务和一种信息类型
以下配置会为 Cloud SQL 启用 DATA_WRITE 数据访问审核日志:
停用所有数据访问审核日志
如需停用 Cloud 项目中的所有数据访问审核日志(BigQuery 除外),请将新 IAM 政策中的 auditConfigs: 部分留空:
如果您从新政策中彻底移除 auditConfigs 部分,则 setIamPolicy 不会更改现有的数据访问审核日志配置。如需了解详情,请参阅 Firestore 更新掩码。
BigQuery 数据访问审核日志无法停用。
getIamPolicy 和 setIamPolicy
您可以使用 Resource Manager API getIamPolicy 和 setIamPolicy 方法来读取和写入 IAM 政策。我们提供多种特定方法供您选择:
Resource Manager API 提供以下方法:
Google Cloud CLI 具有以下 Resource Manager 命令:
注意:调用 projects.getIamPolicy 或 projects get-iam-policy 时,结果仅显示 Cloud 项目中设置的政策,而不显示沿用自父级组织或文件夹的政策。
无论您选择哪种方法,都请按以下三个步骤操作:
使用一种 getIamPolicy 方法来读取当前政策。将政策保存为临时文件。
修改临时文件中的政策。仅更改(或添加)auditConfigs 部分。
使用一种 setIamPolicy 方法将已修改的政策写入临时文件。
如果 Resource Manager 检测到在您执行第一步中的读取操作后其他人更改了政策,则 setIamPolicy 将会失败。如果发生这种情况,请重复上述三个步骤。
注意:您修改后的 IAM 政策将会替换当前政策。 如果更改了政策中与审核日志记录无关的部分,则可能会导致您的 Cloud 项目无法访问。
示例
以下示例演示了如何使用 gcloud 命令和 Resource Manager API 配置项目的数据访问审核日志。
如需配置组织数据访问审核日志,请将命令和 API 方法的“项目”版本替换为“组织”版本。
注意:请严格按照说明操作。您正在修改的政策对象中包含有关谁可以访问您的资源的关键信息。如果不小心更改了此类信息,可能会导致您的资源不可用。
setIamPolicy 更新掩码
本部分介绍了 setIamPolicy 方法中 updateMask 参数的重要性,还介绍了为何必须谨慎使用 gcloud CLI set-iam-policy 命令,以免对 Cloud 项目或组织造成意外损害。
setIamPolicy API method 使用 updateMask 参数来控制要更新哪些政策字段。例如,如果掩码不包含 bindings,那么您就不会意外更改政策的该部分。另一方面,如果掩码包含 bindings,则该部分始终都会更新。如果您未为 bindings 添加更新的值,则该部分会从政策中完全移除。
gcloud projects set-iam-policy 命令(调用 setIamPolicy)不允许您指定 updateMask 参数。取而代之的是,该命令会按以下方式计算 updateMask 的值:
updateMask 始终包含字段 bindings 和 etag。
如果 set-iam-policy 中提供的政策对象包含其他任何顶级字段(例如 auditConfigs),则这些字段将添加到 updateMask 中。
由于存在上述规则,set-iam-policy 命令具有以下行为:
如果您在新政策中省略了 auditConfigs 部分,则 auditConfigs 部分的先前值(如果有)不会更改,因为更新掩码中不包含此部分。这一行为无害,但可能会产生混淆。
如果您在新政策对象中省略 bindings,则系统会从政策中移除 bindings 部分,因为更新掩码中存在此部分。这是非常有害的,会导致所有主帐号失去对 Cloud 项目的访问权限。
如果您在新政策对象中省略 etag,则系统可能会停用对政策并发更改的检查,而且可能导致您的更改意外覆盖其他人的更改。