操作审计(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. 单击折线图查看折线图。
    折线图

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

场景四:异常监控告警

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

  1. 登录日志服务控制台
  2. Project列表区域,单击操作事件对应的Project名称
  3. 查询各个云服务在最近60天内的平均流量以及当天的实时流量。
    1. 单击日志库名称,然后单击15分钟(相对),设置查询的时间范围为60天。
    2. 在搜索框中输入如下代码。
      __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
    3. 单击查询/分析,查看分析结果。
    4. 单击折线图查看折线图。
      设置告警
      说明 您可以添加过滤条件排除不关注的云服务或者事件。
  4. 设置业务告警。
    1. 单击页面右上角另存为告警
    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. 单击确定