用途
AWS CloudTrail 用于记录和审计 AWS 账户活动,可服务于合规、安全调查和运营故障排查。本技能面向以下场景:
- 在所有 AWS 账户中启用组织范围的审计日志记录
- 调查安全事件或未授权的 API 活动
- 满足 SOC 2、HIPAA、PCI DSS 或 FedRAMP 等合规要求
- 针对敏感的 AWS API 调用设置自动告警
- 查询历史 AWS 活动以进行取证分析
主要能力
- 创建组织跟踪(organization trail)、多区域跟踪,并启用日志文件验证
- 使用 S3 存储日志,并配置桶策略、阻止公共访问、版本控制、服务端加密与生命周期策略
- 配置高级事件选择器,细化管理事件与数据事件(如 S3 对象、Lambda 函数、DynamoDB 表)的捕获范围
- 通过 CloudWatch Logs 指标过滤器与告警监控未授权 API 调用、Root 账户使用、未使用 MFA 的控制台登录、IAM 策略变更和安全组变更
- 使用 Athena 对外部表查询 CloudTrail 日志,进行删除操作、异常 IP 登录、访问密钥使用模式、失败 API 调用与 KMS 密钥使用等分析
- 使用 CloudTrail Lake 事件数据存储进行长期可查询存储
- 验证日志文件完整性并检查跟踪状态
- 通过 Terraform 配置跟踪
使用方式
资料中给出了完整的 CLI 操作流程:
- 为日志存储创建 S3 存储桶:
aws s3api create-bucket \
--bucket org-cloudtrail-audit-logs \
--region us-east-1
- 应用允许 CloudTrail 写入的桶策略(
aws s3api put-bucket-policy,内容包含AWSCloudTrailAclCheck与AWSCloudTrailWrite两条 Statement)。 - 阻止公共访问:
aws s3api put-public-access-block \
--bucket org-cloudtrail-audit-logs \
--public-access-block-configuration \
BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true
- 启用版本控制:
aws s3api put-bucket-versioning \
--bucket org-cloudtrail-audit-logs \
--versioning-configuration Status=Enabled
- 启用服务端加密(使用
aws:kms与alias/cloudtrail-key)。 - 设置生命周期策略(90 天转 Glacier,2555 天过期)。
- 创建组织跟踪:
aws cloudtrail create-trail \
--name org-audit-trail \
--s3-bucket-name org-cloudtrail-audit-logs \
--is-organization-trail \
--is-multi-region-trail \
--enable-log-file-validation \
--kms-key-id arn:aws:kms:us-east-1:123456789012:alias/cloudtrail-key \
--cloud-watch-logs-log-group-arn arn:aws:logs:us-east-1:123456789012:log-group:CloudTrail:* \
--cloud-watch-logs-role-arn arn:aws:iam::123456789012:role/CloudTrail-CWLogs-Role
- 开始记录:
aws cloudtrail start-logging --name org-audit-trail
事件选择器通过 aws cloudtrail put-event-selectors --trail-name org-audit-trail --advanced-event-selectors '...' 配置,选择器涵盖所有管理事件、敏感 S3 桶数据事件、Lambda 调用与 DynamoDB 数据事件。
告警方面,资料使用 aws logs put-metric-filter 与 aws cloudwatch put-metric-alarm 创建指标过滤器与告警,涵盖未授权 API 调用、Root 账户使用、未使用 MFA 的控制台登录、IAM 策略变更和安全组变更,告警动作指向 SNS 主题。
分析方面,资料提供 Athena 外部表 cloudtrail_logs 的建表语句,以及删除操作、异常 IP 控制台登录、访问密钥使用模式、失败 API 调用、KMS 密钥使用等查询;同时给出 CloudTrail Lake 事件数据存储的创建命令与 SQL 查询示例。
验证完整性:
aws cloudtrail validate-logs \
--trail-arn arn:aws:cloudtrail:us-east-1:123456789012:trail/org-audit-trail \
--start-time "2024-01-01T00:00:00Z" \
--end-time "2024-01-31T23:59:59Z"
另提供 get-trail-status 与 describe-trails 检查状态与配置。Terraform 配置示例中定义了 aws_cloudtrail 资源及管理事件与敏感 S3 数据事件的高级事件选择器。
配置清单(Setup Checklist)
资料给出分类检查清单:
- trail_configuration:组织跟踪、多区域、日志文件验证、KMS 加密、CloudWatch Logs 集成、S3 桶策略限制
- s3_bucket_hardening:阻止公共访问、版本控制、服务端加密、生命周期策略、桶访问日志、对象锁定(如需要)
- monitoring_and_alerting:未授权 API 调用指标过滤器、Root 账户告警、未使用 MFA 登录告警、IAM 策略变更告警、安全组与 NACL 变更告警、CloudTrail 配置变更告警、S3 桶策略变更告警
- analysis:Athena 表、CloudTrail Lake 事件数据存储、高风险 API 模式定期审查、合规证据自动报告
- operational:跟踪状态健康检查自动化、日志投递延迟监控、定期运行日志文件验证、跟踪配置变更 SNS 通知
最佳实践
- 从管理账户启用组织范围跟踪以实现全面覆盖
- 始终启用日志文件验证以检测篡改
- 使用客户管理的 KMS 密钥加密日志并限制密钥使用
- 使用高级事件选择器捕获敏感资源的数据事件,而不必记录所有内容
- 集成 CloudWatch Logs 以实现实时指标过滤器与告警
- 设置 Athena 或 CloudTrail Lake 以便在调查期间高效查询
- 应用 S3 生命周期策略将旧日志转入 Glacier 并强制执行保留
- 将跟踪本身(投递错误、配置变更)作为元控制进行监控
- 定期验证日志完整性,作为合规证据收集的一部分
- 使用最小权限 IAM 策略限制对 CloudTrail S3 桶与 KMS 密钥的访问
适用场景与限制
适用于 AWS 账户活动的审计、安全事件调查、合规取证与运营排查。资料未提供收费、价格、配额上限或平台差异等信息,相关细节暂未提供。