AWS CloudTrail
什么是 CloudTrail?
Trail 一词的含义是踪迹,那么 CloudTrail 可以理解为云上的踪迹。这里的踪迹指的是什么呢?设想一下,假如你负责为公司注册了一个 AWS 账户,并且在这个账户下创建了用户和组使得公司的员工可以使用 AWS 服务。由于用户可以操作该账户下的 AWS 资源,比如创建 EC2 实例,上传文件到 S3 存储桶等,为了能够对这些操作的合规性和安全性等进行审计,把所有对 AWS 基础设施的访问记录下来就很有必要。不难看出,所谓踪迹指的就是对 AWS 基础设施的访问记录。
CloudTrail 可以做什么?
根据上面的解释,我们其实不难发现,CloudTrail 可以帮你对 AWS 账户进行监管,合规性检查,运营审计以及风险审计等。
CloudTrail 可以把对 AWS 基础设施的操作行为以日志形式记录下来,从而可以对账户活动进行持续的监控。这些日志里面包含的就是 AWS 账户活动的事件历史记录,包括 AWS 管理控制台,AWS SDKs,命令行工具以及其它 AWS 服务产生的行为。
CloudTrail 能够解决哪些问题?
CloudTrail 对账户活动进行查看,查找,下载,归档,分析以及做出响应。当事件发生时,CloudTrail 能够识别谁(人或者程序)做了什么操作,什么资源被操作了。下面列出了 CloudTrail 可以解决的问题:
对多个 Region,多个账户环境的活动数据集合进行集中化管理
通过自动记录和存储活动日志进行审计
满足审计的监管合规性需求
获得对用户和资源活动的可视化能力
知晓谁在使用数据以检测是否有信息泄露,并根据数据使用情况对 IAM 角色权限进行限制
通过使用 CloudTrail insights 检测异常活动来构建自动安全机制
事件(Event)概念以及事件类型
在 CloudTrail 里,一个事件(event)就是 AWS 账户的一个活动记录。
CloudTrail 追踪以下事件类型:
Management events - 对应 AWS 账户中控制平面的操作信息,比如配置 security groups,启动 EC2 实例等
Data events - 对应 AWS 账户中数据平面的操作信息,比如对 S3 存储桶对象的访问行为,对 DynamoDB 表项的访问行为等。
Insights events - 对应 AWS 账户中的非正常操作行为。当 CloudTrail 检测到账户中的 API 使用与典型使用模式的差异很大的时候,这些异常活动就会被作为 Insight events 记录下来。
事件投递(Event Delivery)
由 CloudTrail 捕捉到的事件,可以投递给多个目的 AWS 服务以进行后续处理。这些目的包括:
Amazon S3
CloudWatch Logs
Amazon EventBridge
Amazon SNS
使用 Amazon SNS 作为投递目的,可以基于事件作出响应。日志通常在事件发生的几分钟之内可以被接收到,并且可以使用加密验证的方式来判断日志是否被修改或删除过。
CloudTrail 架构示意图
该图以高度概括的视角展示了 CloudTrail 是如何工作的:
某个 AWS 服务上有活动(事件)发生
CloudTrail 记录该活动(事件)
(可选)活动(事件)记录可以被投递至 CloudWatch Logs 或者 Amazon SNS
活动(事件)记录以默认加密的方式被投递至 Amazon S3
使用 CloudWatch Logs Insights 可以对事件日志进行查询
如何使用 CloudTrail
按照如下步骤使用
创建一个追踪器(trail)
设置需要捕捉的事件类型
设置多 Region 和多账户
可以设置缩小捕捉事件的范围,如只捕捉针对特定 S3 存储桶的写入事件
可以创建多个追踪器以满足不同的需要
费用
CloudTrail 提供的第一个对所有 Management events 的追踪器是免费的,该追踪器可以记录最近 90 天的历史事件,并且将事件日志保存到 S3。
CloudTrail 的 Data events 和 Insights events 则都是收费的。此外,如果设置了多个 Management events 的追踪器并投递至不同的目的也是需要收费的。在 AWS Budgets 里可以对 CloudTrail 产生的费用进行跟踪查看。
评论