AWS CloudTrail
自动记录 AWS 账户内的 API 调用,追踪谁在何时做了什么的审计与安全服务
概述
AWS CloudTrail 是将 AWS 账户内发生的所有 API 活动作为事件进行记录的服务。管理控制台操作、CLI 命令、SDK 调用、其他 AWS 服务的内部调用等所有操作都是记录对象。默认可免费查看过去 90 天的管理事件,还支持长期保存到 S3 存储桶和通过 CloudTrail Lake 进行查询分析。作为安全事件调查、合规审计和运维故障排查的基础,几乎在所有 AWS 环境中都已启用。
3 种事件类型与记录成本设计
CloudTrail 记录的事件分为管理事件、数据事件和 Insights 事件 3 种。管理事件记录 IAM 策略变更、EC2 实例启停、S3 存储桶创建等资源管理操作,可在免费额度内查看 90 天。数据事件记录 S3 对象的 GetObject/PutObject 或 Lambda 函数的 Invoke 等资源内数据操作,但需付费。访问频繁的 S3 存储桶仅读取操作就会产生大量事件,月费可达数百美元,因此将审计对象限定在敏感数据存储桶的设计很重要。Insights 事件自动检测 API 调用模式的异常 (如正常的 10 倍 API 调用),有助于早期发现未授权访问。
CloudTrail Lake 的 SQL 查询调查
CloudTrail Lake 是可以直接用 SQL 查询事件日志的分析功能。以往通常将保存在 S3 的日志用 Athena 分析,而 CloudTrail Lake 可在事件数据存储中保留最长 7 年的事件,用专用 SQL 引擎即时搜索。Azure 的 Activity Log 需要转发到 Log Analytics 工作区并用 KQL (Kusto Query Language) 分析,而 CloudTrail Lake 无需构建额外基础设施即可执行审计查询,更为便捷。
与 EventBridge 联动的实时检测
CloudTrail 在实务中效果最显著的是与 EventBridge 联动的实时通知。可以将安全组规则变更、IAM 策略变更、根账户登录等安全重要的 API 调用作为触发器,执行 SNS 通知或 Lambda 自动修复。例如,在 S3 存储桶的公共访问被启用的瞬间由 Lambda 自动阻止的配置,已被许多组织采用。在事件调查中,标准流程是用 CloudTrail Lake 对相关时间段的 API 调用进行 SQL 查询,确定哪个 IAM 实体从哪个 IP 地址访问了哪个资源。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。