AWS CloudTrail 基础:什么是 CloudTrail,事件类型,区域与全局服务

如果你问我,在 AWS 安全里最容易被低估的服务是什么?我会毫不犹豫地说:CloudTrail。很多人把它当成“日志开关”,打开就完事了。但等你真正排查一次 Secret 泄露,才知道 CloudTrail 到底有多重要。

CloudTrail 到底是什么?

说白了,CloudTrail 就是 AWS 的 API 监控录像机。它记录每一个 API 调用:谁、什么时候、从哪、做了什么操作、结果如何。这些记录就叫“事件”(Event)。

我在项目中遇到过好几次:开发说没动过 IAM,结果密钥被轮换了。查 CloudTrail 才发现是某个自动化脚本误调用了 UpdateAccessKey。没有 CloudTrail,这种事根本说不清。

CloudTrail 默认是开启的(至少对管理事件),它会保留 90 天的查看历史。但你也可以创建“跟踪”(Trail)把日志存到 S3,永久保留。

一定要记住: CloudTrail 不是安全监控工具,它是“事件溯源工具”。你想知道发生了什么事,靠它;你想证明没发生什么事,也得靠它。

事件类型:管理事件 vs 数据事件

CloudTrail 把事件分成两大类。这个分类很重要,因为价格和配置方式完全不同。

特性管理事件数据事件
范围对 AWS 资源的“控制面”操作对 AWS 资源的“数据面”操作
例子创建 EC2、修改 IAM 策略、删除 S3 BucketGetObject、PutObject、Decrypt(KMS)
默认是否记录是(免费保留 90 天)否(需要额外开启)
是否收费记录到跟踪后按量计费记录到跟踪后按事件量计费(通常比管理事件贵)
作用范围区域 + 全局服务仅指定资源或指定类型

管理事件(Management Events)

管理事件记录的是“谁在控制 AWS 资源”。比如创建、修改、删除资源。这是 CloudTrail 默认就帮你记录的部分,不需要额外配置。我个人习惯把所有管理事件都记录到 S3,保留至少一年。成本很低,但关键时刻救命。

数据事件(Data Events)

数据事件记录的是“谁在使用资源里面的内容”。比如读取 S3 里的文件、调用 KMS 解密、调用 Lambda 函数。这些事件量级非常大,如果全开,费用会相当可观。

我记得有一次排查 Secrets Manager 的访问记录,发现某个角色在凌晨调用了很多次 GetSecretValue。没有开启数据事件跟踪,这些调用就完全不可见。所以,对于 Secrets Manager、KMS、S3 这些敏感服务,我强烈建议至少开启数据事件记录。

踩坑提醒: 我曾经给整个账号开启了全部数据事件,一个月下来 CloudTrail 账单超过 2000 美金。后来改为只记录几个关键 Bucket 和 Secrets Manager,成本降到几十块。一定要加过滤条件,别全开。

区域与全局服务:CloudTrail 的命名空间

AWS 的 API 调用是有“区域”概念的。你在东京区创建 EC2,事件就记录在东京。但有些服务是全局的,比如 IAM、CloudFront、Route53。它们的 API 调用到底算哪个区域?

CloudTrail 的规则是这样的:

  • 区域服务: 事件记录在调用发生的区域。比如在美东 1(us-east-1)创建 S3 存储桶,事件就落在 us-east-1。
  • 全局服务: 事件默认记录在“美东 1(us-east-1)”。或者你创建跟踪时也可以指定一个“全局服务事件区域”。

你想想看:如果你只开启了新加坡区域的跟踪,而没开美东 1,那 IAM 的变更就全部丢失了。很多安全事件恰恰是从 IAM 开始的。

全局服务事件清单(部分)

服务事件记录区域说明
AWS IAMus-east-1用户、组、角色、策略的变更
AWS STSus-east-1安全令牌服务操作
AWS Organizationsus-east-1组织、SCP 管理
CloudFrontus-east-1分配、证书管理
Route53us-east-1托管区、记录集变更
经验之谈: 创建跟踪时,我总会勾选“Apply to all regions”并且“Enable global services events”。一个跟踪覆盖所有区域和全局服务,省心又安全。

知识框架小结

把 CloudTrail 的核心概念串起来,就是下面这张图:

CloudTrail 知识框架 CloudTrail 事件类型 区域与全局 跟踪 & 存储 管理事件 数据事件 区域服务事件(属地) 全局服务事件(us-east-1) S3 存储 CloudWatch Logs 重要:Secrets Manager 操作同时涉及管理事件(创建Secret) 和数据事件(GetSecretValue),必须分别配置跟踪才能完全可见

嗯,看完这张图你应该就清楚了。CloudTrail 的核心就三块:事件类型、区域/全局、跟踪存储。后面我们讲 Secrets Manager 的可视化,所有分析都建立在这个框架上。