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 无需构建额外基础设施即可执行审计查询,更为便捷。AWS 安全相关书籍 (Amazon) 可用于学习审计设计的最佳实践。

与 EventBridge 联动的实时检测

CloudTrail 在实务中效果最显著的是与 EventBridge 联动的实时通知。可以将安全组规则变更、IAM 策略变更、根账户登录等安全重要的 API 调用作为触发器,执行 SNS 通知或 Lambda 自动修复。例如,在 S3 存储桶的公共访问被启用的瞬间由 Lambda 自动阻止的配置,已被许多组织采用。在事件调查中,标准流程是用 CloudTrail Lake 对相关时间段的 API 调用进行 SQL 查询,确定哪个 IAM 实体从哪个 IP 地址访问了哪个资源。

共有するXB!