重要提示:
请务必仅在桌面设备/笔记本电脑上完成此实操实验。
每个实验仅允许尝试 5 次。
温馨提示:第一次尝试时,您可能无法答对所有问题,甚至可能需要重做任务,请不必担心,这都是学习过程的一部分。
实验一旦开始,计时器就无法暂停。1 小时 30 分钟后,实验将结束,您需要重新开始。
如需了解详情,请阅读实验技术提示。
活动概览
Google Cloud 服务会写入审核日志,记录您 Google Cloud 资源内的管理活动和访问情况。审核日志条目可帮助您解答 Google Cloud 项目中的疑问:谁在何时、何地执行了何种操作。启用审核日志可帮助您的安全、审核与合规实体,监控 Google Cloud 数据与系统是否存在潜在漏洞或外部数据滥用的情况。
在本实验中,您将通过调查审核日志,识别涉及云资源的可疑活动模式。
场景
Cymbal Bank 已正式迁移至其混合云解决方案,并在新云环境中成功部署了工作流。遗憾的是,安全工程团队收到了一条高严重级提醒,涉及对其多个云资源的未授权访问。这一情况令人担忧,因为恶意方可能利用被入侵的云资源窃取数据,并对其他系统发起攻击。这是您第一次遭遇安全事件。您的团队负责人 Chloe 认为这是一次宝贵的机会,可以帮助您了解突发事件响应所涉及的流程和程序。您被指派跟随并观察 Hannah,她是安全工程部门下属突发事件响应团队中的一名突发事件响应人员。Hannah 已为您提供该提醒日志的访问权限,您将使用这些日志来调查此次恶意活动。为了更深入了解这起安全突发事件,您搭建了一个测试环境,用于重现该突发事件并分析相关证据。您将使用两个不同的用户账号:一个账号用于生成恶意活动,另一个账号用于调查该活动。
以下是任务的具体步骤。首先,您需要通过第一个用户账号生成活动,重现这起安全突发事件。接下来,您需要导出日志,用于进一步分析。然后,您需要继续重现该突发事件,并生成更多用户活动。最后,您需要使用 BigQuery 来分析日志。
设置
点击“开始实验”之前
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展活动,免受模拟或演示环境的限制。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。左侧是实验详细信息面板,其中包含以下各项:
- 剩余时间
-
打开 Google Cloud 控制台按钮
- 进行该实验时必须使用的临时凭证
- 帮助您逐步完成本实验所需的其他信息(如果需要)
注意:如果该实验需要付费,系统会打开一个弹出式窗口供您选择支付方式。
-
如果您使用的是 Chrome 浏览器,点击打开 Google Cloud 控制台(或右键点击并选择在无痕式窗口中打开链接)。系统会在新的浏览器标签页中打开登录页面。
提示:您可以将这些标签页分别放在不同的窗口中,并排显示,以便轻松切换。
注意:如果您看到选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的 Google Cloud 用户名,然后将其粘贴到登录对话框中。点击下一步。
{{{user_0.username | "Google Cloud username"}}}
您也可以在实验详细信息面板中找到 Google Cloud 用户名。
- 复制下面的 Google Cloud 密码,然后将其粘贴到欢迎对话框中。点击下一步。
{{{user_0.password | "Google Cloud password"}}}
您也可以在实验详细信息面板中找到 Google Cloud 密码。
重要提示:您必须使用实验提供的凭证。请勿使用您的 Google Cloud 账号凭证。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
- 依次点击后续页面,完成以下步骤:
- 接受条款及条件
- 由于这是临时账号,请勿添加账号恢复选项或双重验证
- 请勿用其注册免费试用服务
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:您可以点击左上角的导航菜单来查看列有 Google Cloud 产品和服务的菜单。
激活 Cloud Shell
Cloud Shell 是一个在线开发和运营环境,您可通过浏览器随时随地访问。它支持通过命令行访问您的 Google Cloud 资源。
- 点击 Google Cloud 控制台右上角的激活 Cloud Shell (
)。系统可能会提示您点击继续。
Cloud Shell 启动后,您会看到一条消息,显示此次会话的 Google Cloud 项目 ID:
Your Cloud Platform project in this session is set to YOUR_PROJECT_ID
Google Cloud 的命令行工具 gcloud 已预安装在 Cloud Shell 上,且支持 Tab 自动补全功能。如需访问 Google Cloud,您必须先授权 gcloud。
- 使用以下命令列出活跃账号名称:
gcloud auth list
-
系统会显示一个弹出式窗口,要求您为 Cloud Shell 提供授权。点击授权。
-
您的输出结果现在应如下所示:
输出:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- 使用以下命令列出项目 ID:
gcloud config list project
输出示例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
注意:如需查看 gcloud 的完整文档,请在 Google Cloud 中参阅 gcloud CLI 概览指南。
任务 1. 生成账号活动
注意:请确保您当前使用的是用户名 1: Google Cloud 控制台。
在此任务中,您将通过创建和删除云资源,生成账号活动,这些活动将以 Cloud Audit Logs 的形式供您查看。
- 将以下命令复制到 Cloud Shell 终端中:
gcloud storage buckets create gs://$DEVSHELL_PROJECT_ID
echo "this is a sample file" > sample.txt
gcloud storage cp sample.txt gs://$DEVSHELL_PROJECT_ID
gcloud compute networks create mynetwork --subnet-mode=auto
export ZONE=$(gcloud compute project-info describe \
--format="value(commonInstanceMetadata.items[google-compute-default-zone])")
gcloud compute instances create default-us-vm \
--machine-type=e2-micro \
--zone=$ZONE --network=mynetwork
gcloud storage rm --recursive gs://$DEVSHELL_PROJECT_ID
- 按 ENTER 键。
点击检查我的进度,验证您是否已正确完成此任务。
生成账号活动
任务 2. 导出审核日志
注意:请确保您当前使用的是用户名 1: Google Cloud 控制台。
您在上一任务中生成的活动已记录为审核日志。在此任务中,您需要将这些日志导出到 BigQuery 数据集,以供进一步分析。
- 在 Google Cloud 控制台标题栏的搜索字段中输入 Logs Explorer,然后点击搜索结果中的 Logs Explorer。Logs Explorer 页面会随即打开。
- 点击可观测性日志记录旁边的固定。
- 导出日志时,当前过滤条件将应用于导出内容。将以下查询复制到查询构建器中:
logName = ("projects/{{{project_0.project_id | Project ID}}}/logs/cloudaudit.googleapis.com%2Factivity")
- 点击运行查询。查询结果应显示在查询结果窗格中。此查询会过滤您项目中的 Cloud Audit Logs 日志。
- 在查询编辑器字段下,点击操作 > 创建接收器。创建日志路由接收器对话框会随即打开。
注意:如果浏览器窗口较窄,界面可能会显示更多,而不是更多操作。
- 在创建日志路由接收器对话框中,指定以下设置,并将所有其他设置保留为默认值:
| 部分 |
字段:值 |
| 接收器详情 |
接收器名称:AuditLogsExport 点击下一步。 |
| 接收器目标位置 |
选择接收器服务:BigQuery 数据集 选择 BigQuery 数据集:创建新的 BigQuery 数据集。 创建数据集对话框会随即打开。 |
| 创建数据集 |
数据集 ID:auditlogs_dataset 点击创建数据集。 创建数据集对话框关闭,您将返回接收器目标位置对话框。 |
| 接收器目标位置 |
点击下一步。 取消勾选使用分区表复选框(如果已勾选),然后点击下一步。 |
| 选择要包含在接收器中的日志 |
请注意预先填充的构建包含项过滤条件:logName=("projects/[PROJECT ID]/logs/cloudaudit.googleapis.com%2Factivity") 点击下一步。 点击创建接收器。 返回 Logs Explorer 页面。 |
- 在 Logging 导航窗格中,点击日志路由器,在日志路由器接收器列表中查看 AuditLogsExport 接收器。
- 在 AuditLogsExport 接收器所在行,点击更多操作 (
) > 查看接收器详细信息,查看您创建的 AuditLogsExport 接收器的相关信息。接收器详细信息对话框会随即打开。
- 查看完接收器信息后,点击取消,关闭接收器详情对话框。
现在,所有后续日志都将导出到 BigQuery,并可使用 BigQuery 工具对审核日志数据执行分析。导出操作不会导出已有的日志条目。
点击检查我的进度,验证您是否已正确完成此任务。
导出审核日志
任务 3. 生成更多账号活动
注意:请确保您当前使用的是用户名 1: Google Cloud 控制台。
在此任务中,您将通过创建和删除云资源,生成更多账号活动,然后在 BigQuery 中访问相关日志,以便从中提取更多分析洞见。
- 将以下命令复制到 Cloud Shell 终端中:
gcloud storage buckets create gs://$DEVSHELL_PROJECT_ID
gcloud storage buckets create gs://$DEVSHELL_PROJECT_ID-test
echo "this is another sample file" > sample2.txt
gcloud storage cp sample.txt gs://$DEVSHELL_PROJECT_ID-test
export ZONE=$(gcloud compute project-info describe \
--format="value(commonInstanceMetadata.items[google-compute-default-zone])")
gcloud compute instances delete --zone=$ZONE \
--delete-disks=all default-us-vm
这些命令会生成更多活动,可在导出到 BigQuery 的审核日志中查看。
- 按 ENTER 键。
出现提示时,输入 Y,然后按 Enter 键。请注意,您创建了两个存储桶并删除了一个 Compute Engine 实例。
- 几分钟后,系统会显示提示,请在 Cloud Shell 终端中输入以下命令,继续操作:
gcloud storage rm --recursive gs://$DEVSHELL_PROJECT_ID
gcloud storage rm --recursive gs://$DEVSHELL_PROJECT_ID-test
- 按 ENTER 键。
请注意,您删除了这两个存储桶。
点击检查我的进度,验证您是否已正确完成此任务。
生成更多账号活动
任务 4. 以第二个用户身份登录
您需要使用实验详细信息面板中提供的第二个用户账号登录 Google Cloud 控制台,以切换当前 Google Cloud 账号。您将使用此用户账号来分析日志。
- 在 Google Cloud 控制台中,点击屏幕右上角的用户图标,然后点击添加账号。
- 返回实验详细信息面板,复制 Google Cloud 用户名 2: 和密码。然后,将用户名和密码粘贴到 Google Cloud 控制台的登录对话框中。
任务 5. 分析管理员活动日志
注意:请确保您当前使用的是 username 2: Google Cloud 控制台。
在此任务中,您需要查看在上一任务中生成的管理员活动日志。您的目标是通过识别和应用过滤条件,隔离可能表明存在可疑活动的日志。这样,您就可以导出该日志子集,并简化针对潜在问题开展日志分析的流程。
管理员活动日志会记录修改资源配置或元数据的 API 调用或其他管理操作对应的日志条目。例如,日志会记录虚拟机实例和 App Engine 应用的创建时间,以及权限的更改时间。
注意:您可以在日志查看器、Cloud Logging 和 Cloud SDK 中查看审核日志条目。您还可以将审核日志条目导出到 Pub/Sub、BigQuery 或 Cloud Storage。
- 在 Google Cloud 控制台标题栏的搜索字段中输入 Logs Explorer,然后点击搜索结果中的 Logs Explorer。Logs Explorer 页面会随即打开。
- 点击可观测性日志记录旁边的固定。
- 确保显示查询切换按钮已启用。系统随即会打开查询构建器字段。
- 复制以下命令并将其粘贴到查询构建器字段中。请注意命令中的 Google Cloud 项目 ID。
logName = ("projects/{{{project_0.project_id | "PROJECT_ID"}}}/logs/cloudaudit.googleapis.com%2Factivity")
- 点击运行查询。
- 在查询结果中,找到指示 Cloud Storage 存储桶已被删除的日志条目,其中会包含 storage.buckets.delete 摘要字段。日志结果中包含的摘要字段用于突出显示与该日志条目相关的重要信息。
此条目显示系统通过 storage.googleapis.com 调用了 storage.buckets.delete 方法来删除存储桶。存储桶名称与您的项目 ID 相同:。
- 在此条目中,点击 storage.googleapis.com 文本,然后选择显示匹配条目。查询结果现在应该只显示与已创建和删除的 Cloud Storage 存储桶相关的六条条目。
- 在“查询编辑器”字段中,请注意查询构建器中添加了 protoPayload.serviceName="storage.googleapis.com" 行,它会将查询结果过滤为仅匹配 storage.googleapis.com 的条目。
- 在这些查询结果中,点击其中一条条目中的 storage.buckets.delete,然后选择显示匹配条目。
请注意,查询构建器文本中又添加了一行:
logName = ("projects/{{{project_0.project_id | "PROJECT_ID"}}}/logs/cloudaudit.googleapis.com%2Factivity")
protoPayload.serviceName="storage.googleapis.com"
protoPayload.methodName="storage.buckets.delete"
查询结果现在应显示与已删除的 Cloud Storage 存储桶相关的所有条目。您可以使用此方法轻松定位特定事件。
- 在查询结果中,点击以下行旁边的展开箭头 >,展开 storage.buckets.delete 事件:

- 点击以下行旁边的展开箭头 >,展开 authenticatitonInfo 字段:

请注意 principalEmail 字段,该字段会显示执行此操作的用户账号的邮箱,即您用来生成用户活动的用户 1 账号。
任务 6. 使用 BigQuery 分析审核日志
注意:请确保您当前使用的是 username 2: Google Cloud 控制台。
您已生成日志并将其导出到 BigQuery 数据集。在此任务中,您将使用查询编辑器分析日志。
注意:将日志导出到 BigQuery 数据集时,Cloud Logging 会创建按日期分区表,用于存储导出的日志条目。日志条目会被放入相应表中,这些表的名称基于条目的日志名称生成。
打开 BigQuery 控制台
-
在 Google Cloud 控制台中,点击导航菜单下的 BigQuery。
您会看到欢迎在 Cloud 控制台中使用 BigQuery 对话框,其中会显示快速入门指南的链接以及界面更新。
-
点击完成以关闭对话框。
- 在传统版探索器窗格中,点击项目 旁边的展开箭头。系统会显示 auditlogs_dataset 数据集。
注意:如果未显示 auditlogs_dataset,请重新加载浏览器窗口。
接下来,验证 BigQuery 数据集是否具有适当的权限,以允许导出写入器存储日志条目。
-
点击 auditlogs_dataset 数据集。
-
在 auditlogs_dataset 工具栏中,点击共享下拉菜单,然后选择管理权限。
-
在“auditlogs_dataset”的共享权限页面上,展开 BigQuery Data Editor 部分。
-
确认用于日志导出的服务账号已被列入权限列表。服务账号类似于:service-xxxxxxxx@gcp-sa-logging.iam.gserviceaccount.com
配置日志导出时,系统会自动分配此权限,因此,这是检查日志导出是否已配置完成的一种有效方法。
-
点击关闭以关闭共享数据集窗口。
-
在传统版探索器窗格中,点击 auditlogs_dataset 数据集旁边的展开箭头,查看 cloudaudit_googleapis_com_acitivty 表。此表包含您导出的日志。
-
选择 cloudaudit_googleapis_com_acitivty 表。表架构随即显示。花点时间查看表架构和详细信息。
-
展开打开方式下拉菜单,然后选择 SQL 查询 > 新标签页。

- 在查询构建器的未命名查询标签页中,删除所有现有文本,然后复制并粘贴以下命令:
SELECT
timestamp,
resource.labels.instance_id,
protopayload_auditlog.authenticationInfo.principalEmail,
protopayload_auditlog.resourceName,
protopayload_auditlog.methodName
FROM
`auditlogs_dataset.cloudaudit_googleapis_com_activity_*`
WHERE
PARSE_DATE('%Y%m%d', _TABLE_SUFFIX) BETWEEN
DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND
CURRENT_DATE()
AND resource.type = "gce_instance"
AND operation.first IS TRUE
AND protopayload_auditlog.methodName = "v1.compute.instances.delete"
ORDER BY
timestamp,
resource.labels.instance_id
LIMIT
1000;
该查询会返回过去 7 天内删除虚拟机的用户。
- 点击运行。
几秒钟后,BigQuery 会返回过去 7 天内用户每次删除 Compute Engine 虚拟机的操作记录。您应该会看到一条条目,正是您在之前的任务中以用户 1 身份生成的活动。请注意,BigQuery 只显示您创建导出任务之后发生的活动。
- 在未命名查询标签页中,用以下内容替换之前的查询:
SELECT
timestamp,
resource.labels.bucket_name,
protopayload_auditlog.authenticationInfo.principalEmail,
protopayload_auditlog.resourceName,
protopayload_auditlog.methodName
FROM
`auditlogs_dataset.cloudaudit_googleapis_com_activity_*`
WHERE
PARSE_DATE('%Y%m%d', _TABLE_SUFFIX) BETWEEN
DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND
CURRENT_DATE()
AND resource.type = "gcs_bucket"
AND protopayload_auditlog.methodName = "storage.buckets.delete"
ORDER BY
timestamp,
resource.labels.instance_id
LIMIT
1000;
该查询会返回过去 7 天内删除 Cloud Storage 存储桶的用户。您应该会看到两条条目,正是您在之前的任务中以用户 1 身份生成的活动。
- 点击运行。
在 BigQuery 中分析审核日志的功能非常强大。在本活动中,您只查看了两条查询审核日志的示例。
点击检查我的进度,验证您是否已正确完成此任务。
使用 BigQuery 分析审核日志
总结
太棒了!您已在 Logs Explorer 中成功执行查询。然后,您导出了日志并创建了一个数据集,且在 BigQuery 中对该数据集进行了分析。
您已展示如何使用审核日志过滤各类恶意活动,然后在 BigQuery 中进一步分析这些日志,从而完成对威胁的分析。
结束实验
在结束实验之前,请确保您已完成所有任务。准备就绪后,点击结束实验,然后点击提交。
结束实验后,您将无法再访问实验环境,也无法再访问您在其中完成的工作成果。
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名称和产品名称可能是其各自相关公司的商标。