操作审计(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天的平均访问量。单击确定。