在日志服务SLS中分析操作事件

操作审计(ActionTrail)帮助您监控阿里云账号的活动并记录最近90天的操作事件。当您需要分析更长时间的操作事件时,可以通过操作审计创建跟踪,将操作事件投递到日志服务SLS,对操作事件进行查询和分析。本文为您介绍在SLS中查询和分析操作事件的典型场景。

前提条件

请确保您已创建跟踪,并将操作事件投递到日志服务SLS。具体操作,请参见创建单账号跟踪创建多账号跟踪

场景一:分析AK泄露情况

某企业发现IP地址存在异常调用,怀疑是由于人事调动导致AK(AccessKey)泄露。此时可以通过操作审计创建跟踪,将操作事件投递到日志服务SLS,在SLS中分析AK调用轨迹。

您可以获取AK调用来源IP地址所在的城市,一旦发现当前城市非企业所在地,即可明确AK存在泄露。

  1. 登录日志服务控制台

  2. 全部的Project页签,单击操作事件对应的Project名称

  3. 单击日志库名称,然后单击最近15分钟,设置查询的时间范围。

  4. 在搜索框中输入如下代码。

    __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存在泄露。

  5. 单击查询/分析,查看分析结果。

  6. 可选:当AK泄露时,您可以调整RAM用户权限,解决AK泄露问题。

    具体操作,请参见为RAM用户移除权限

场景二:分析ECS实例删除情况

某企业期望可以追溯云资源的高危操作,例如:删除ECS实例。此时可以通过操作审计创建跟踪,将操作事件投递到日志服务SLS,获取执行ECS实例删除动作的操作者。

  1. 登录日志服务控制台

  2. 全部的Project页签,单击操作事件对应的Project名称

  3. 单击日志库名称,然后单击最近15分钟,设置查询的时间范围。

  4. 在搜索框中输入如下代码。

    __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实例删除动作的操作者。

  5. 单击查询/分析,查看分析结果。

    分析结果会统计执行ECS实例删除动作的操作者以及执行次数。定位到ECS实例的非法操作后,您可以根据如下代码获取非法的操作记录,以便进行问题修复。

    __topic__: actiontrail_audit_event and event.serviceName:<TargetServiceName> and <TargetResourceId> and event.userIdentity.accessKeyId:<YourAccessKeyId>

场景三:生成数据报表

随着企业自身云上业务的快速发展,对于部分核心资源的调用频率周期需要生成完整的数据报表,以便进行资源容量的预估及风险预判。

例如:企业内部需要生成ECS实例创建近半年来的数据报表,通过分析同比以及环比增长情况来预测未来半年内资源扩充情况,以便合理的控制和规划成本开销。

  1. 登录日志服务控制台

  2. 全部的Project页签,单击操作事件对应的Project名称

  3. 单击日志库名称,然后单击最近15分钟,设置查询的时间范围。

  4. 在搜索框中输入如下代码。

    __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实例每个月的创建次数,并且展示同比上个月的增长幅度。

  5. 单击查询/分析,查看分析结果。

  6. 单击页面下方的统计图表页签。

  7. 在页签右侧的通用配置区域,选择图表类型 > image.png,查看折线图。

您也可以通过类似方法对部分风险等级较高的操作生成数据报表,并且从中分析调用规律以及流程高低峰所在时间点,以便更加合理地规划资源,提升资源利用率。

场景四:异常监控告警

某企业期望某个云服务某日的访问量超过最近60天平均访问量的一定比例时上报告警,此时您可以通过日志服务仪表盘中的查询图表配置监控告警,实现实时服务状态的监控。您也可以将自定义的统计图表添加到仪表盘中,以便实现定制化业务的实时监控。具体操作,请参见添加统计图表到仪表盘

  1. 登录日志服务控制台

  2. 全部的Project页签,单击操作事件对应的Project名称

  3. 查询各个云服务在最近60天内的平均流量以及当天的实时流量。

    1. 单击日志库名称,然后单击最近15分钟

    2. 时间选择区域,单击自定义,设置查询的时间范围为60天。

    3. 在搜索框中输入如下代码。

      __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

    4. 单击查询/分析,查看分析结果。

    5. 单击页面下方的统计图表页签。

    6. 在页签右侧的通用配置区域,选择图表类型 > image.png,查看折线图。

      说明

      您可以添加过滤条件排除不关注的云服务或者事件。

  4. 设置业务告警。

    1. 单击页面右上角的image.png图标。

    2. 告警监控规则面板配置相关参数。

      具体操作,请参见设置告警

    3. 配置触发条件。

      $0.today_pv > $0.avg_pv && ($0.today_pv - $0.avg_pv)/$0.avg_pv > 0.5

      其中$0表示第一条查询语句关联的原始图表数据,即每个云服务的当日访问量以及最近60天的平均访问量。$0.avg_pv表示云服务最近60天的平均访问量。

    4. 单击确定

相关文档