【新发布】SLS数据加工增值内容服务

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 【数据加工】是一个可托管、高可用、可扩展的数据处理服务,广泛适用于数据的规整、富化、分发、汇总、重建索引等场景。这里详细介绍如何通过数据加工实现数据的分发与汇总,从而实现统一存储管理或分类精细化查询分析,以及存储成本优化等目的。

内置 GeoIP 库

SLS 数据加工支持对 IP 地址数据的地理位置(GeoIP)进行解析,解析IP地址被分配使用的大致地理位置范围。通过调用数据加工预定义函数 geo_parse 即可实现。

应用场景

我们需要处理的原始数据如下,是 Nginx 访问日志样例数据,其中 client_ip 字段存储的是访问客户端 IP 地址,我们需要对客户端来源地域进行分析,所以第一步需要先解析出 IP 信息对应的地理位置信息。

client_ip: 101.37.0.0
request: GET /product/8396812?from=source-2 HTTP/1.1
http_status: 200

数据加工实现

1. 基于内置GeoIP库解析

SLS 提供了内置 GeoIP 库,可以直接调用,调用方法如下,将解析结果存入 _geo_ 字段中:

e_set("_geo_", geo_parse(v("client_ip")))

解析结果如下,_geo_ 字段中包含了国家、省份(州)、城市、运营商、经纬度等信息:

client_ip: 101.37.0.0
request: GET /product/8396812?from=source-2 HTTP/1.1
http_status: 200
_geo_: {
  "country_en": "CN",
  "province_en": "330000",
  "city_en": "330100",
  "country": "中国",
  "province": "浙江省",
  "city": "杭州市",
  "isp": "阿里云",
  "lat": 30.294,
  "lon": 120.162
}

也可以通过指定 keep_fields 参数来保留需要解析出哪些信息,来减少不需要的数据量,示例如下:

e_set("_geo_", geo_parse(v("client_ip"), keep_fields=("country", "province")))

2. 基于自选GeoIP库解析

如果我们已经购买了 GeoIP 库,想要在数据加工使用自选的 GeoIP 库。数据加工预定义韩式 res_oss_file 支持从 OSS 拉取自选 GeoIP 库文件,并进行解析,需要指定 ip_dbprovider 2 个参数,示例如下:

e_set(
    "geo",
    geo_parse(
        v("client_ip"),
        ip_db=res_oss_file(
            endpoint="http://oss-cn-hangzhou.aliyuncs.com",
            ak_id="your ak_id",
            ak_key="your ak_key",
            bucket="your bucket",
            file="ipipfree.ipdb",
            format="binary",
        ),
        provider="ipip",
    ),
)

自选 GeoIP 库默认输出3个信息,countryprovincecity。如果需要输出更多信息,也可以通过指定 keep_fields 参数来实现。

3. 单事件多IP解析

有的时候,客户端的访问通过了一系列的代理服务器,这些路径上的 IP 地址都会被记录在访问日志中。所以访问日志如下:

client_ip: 101.37.0.0; 101.37.0.1; 101.37.0.2
request: GET /product/8396812?from=source-2 HTTP/1.1
http_status: 200

数据加工支持传入多 IP 的分隔符参数 ip_sep,然后对所有 IP 逐个解析,将解析结果打包在一个 JOSN 对象中。代码如下:

e_set("_geo_", geo_parse(v("client_ip"), ip_sep=";"))

返回结果如下:

client_ip: 101.37.0.0
request: GET /product/8396812?from=source-2 HTTP/1.1
http_status: 200
_geo_: {
  "101.37.0.0": {
    "country_en": "CN",
    "province_en": "330000",
    "city_en": "330100",
    "country": "中国",
    "province": "浙江省",
    "city": "杭州市",
    "isp": "阿里云",
    "lat": 30.294,
    "lon": 120.162
  },
  "101.37.0.1": {
    "country_en": "CN",
    "province_en": "330000",
    "city_en": "330100",
    "country": "中国",
    "province": "浙江省",
    "city": "杭州市",
    "isp": "阿里云",
    "lat": 30.294,
    "lon": 120.162
  },
  "101.37.0.2": {
    "country_en": "CN",
    "province_en": "330000",
    "city_en": "330100",
    "country": "中国",
    "province": "浙江省",
    "city": "杭州市",
    "isp": "阿里云",
    "lat": 30.294,
    "lon": 120.162
  }
}

威胁情报扫描

SLS 数据加工提供内置函数 e_threat_intelligence,可用于扫描数据内容是否存在威胁情报,比如检查访问 IP 是否存在威胁。
阿里云威胁情报服务提供最近30天出现的威胁情报信息,每天更新一次。

应用场景

实时数据审计

我们的服务系统可能时时刻刻接受着来自世界各地的访问、或者是文件上传,如何快速识别出访问者是否有可能怀有恶意、或者上传内容是有潜在风险,从而把风险带来的损失降到尽可能低。

历史事件溯源

当攻击行为已经发生,我们最急切要做的就是溯源整个事件,找出攻击者和被攻破的原因,确定其他可能处于风险中的IT资源,预测攻击的后续行为,从而达到相似或相关的攻击行为不会在我们在成损失。

数据加工调用

这里示例同样是对访问日志的 IP 地址做扫描,需要指定扫描数据类型为 ip、需要扫描的字段为 client_ip、扫描结果输出字段为 _ti_,数据加工调用代码如下:

e_threat_intelligence("ip", "client_ip", output_field="_ti_")

扫描结果如下:

client_ip: 101.37.0.0
request: GET /product/8396812?from=source-2 HTTP/1.1
http_status: 200
_ti_: {
  "confidence": 100,
  "severity": 4,
  "family": "",
  "ioc_raw": "203.0.113.1",
  "ioc_type": "ipv4",
  "intel_type": "web",
  "country": "中国",
  "province": "浙江省",
  "city": "杭州市",
  "isp": "电信"
}

如果所给定的需要扫描的内容最近30天没有出现过威胁情报信息,则结果字段不会输出内容。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
我使用flinkcdc的sql形式进行全量同步,4张表,有两张表数据没进去,看日志,id怎么是null呢?
我使用flinkcdc的sql形式进行全量同步,4张表,有两张表数据没进去,看日志,id怎么是null呢?
117 40
|
4月前
|
SQL 大数据 API
每天一道大厂SQL题【Day08】服务日志SQL统计
每天一道大厂SQL题【Day08】服务日志SQL统计
42 0
|
4月前
|
Kubernetes Shell Linux
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
63 0
|
1天前
|
人工智能 数据可视化 开发工具
Git log 进阶用法(含格式化、以及数据过滤)
Git log 进阶用法(含格式化、以及数据过滤)
|
3天前
|
机器学习/深度学习 前端开发 数据挖掘
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断(下)
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
74 11
|
9天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
15 0
|
9天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
39 0
|
22天前
|
关系型数据库 MySQL Linux
linux特定服务日志
Linux系统的服务日志在`/var/log`目录下,如系统日志(`/var/log/syslog`或`/var/log/messages`)、认证日志(`/var/log/auth.log`)、SSH日志(`/var/log/auth.log`或`/var/log/secure`)。Web服务器(Apache和Nginx)的访问和错误日志、MySQL错误日志、Postfix及Dovecot邮件服务器日志也在此处。日志位置可能因发行版和服务配置而异,不确定时可查服务配置或用`grep`搜索。使用`logrotate`可管理日志文件大小。
21 6
|
1月前
|
域名解析 网络协议 应用服务中间件
nginx-ingress通过ipv6暴露服务,并在nginx ingress日志中记录客户端真实ipv6的ip地址
本文主要通过阿里云提供的clb和nlb来实现,建议是提前创建好双栈的vpc和vsw(使用clb可以不用双栈vpc和vsw)
189 1
|
2月前
|
监控 安全 Linux
Linux日志管理服务 rsyslogd
Linux日志管理服务 rsyslogd
36 2
Linux日志管理服务 rsyslogd