AWS-利用CloudTrail与CloudWatch实现警报

AWS CloudTrail 是一项 AWS 服务,可帮助对您的 AWS 账户进行监管、合规性检查、操作审核和风险审核。用户、角色或 AWS 服务执行的操作将记录为 CloudTrail 中的事件。事件包括在 AWS 管理控制台、AWS Command Line Interface 和 AWS 开发工具包和 API 中执行的操作。

在您创建 账户时,将对账户启用 。当您的 AWS 账户中发生活动时,该活动将记录在 CloudTrail 事件中。您可以通过转到事件历史记录来轻松查看 CloudTrail 控制台中的最新事件。要持续记录 AWS 账户中的活动和事件,请创建跟踪

您的 AWS 账户活动的可见性是安全和运营最佳实践的重要方面。您可以使用 CloudTrail 来查看、搜索、下载、归档、分析和响应您的 AWS 基础设施中的账户活动。您可以确定谁或哪个组件对哪些资源执行了哪些操作、事件发生的时间以及其他细节,来帮助您分析和响应 AWS 账户中的活动。

您可将 CloudTrail 集成到使用 API 的应用程序、为您的组织自动创建跟踪、检查创建的跟踪的状态,以及控制用户查看 CloudTrail 事件的方式。

AWS CloudTrail 工作原理:

在您创建 AWS 账户时,将对账户启用 CloudTrail。当您的 AWS 账户中发生活动时,该活动将记录在 CloudTrail 事件中。您可以通过转到 Event history (事件历史记录) 轻松查看 CloudTrail 控制台中的事件。

利用事件历史记录,您可以查看、搜索和下载 AWS 账户中过去 90 天的活动。此外,您还可以创建一个 CloudTrail 跟踪来存档、分析和响应您的 AWS 资源的变化。跟踪是一种配置,可用于将事件传送到您指定的 Amazon S3 存储桶。也可以使用 Amazon CloudWatch Logs 和 Amazon CloudWatch Events 传送和分析跟踪中的事件。您可使用 CloudTrail 控制台、AWS CLI 或 CloudTrail API 创建跟踪。

CloudTrail 通常会在账户活动发生后的 15 分钟内传送日志文件。此外,CloudTrail 一小时内会多次发布日志文件,通常约每 5 分钟发布一次。这些日志文件包含账户中来自支持 CloudTrail 的服务的 API 调用。

注意:CloudTrail 可捕获由用户直接执行或通过 AWS 服务代表用户执行的操作。例如,AWS CloudFormation CreateStack 调用会导致对 Amazon EC2、Amazon RDS、Amazon EBS 或其他服务进行其他的 API 调用(根据 AWS CloudFormation 模板的要求)。这是正常的,也是预期的行为。您可以使用 CloudTrail 事件中的 invokedby 字段确定操作是否由 AWS 服务执行。

您可以使用 CloudWatch Logs 将 CloudTrail 配置为监控自己的跟踪,并在发生特定活动时通知您。例如,您可定义 CloudWatch Logs 指标筛选器,这些筛选器将触发 CloudWatch 警报,并在触发这些警报时向您发送通知(如:登陆控制台事件、EC2 Spot 实例接受了出价、当现货价格超过您的出价时 EC2 Spot 实例终止、启动ssm session事件等等)。

下面实践是:利用 CloudTrail 发送到CloudWatch Logs 的日志配置为监控,如果有用户使用aws的控制面板登陆管理控制台或使用cli启动ssm session,就警报,并触发邮件告警:

 

1. 在cloudTrail创建一个跟踪

2. 然后转到cloudWatch的日志组(CloudTrail/aws-check-login)可以看到cloudTrail传过来的日志

3. 创建日志筛选

点击“筛选条件”后,进入“定义日志指标筛选器” 

  登陆管理控制面板的条件:eventName: "ConsoleLogin" 详细记录的日志参考:AWS控制台登陆事件

  客户端cli启动SSM session的的条件:eventName: "StarSession"

  可以看到日志的格式为json,你也可以使用其他的条件,例如控制台登陆成功的条件:

{(eventName = ConsoleLogin) && ($.responseElements.ConsoleLogin=Success)}

4. 分配指标

5. 创建筛选器

5. 创建警报

这里我们设置,根据前面的筛选器,得到一条符合条件的日志记录,就触发警报,警报使用SNS发送到你的邮箱.创建完警报后,在sns相应会有一个sns的主题(AWS-ConsoleAndStartSession-Notify). 

触发警报后,在左边的警报栏目的警报中会红色标注,如果检查不到记录,会在正常绿色的栏目中。

备注:

  1. 此方法,只有状态改变,才触发发送邮件,例如:状态变化:正常->警报 ,触发邮件发送;状态:警报->警报,不会触发邮件发送。上面设置:是每5分钟检查一次是否有登陆的日志,如果有,就把状态设置为“警报”并发送邮件,当下一个5分钟检查是没发现有登陆日志,就会把状态设置正常;如果每5分钟检查到有登陆的日志,并且下一个5分钟检查还是有登陆日志,状态还是“警报”,这时是不再发送邮件,因为状态没有变化,一直是警报的状态。
  2. 此方法,触发报警后,收到的邮件内容,不能体现哪个账号登陆,只提示有人登陆,内容不够详细;

如下:

You are receiving this email because your Amazon CloudWatch Alarm "ConsoleOrStartSession sign-in" in the China (Beijing) region has entered the ALARM state, because "Threshold Crossed: 1 datapoint [1.0 (09/05/19 09:46:00)] was greater than or equal to the threshold (1.0)." at "Thursday 09 May, 2019 09:51:34 UTC".

View this alarm in the AWS Management Console:
https://console.amazonaws.cn/cloudwatch/home?region=cn-north-1#s=Alarms&alarm=ConsoleOrStartSession%20sign-in

Alarm Details:
- Name:                       ConsoleOrStartSession sign-in
- Description:                
- State Change:               OK -> ALARM
- Reason for State Change:    Threshold Crossed: 1 datapoint [1.0 (09/05/19 09:46:00)] was greater than or equal to the threshold (1.0).
- Timestamp:                  Thursday 09 May, 2019 09:51:34 UTC
- AWS Account:                593456688042

Threshold:
- The alarm is in the ALARM state when the metric is GreaterThanOrEqualToThreshold 1.0 for 300 seconds. 

Monitored Metric:
- MetricNamespace:                     CloudTrailMetrics
- MetricName:                          ConsoleORStartSessionSigninCount
- Dimensions:                          
- Period:                              300 seconds
- Statistic:                           Sum
- Unit:                                not specified
- TreatMissingData:                    NonBreaching


State Change Actions:
- OK: 
- ALARM: [arn:aws-cn:sns:cn-north-1:353532523544:AWS-ConsoleAndStartSession-Notify]
- INSUFFICIENT_DATA: 

如果,想邮件中带有账号登陆的详细信息(如账号名、客户端IPAddress),以及不管状态是否改变,都触发邮件发送,请使用CloudWatch事件规则发送邮件通知

参考:

将事件发送到 CloudWatch Logs

为 CloudTrail 事件创建 CloudWatch 警报:示例

使用 Amazon CloudWatch Logs 监控 CloudTrail 日志文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值