在 SLS 中分析ActionTrail跟踪投递日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
操作审计,不限时长
简介: 操作审计(ActionTrail)是阿里云提供的云账号资源操作记录的查询和投递服务,可用于安全分析、资源变更追踪以及合规性审计等场景。阿里云客户在操作审计控制台可以查看近90天的操作日志,但在实际应用中,需要普遍分析基于全Region并且90天以上的操作事件,用于一些复杂的聚合查询分析。

hbbdxien.jpg

前言

操作审计(ActionTrail)是阿里云提供的云账号资源操作记录的查询和投递服务,可用于安全分析、资源变更追踪以及合规性审计等场景。阿里云客户在操作审计控制台可以查看近90天的操作日志,但在实际应用中,需要普遍分析基于全Region并且90天以上的操作事件,用于一些复杂的聚合查询分析。此时我们可以在ActionTrail控制台上创建跟踪将操作日志投递到指定日志服务(SLS),利用SLS的实时索引,查询分析数据的能力我们可以对全量的操作事件进行复杂的聚类分析查询。以下列举了一些结合SLS对行为分析,安全合规的一些使用场景。

AK泄漏了怎么办?

问题现状

某企业发现存在一些异常调用,怀疑是由于人事调动导致AK(AccessKey)的泄漏,那么如何去验证猜想?别着急,操作审计(ActionTrail)能够解决你的燃眉之急,在ActionTrail控制台完成投递跟踪到SLS之后,我们就可以借助SLS提供数据分析能力来分析AK的调用轨迹。

分析思路

具体的分析思路是我们可以获取AK调用来源IP的城市,一旦发现当前城市非企业所在地,那么就可以明确当前AK确实存在泄漏,需要通过RAM重新分配调整子账号权限。

查询分析语句

__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

以上查询能够获取指定AK所产生调用的来源地址,并且给出具体的调用量,当然直接分析ip地址的网段也可以定位到指定AK是否存在异常调用。

是谁修改了ECS实例?

问题现状

企业上云之后对于内部云设施资源的审计越来越重视,云资源的安全合规操作也是企业上云的必经之路。对于企业内部云上资源的运维调度,以及相关的风险等级较高的资源调配操作,如何去获取指定资源(如ECS)的所有修改者,从中筛选得到非法来源的调用者,并以此进行责任追溯?以下提供了一种查询某段时间内高危操作的执行者。

分析思路

我们可以将关注的云产品以及执行操作按照执行者进行分组,统计每个云产业下任意一个API被谁执行以及执行的次数,从中筛选出一些非法的调用来源,并以此结果进行追责。

查询分析语句

__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实例的非法操作之后,我们需要获取非法的操作记录,以便于进行状态复原和问题修复:

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

自定义数据看板

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

需求分析

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

查询分析语句

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

可视化呈现

为了更加直观的展示数据变化趋势,可以折线图方式将效果进行呈现。

图1.png


除此之外,我们还可以类似的方式对部分风险等级较高的操作产出数据报表,并且可以从中分析调用规律以及流程高低峰所在时间点,以便于更加合理的规划资源,提升资源的利用率。
异常监控报警
为了对云上设施资源的操作提供更加全局的视角,ActionTrail会自动为投递logstore 创建仪表盘,其中记录了事件的调用量趋势、事件来源分布、事件区域分布、事件来源分布以及事件类型分布等实时数据分析大盘。

图2.png


图3.png

自定义仪表盘

日志服务可以根据仪表盘中的查询图表进行配置监控报警,实现实时服务状态的监控。除此之外我们也可以将自定义的统计图表添加到仪表盘中,以便实现定制化业务的实时监控,假设某企业需要对每个产品的日访问量做统计,当某个产品某日的访问量超过近60天的平均访问量的一定水位时,比如临界阈值到达150%时执行告警。

__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

以上查询统计出各个云产品在近60天(时间区间可自定义)内的平均流量以及当天的实时的流量,我们可以折线图的方式进行呈现,当然我们可以添加过滤条件来排除不关注的云产品或者相关事件。接下来可以将该图标添加到已有的ActionTrail仪表盘中,并且新增对其的业务报警。

图4.png

设置业务告警

在仪表盘中定位到新增的图标,点击右上角按钮新增告警,配置触发条件以及通知组即可完成,除此之外可以配置报警频率以及通知方式,具体配置可见SLS设置告警。其中$0表示第一条查询语句关联的原始图表数据,即每个云产品的当日访问量以及最近60天的平均访问量,$0.avg_pv即表示云产品最近60天的平均访问量。

图5.png

结束语

本文旨在将SLS提供的实时索引,分析查询的能力与ActionTrail跟踪投递的操作事件相结合,对安全合规,行为分析,安全分析,资源变更行为追踪和行为合规性审计提供新的分析和构建思路。各位读者可以在上述提供的场景例子为借鉴,进一步引申,将操作审计的业务价值最大化。

相关文章
|
10天前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
43 9
|
11天前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
41 0
|
11天前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
28 0
|
13天前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
14天前
|
算法 关系型数据库 程序员
第一周算法设计与分析:A : log2(N)
这篇文章介绍了解决算法问题"输入一个数N,输出log2N(向下取整)"的三种编程思路,包括使用对数函数和幂函数的转换方法,以及避免浮点数精度问题的整数逼近方法。
|
17天前
|
存储
【Azure Log A workspace】Azure上很多应用日志收集到Log A workspace后如何来分别各自的占比呢?
【Azure Log A workspace】Azure上很多应用日志收集到Log A workspace后如何来分别各自的占比呢?
|
17天前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
|
28天前
|
数据采集 监控 数据安全/隐私保护
掌握Selenium爬虫的日志管理:调整–log-level选项的用法
在Selenium Web数据采集时,日志管理至关重要。通过调整`–log-level`参数可优化日志详细度,如设置为`INFO`记录一般操作信息。结合代理IP、Cookie及user-agent配置,不仅能提高采集成功率,还能规避反爬机制。合理选择日志级别有助于调试与性能平衡,在复杂的数据采集任务中保持程序稳定与可控。
掌握Selenium爬虫的日志管理:调整–log-level选项的用法
|
18天前
|
开发框架 .NET Docker
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
|
22天前
|
存储 监控 安全