导语:接下来的事情就是要创建一个机制去灵活的处理这些信息,为自动分析捕捉风险事件提供基础原料,进而借助规则引擎从中分析出风险事件。

1483519736618992.jpg

上一章《搭建风控系统道路上踩过的坑01–信息采集》我们介绍了第一点,如何去获取足够多的数据,而接下来的事情就是要创建一个机制去灵活的处理这些信息,为自动分析捕捉风险事件提供基础原料,进而借助规则引擎从中分析出风险事件。

在开始前,我们还是回顾下业务风控主要做四件事:

1、拿到足够多的数据
2、做足够灵活的分析平台去分析数据
3、产出风险事件进行阻拦风险
4、量化风险拦截的价值和不断分析案例进行策略优化

接下来,同样的有三件事情需要考虑:

一、让分析人员可以快速的查询原始日志

日志并不是简单的存下来,从风控分析的需求来看,通过IP、用户名、设备等维度在一个较长的跨度中搜索信息是非常高频的行为,同时还存在在特定类型日志,比如在订单日志或者支付日志中按特定条件搜索的需求。

而这些主要是为了能够让分析人员可以快速的还原风险CASE,例如从客服那边得到了一个被盗的案例,那么现在需要从日志中查询被盗时间段内这个用户做了什么,这个过程如果有一个界面可以去做查询,显然比让分析人员用grep在一大堆文件中查询要快的多,并且学习门槛也要低得多。

如果在日志做过标准化的前提下,也可以进行后续的业务语言转译,将晦涩难懂的日志字段转化为普通员工都能看得懂的业务语言,也能极大的提升分析师在还原CASE时阅读日志的速度。

二、实时或定时的计算加工消息成变量&档案

例如在分析某个帐号被盗CASE的时候,往往需要把被盗期间登录的IP地址和用户历史常用的IP地址进行比对,即使我们现在可以快速的对原始日志进行查询,筛选一个用户的所有历史登录IP并察看被盗IP在历史中出现的比例也是一个非常耗时的工作。

再比如我们的风控引擎在自动判断用户当前登录IP是否为常用IP时,如果每次都去原始日志里面查询聚合做计算也是一个非常“贵”的行为。

那么,如果能预定义这些变量并提前计算好,就能为规则引擎和人工节省大量的时间了,而根据这些变量性质的不同,采取的计算方式也是不同的。不过还好我们有一个标准可以去辨别:频繁、对时效敏感的利用实时计算(比如访问频率、时间间隔);而相对不频繁、对时效不敏感的利用定时计算(比如用户的常用IP、设备,即使少算短期内的登录记录,也不会受到太大影响)。

三、选择规则引擎将人工策略自动运行

一个设计优雅的规则引擎是把分析师的经验决策和数据最终转化为风险输出的核心模块,首先说为什么需要规则引擎而不是选择硬编码逻辑——

笔者无数次遇到过这种场景,一个上午刚刚上线的策略,没过1个小时,攻击者或者欺诈者就已经试出绕过策略的方法了,如果你的风险控制逻辑是硬编码,那么恭喜你,再走一遍开发测试发布流程。

快速响应是安全的生命线,无法想象还有比被攻击者胖揍48小时然后才反应过来去挡脸更让人沮丧的事情了。

所以策略引擎必须能把策略逻辑从业务逻辑中解藕出来,让防御者可以灵活配置规则在静默模式下验证和实时上线生效,并可以去随时调整。

类似的开源框架有很多,各有优劣,但如果需要降低学习曲线,必须进行一层包装(这里又是一个比较大的话题,就先略过了)。

坑位标注:

1、Sharding会影响到你的策略

为了支持并发和性能,通常在利用集群计算变量的时候我们会用到sharding。

sharding方式会按IP把数据分配到不同的运算单元中去处理,在读取结果的时候按IP去集群中的某台机器中去拿数据,以大幅提升并发处理读取计算结果的能力。

那么,现在如果我想去按某个USER去拿数据的时候,就会发现一个用户在不同IP下的信息被保存在不同的服务器上了,所以单一的Sharding分配肯定是不合理的,这点必须要注意。

2、策略中用到的变量,能不用现场算的就不用

有些简易的策略引擎设计中用到的变量都是到数据库里现场算的,虽然可以极大的提升灵活性(新的变量不需要考虑历史数据回补),但会极大的影响稳定性和响应时长,尤其在业务请求爆发的时候几乎都会出现宕机无响应的问题。

要知道业务研发对安全的结果并不是那么敏感,但如果出现了问题导致应用不稳定给人添麻烦,被抛弃可能就是早晚的事情,所以变量一定要尽量做到提前计算,并且设立缓存机制。

3、对风险分析要用到的计算资源有充分的认识

毫不夸张的说,合格的风险分析要做的实时、准实时计算量要大过应用内所有计算的总和甚至超过几倍。

其实这也很好理解,比如一个典型登录场景,业务要做的逻辑最主要的就是检查密码和帐号的身份是否吻合,而风控要把这登录用户的历史档案全部拉出来看个遍,然后根据风控策略来决定是否放行。所以在规划风险分析要用到的资源时请不要吝啬,按业务5X甚至10X的标准来评估风险分析的资源需求。

如果说信息采集主要看的是安全产品经理的沟通协调能力,设计风险分析功能更多的就是考验安全产品经理的逻辑思维能力。

到了这样一个阶段,外部冗杂的沟通协调已经结束,但如何最大化利用前期打下的基础,需要对风险问题的分析、决策过程有一个非常清晰的认识,这里也有一个比较好的标准来去检验:

分析平台设计的差,那么就只有设计者自己会用;

设计的好,你会发现处理投诉的客服、分析师都会很乐意来用你的分析平台为他们解决问题。

源链接

Hacking more

...