aws-doc/课程/第三阶段-安全与身份/第23天-CloudTrail审计日志.md

157 lines
6.1 KiB
Markdown
Raw Permalink Normal View History

2026-05-08 10:24:39 +08:00
# 第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 最佳实践
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 各自解决什么问题?
---
## 延伸阅读
- [CloudTrail 用户指南](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)
- [AWS Config 开发者指南](https://docs.aws.amazon.com/config/latest/developerguide/)
- [CloudTrail 支持的服务列表](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html)
---
## 明天预告
明天学习 VPC 安全进阶——网络 ACL、VPC Flow Logs、PrivateLink。深入理解如何在网络层面保护你的 AWS 资源。