aws-doc/课程/第三阶段-安全与身份/第23天-CloudTrail审计日志.md
2026-05-08 10:24:39 +08:00

6.1 KiB
Raw Blame History

第23天CloudTrail——谁在什么时候做了什么

今天你将学到什么

今天学习 CloudTrail——AWS 的"监控录像系统"。它记录你 AWS 账户中的每一个操作:谁在什么时间、从哪个 IP 地址、对什么资源做了什么操作、结果是成功还是失败。这是安全审计和故障排查的基础。


为什么需要审计日志

场景一:安全事件调查

周一早上你发现生产数据库被删除了。老板问:"谁干的?"

没有 CloudTrail不知道。只能猜。

有 CloudTrail打开日志一查——周日凌晨 3:17用户 dev-zhang 从 IP 203.x.x.x 调用了 rds:DeleteDBInstance。进一步调查发现他的账号被盗了。

场景二:故障排查

你的应用突然无法访问 S3 桶了。什么时候开始的?谁改了权限?

CloudTrail 告诉你:昨天下午 4:32用户 ops-li 修改了桶策略,把 Allow 改成了 Deny

场景三:合规审计

审计师问:"过去 90 天内,谁访问过客户数据?有没有未授权的访问?"

CloudTrail 可以提供完整的访问记录。

类比CloudTrail 就像银行的监控录像 + 操作流水。每一笔交易、每一次进出都有记录。出了问题可以回放查看。


CloudTrail 记录什么

每条记录包含的信息

字段 含义 举例
时间 操作发生的精确时间 2024-01-15T03:17:42Z
用户身份 谁做的操作 用户 dev-zhang / 角色 lambda-role
源 IP 从哪里发起的 203.0.113.50
操作 做了什么 DeleteDBInstance
资源 对什么东西操作 arn:aws:rds:...:production-db
结果 成功还是失败 成功 / AccessDenied
请求参数 具体的操作细节 DBInstanceIdentifier: production-db

三种事件类型

类型 记录什么 举例
管理事件 对 AWS 资源的管理操作 创建/删除 EC2、修改安全组、更改 IAM 策略
数据事件 对数据的读写操作 S3 对象的上传/下载、Lambda 函数的调用
洞察事件 异常活动模式 API 调用量突然暴增、异常的错误率

默认情况:管理事件自动记录(免费保留 90 天)。数据事件需要手动开启(因为量太大)。


怎么使用 CloudTrail

方式一快速查看Event History

打开 CloudTrail 控制台 → Event History可以直接搜索最近 90 天的管理事件。

常用搜索方式

  • 按用户名搜索:看某个人做了什么
  • 按事件名搜索:看谁做了某个操作(比如搜 DeleteBucket
  • 按资源名搜索:看某个资源被谁动过

方式二:创建 Trail长期保存

如果你需要保留超过 90 天的日志,或者需要记录数据事件,就创建一个 Trail

CloudTrail → 创建 Trail → 选择保存到 S3 桶

日志会以 JSON 文件的形式存储在你指定的 S3 桶里。你可以保留多久就保留多久。

方式三:配合其他服务

  • CloudWatch Logs:把 CloudTrail 日志发送到 CloudWatch设置告警。比如"有人删除了安全组就立刻通知我"。
  • Athena:用 SQL 查询 S3 里的 CloudTrail 日志。适合大规模分析。
  • EventBridge:实时响应特定事件。比如"有人创建了 IAM 用户就自动触发审批流程"。

实际应用场景

场景一:检测异常登录

设置告警:如果有人从非公司 IP 地址登录 AWS 控制台,立刻发送通知。

CloudTrail 记录每次控制台登录的源 IP。配合 CloudWatch 告警,可以实时检测异常登录。

场景二:追踪资源变更

"这个安全组的规则是谁改的?什么时候改的?改之前是什么样的?"

在 CloudTrail 中搜索 AuthorizeSecurityGroupIngressRevokeSecurityGroupIngress 事件,可以看到完整的变更历史。

场景三:满足合规要求

很多行业法规(如 PCI DSS、HIPAA、SOC 2要求保留完整的操作审计日志。CloudTrail 天然满足这些要求。


CloudTrail 最佳实践

  1. 所有区域都开启:攻击者可能在你不常用的区域搞破坏。确保所有 AWS 区域都有 CloudTrail 记录。
  2. 日志文件完整性验证:开启日志文件验证,防止有人篡改日志(删除自己的犯罪记录)。
  3. 日志桶加密:存储日志的 S3 桶要加密,防止日志本身被泄露。
  4. 限制日志桶访问:只有安全团队能访问日志桶,普通开发者不能删除或修改日志。
  5. 设置关键操作告警:对高危操作(删除资源、修改 IAM、关闭 CloudTrail设置实时告警。

AWS Config——资源配置的"时光机"

和 CloudTrail 经常一起提到的还有 AWS Config。它们的区别

CloudTrail AWS Config
记录什么 谁做了什么操作API 调用) 资源的配置状态变化
回答什么问题 "谁在 3 点删了数据库?" "这个安全组的规则上周是什么样的?"
类比 监控录像(记录动作) 定期拍照(记录状态)

Config 的独特价值

  • 记录资源配置的完整变更历史
  • 可以设置合规规则(比如"所有 S3 桶必须开启加密"
  • 自动检测不合规的资源并通知你

今天的小测验

  1. CloudTrail 记录的一条事件包含哪些关键信息?
  2. 管理事件和数据事件的区别是什么?为什么数据事件默认不开启?
  3. 如果你想保留超过 90 天的审计日志,应该怎么做?
  4. CloudTrail 和 AWS Config 各自解决什么问题?

延伸阅读


明天预告

明天学习 VPC 安全进阶——网络 ACL、VPC Flow Logs、PrivateLink。深入理解如何在网络层面保护你的 AWS 资源。