6.1 KiB
第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 中搜索 AuthorizeSecurityGroupIngress 或 RevokeSecurityGroupIngress 事件,可以看到完整的变更历史。
场景三:满足合规要求
很多行业法规(如 PCI DSS、HIPAA、SOC 2)要求保留完整的操作审计日志。CloudTrail 天然满足这些要求。
CloudTrail 最佳实践
- 所有区域都开启:攻击者可能在你不常用的区域搞破坏。确保所有 AWS 区域都有 CloudTrail 记录。
- 日志文件完整性验证:开启日志文件验证,防止有人篡改日志(删除自己的犯罪记录)。
- 日志桶加密:存储日志的 S3 桶要加密,防止日志本身被泄露。
- 限制日志桶访问:只有安全团队能访问日志桶,普通开发者不能删除或修改日志。
- 设置关键操作告警:对高危操作(删除资源、修改 IAM、关闭 CloudTrail)设置实时告警。
AWS Config——资源配置的"时光机"
和 CloudTrail 经常一起提到的还有 AWS Config。它们的区别:
| CloudTrail | AWS Config | |
|---|---|---|
| 记录什么 | 谁做了什么操作(API 调用) | 资源的配置状态变化 |
| 回答什么问题 | "谁在 3 点删了数据库?" | "这个安全组的规则上周是什么样的?" |
| 类比 | 监控录像(记录动作) | 定期拍照(记录状态) |
Config 的独特价值:
- 记录资源配置的完整变更历史
- 可以设置合规规则(比如"所有 S3 桶必须开启加密")
- 自动检测不合规的资源并通知你
今天的小测验
- CloudTrail 记录的一条事件包含哪些关键信息?
- 管理事件和数据事件的区别是什么?为什么数据事件默认不开启?
- 如果你想保留超过 90 天的审计日志,应该怎么做?
- CloudTrail 和 AWS Config 各自解决什么问题?
延伸阅读
明天预告
明天学习 VPC 安全进阶——网络 ACL、VPC Flow Logs、PrivateLink。深入理解如何在网络层面保护你的 AWS 资源。