操作审计(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泄漏问题。
场景二:分析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天的平均访问量。
- 单击确定。