操作审计(ActionTrail)帮助您监控阿里云账号的活动并记录最近90天的操作事件。当您需要分析更长时间的操作事件时,可以通过操作审计创建跟踪,将操作事件投递到日志服务SLS,对操作事件进行查询和分析。本文为您介绍在SLS中查询和分析操作事件的典型场景。
前提条件
场景一:分析AK泄露情况
某企业发现IP地址存在异常调用,怀疑是由于人事调动导致AK(AccessKey)泄露。此时可以通过操作审计创建跟踪,将操作事件投递到日志服务SLS,在SLS中分析AK调用轨迹。
您可以获取AK调用来源IP地址所在的城市,一旦发现当前城市非企业所在地,即可明确AK存在泄露。
- 登录日志服务控制台。 
- 在全部的Project页签,单击操作事件对应的Project名称。 
- 单击日志库名称,然后单击最近15分钟,设置查询的时间范围。 
- 在搜索框中输入如下代码。 - __topic__: actiontrail_audit_event and event.userIdentity.accessKeyId:<YourAccessKeyId> | SELECT count(1) as pv, city FROM (SELECT "event.sourceIpAddress" AS ip, ip_to_city("event.sourceIpAddress") as city FROM log) WHERE ip_to_domain(ip)!='intranet' GROUP BY city ORDER BY pv DESC说明- <YourAccessKeyId>请替换为您自己的AccessKey ID。
- 以上查询能够获取指定AK所产生调用的来源IP地址,并且给出具体的调用量。如果当前城市非企业所在地,则AK存在泄露。 
 
- 单击查询/分析,查看分析结果。 
- 可选:当AK泄露时,您可以调整RAM用户权限,解决AK泄露问题。 - 具体操作,请参见为RAM用户移除权限。 
场景二:分析ECS实例删除情况
某企业期望可以追溯云资源的高危操作,例如:删除ECS实例。此时可以通过操作审计创建跟踪,将操作事件投递到日志服务SLS,获取执行ECS实例删除动作的操作者。
- 登录日志服务控制台。 
- 在全部的Project页签,单击操作事件对应的Project名称。 
- 单击日志库名称,然后单击最近15分钟,设置查询的时间范围。 
- 在搜索框中输入如下代码。 - __topic__: actiontrail_audit_event | SELECT serviceName, eventName, userName, count(1) as pv FROM (SELECT "event.eventName" as eventName, "event.serviceName" as serviceName, "event.userIdentity.userName" as userName FROM log) WHERE (serviceName = <TargetServiceName> and eventName = <TargetEventName>) GROUP BY serviceName, eventName, userName说明- 您可以将 - <TargetServiceName>和- <TargetEventName>分别指定为ECS和DeleteInstances,获取执行ECS实例删除动作的操作者。
- 单击查询/分析,查看分析结果。 - 分析结果会统计执行ECS实例删除动作的操作者以及执行次数。定位到ECS实例的非法操作后,您可以根据如下代码获取非法的操作记录,以便进行问题修复。 - __topic__: actiontrail_audit_event and event.serviceName:<TargetServiceName> and <TargetResourceId> and event.userIdentity.accessKeyId:<YourAccessKeyId>
场景三:生成数据报表
随着企业自身云上业务的快速发展,对于部分核心资源的调用频率周期需要生成完整的数据报表,以便进行资源容量的预估及风险预判。
例如:企业内部需要生成ECS实例创建近半年来的数据报表,通过分析同比以及环比增长情况来预测未来半年内资源扩充情况,以便合理的控制和规划成本开销。
- 登录日志服务控制台。 
- 在全部的Project页签,单击操作事件对应的Project名称。 
- 单击日志库名称,然后单击最近15分钟,设置查询的时间范围。 
- 在搜索框中输入如下代码。 - __topic__: actiontrail_audit_event and event.serviceName:<TargetServiceName> and event.eventName:<TargetEventName> | select t, diff[1] as current, diff[2] as last_month, diff[3] as percentage from(select t, compare( pv , 2592000) as diff from (select count(1) as pv, date_format(from_unixtime(__time__), '%m') as t from log group by t) group by t order by t)说明- 您可以将 - <TargetServiceName>和- <TargetEventName>两个变量分别指定为ECS和CreateInstance,即可获取ECS实例每个月的创建次数,并且展示同比上个月的增长幅度。
- 单击查询/分析,查看分析结果。 
- 单击页面下方的统计图表页签。 
- 在页签右侧的通用配置区域,选择,查看折线图。 
您也可以通过类似方法对部分风险等级较高的操作生成数据报表,并且从中分析调用规律以及流程高低峰所在时间点,以便更加合理地规划资源,提升资源利用率。
场景四:异常监控告警
某企业期望某个云服务某日的访问量超过最近60天平均访问量的一定比例时上报告警,此时您可以通过日志服务仪表盘中的查询图表配置监控告警,实现实时服务状态的监控。您也可以将自定义的统计图表添加到仪表盘中,以便实现定制化业务的实时监控。具体操作,请参见添加统计图表到仪表盘。
- 登录日志服务控制台。 
- 在全部的Project页签,单击操作事件对应的Project名称。 
- 查询各个云服务在最近60天内的平均流量以及当天的实时流量。 - 单击日志库名称,然后单击最近15分钟。 
- 在时间选择区域,单击自定义,设置查询的时间范围为60天。 
- 在搜索框中输入如下代码。 - __topic__: actiontrail_audit_event |select a.serviceName, a.avg_pv, b.today_pv from (select serviceName, avg(pv) as avg_pv from (select "event.serviceName" as serviceName, count(1) as pv, date_format(from_unixtime(__time__), '%m-%d') as day from log group by serviceName, day) group by serviceName) a join (select "event.serviceName" as serviceName, count(1) as today_pv from log where date_format(from_unixtime(__time__), '%Y-%m-%d')=current_date group by serviceName) b on a.serviceName = b.serviceName
- 单击查询/分析,查看分析结果。 
- 单击页面下方的统计图表页签。 
- 在页签右侧的通用配置区域,选择,查看折线图。 说明- 您可以添加过滤条件排除不关注的云服务或者事件。 
 
- 设置业务告警。 - 单击页面右上角的  图标。 图标。
- 在告警监控规则面板配置相关参数。 - 具体操作,请参见设置告警。 
- 配置触发条件。 - $0.today_pv > $0.avg_pv && ($0.today_pv - $0.avg_pv)/$0.avg_pv > 0.5- 其中 - $0表示第一条查询语句关联的原始图表数据,即每个云服务的当日访问量以及最近60天的平均访问量。- $0.avg_pv表示云服务最近60天的平均访问量。
- 单击确定。 
 

