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

157 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第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 资源。