如何导出 Google Cloud 审计日志

如何导出 Google Cloud 审计日志

SOC Prime Team
SOC Prime Team linkedin icon 关注

使用 gcloud logging read 并在 cloudaudit.googleapis.com 上应用过滤器,或者在 Logs Explorer 中运行相同的查询并将结果下载为 JSON:

gcloud logging read 'logName:"cloudaudit.googleapis.com" AND timestamp>="2026-10-19T00:00:00Z" AND timestamp<"2026-10-20T00:00:00Z"' 

  --project=my-project --format=json > gcp_audit_1019.json

管理活动审计日志始终开启并保留400天。数据访问日志默认关闭,除了BigQuery默认开启,一旦启用则保留30天。

云审计日志记录谁在您的 Google Cloud 项目中更改了什么:IAM 授权、新的服务帐号密钥、防火墙更改、不寻常区域中的 VM 启动。Prime Core 拥有140条用于 Google Cloud 审计日志的检测规则,映射到74个MITRE ATT&CK技术。其中包括:滥用云账户 (T1078.004)、额外凭证如新的服务帐号密钥 (T1098.001) 和篡改日志记录本身 (T1562.008)。

免费开始使用

开始之前

知道您需要哪个审计日志。

类型默认开启?保留内容
管理活动始终,无法禁用400天配置和IAM更改
系统事件始终400天Google系统在您的资源上采取的行动
数据访问否(除了BigQuery)30天数据和元数据的读取
策略拒绝Yes30天被安全策略阻止的请求

如果问题是“谁读了这个bucket?”而数据访问日志从未启用,那么答案不在云日志中。

权限。 日志查看者(角色/logging.viewer)覆盖管理活动、系统事件和策略拒绝。数据访问日志需要私有日志查看者(角色/logging.privateLogViewer)。

范围。 审计日志按项目存在。组织和文件夹级的活动有其自己的日志。使用–organization=<ORG_ID>或–folder=<FOLDER_ID>而不是–project进行查询。

选项1:日志资源管理器

在控制台中,打开 日志 → 日志资源管理器, 输入 logName:”cloudaudit.googleapis.com”,设置时间范围,运行查询,然后将结果下载为 JSON。下载有上限。对于更大范围,使用 gcloud。

选项2:gcloud logging read

顶部的命令是基本形式。三个细节可以节省时间。

始终在过滤器中放入时间窗口。 没有时间戳条件,gcloud logging read 会静默限制自己到最后一天(新鲜度默认为1d)。这几乎让所有人吃惊。

在需要时提高限制。 对于大窗口,添加 –limit=100000(或适合的数字)。

为了上传,进行扁平化。 输出是一个 JSON 数组。将其转换为每行一个条目:

jq -c '.[]' gcp_audit_1019.json > gcp_audit_1019.jsonl

有用的更窄的过滤器:

# 仅管理活动

logName="projects/my-project/logs/cloudaudit.googleapis.com/activity"


# 新的服务账户密钥

protoPayload.methodName="google.iam.admin.v1.CreateServiceAccountKey"


# 某个身份做的一切

protoPayload.authenticationInfo.principalEmail="suspicious-sa@my-project.iam.gserviceaccount.com"

选项3:从接收器批量获取历史记录

如果您的组织通过接收器将审计日志路由到Cloud Storage或BigQuery,则该副本可能回溯得更远。用gcloud storage cp拉取文件,或者查询BigQuery并将结果导出为JSON。

需要查找的内容

方法或字段为什么重要
CreateServiceAccountKey攻击者可以带走的长期凭证
SetIamPolicy角色授权;注意 roles/owner、roles/editor 和 allUsers
UpdateSink, DeleteSink, new exclusions某人重定向或静音日志
在不寻常地区的 v1.compute.instances.insert经典的加密挖掘足迹
状态代码为7(PERMISSION_DENIED)的峰值被盗凭证在测试它们能做什么

在 LogTotal 中上传、清理和查看

  1. 上传。 打开 logtotal.com 并拖入 .jsonl 文件。
  2. 清理。 [what gets masked: principal emails, project IDs, IPs, resource names]. Look it over before you continue.
  3. 查看。 

当出错时

症状可能的原因Fix
只有过去24小时的数据返回过滤器中没有时间戳,因此应用了 –freshness=1d将窗口放入过滤器中
没有数据访问条目数据访问日志从未启用预期如此;为将来启用它们
读取日志时 PERMISSION_DENIED数据访问缺少私有日志查看者请求角色/logging.privateLogViewer
结果提前结束默认或显式限制达到了提高限制,或拆分窗口
组织级更改缺失您查询了一个项目使用 –organization

FAQ

Google Workspace 日志在这里吗?

只有当您的组织与 Google Cloud 共享 Workspace 数据时,且在组织级别。

GKE 的情况如何?

GKE 也将其 Kubernetes 审计日志写入云审计日志

加入 SOC Prime 的 Detection as Code 平台 以提高对与您的业务最相关的威胁的可见性。为了帮助您开始并带来即时价值,现在与 SOC Prime 专家预约会议。