当前位置: 首页 > 后端技术 > Java

从0到1的智能风控决策引擎构建

时间:2023-04-02 00:54:48 Java

介绍互联网时代,万物互联,网络安全形势日趋严峻。安全是企业的基石。风控在企业中扮演着“警察”的角色,运用各种技术和手段保护企业内部用户的利益不受侵害。风控决策指南是风控中心的入口,提供业务风险场景事件的接入、复杂决策的可视化编排、丰富的特征变量和场景识别服务等功能。与传统风控引擎需要开发背景和算法背景相比,本文介绍的决策引擎构建后不需要开发背景,甚至不需要算法建模背景。它可以配置并作为纯策略操作应用于业务决策。实时打击黑产。决策引擎分解风险事件。风险事件对应一个风险领域,是对特定业务事件领域的具体抽象,方便战略运营商管理领域的对抗规则的使用。示例:假设裂变营销场景要防控。比如将当前内容分享到朋友圈,即可获得88元精美礼品一份。那么风险区域大致可以分为发起分享(发起频率/作弊)、接受分享(followers/Group/Frequency)和分享后的奖励(Frequency/Group/AttributionGroup),每一步对应不同的风险特征,需要专有策略部署和预防。决策流程如上。风控团队与业务团队充分沟通后,大致了解了业务玩法的风险点,可以明确划分“风险事件”。那么如何高效、稳定地管理当前领域的风险应对措施,是风控研发面临的重大挑战。为了打击黑产,战略运营商需要时时刻刻改变防控措施,时效性要高,即期望立竿见影。生产变更如何安全高效的在线部署?为了快速迭代,早期的团队使用了XML模式更改。优点是可扩展性高,缺点也很明显:研发只能供战略家修改决策流配置使用,战略家根本不懂也不敢碰XML“代码”。......随着团队的扩大,专业的UED和前端开发小伙伴的加入,可以支持我们在视觉和运营上下功夫,参考业界BPMN2.0工作流设计规范,将枯燥复杂的XML代码转化为决策流程安排配置模式大大增加了战略运营商的对抗效率,也解放了后端研发人员,他们不再需要挖掘XML代码而担心出错。1、战略组的“战略节点”是决策过程中最重要的节点。它内在关联着大量的反黑产规则,涉及到各个规则如何配合,决策结果如何输出。在对抗黑品的过程中,前辈们总结出了一套模型,可以快速部署规则,最大限度地发挥打击黑品的效果,同时又不会“误杀”好用户。1.1.策略模式策略分为两种模式:记分卡和最差匹配。下面,我将详细介绍每种模式的工作原理和适用场景。记分卡这里的记分卡不是指数据模型记分卡,而是专家记分卡。通俗地说,就是根据专家的经验,对不同的规则进行加权评分。如果最终分数命中拒绝区间段,则需要拒绝。这类模式对于前期缺乏用户“黑标”、直接依赖专家经验的情况来说是一个不错的选择。记分卡是一个概率问题。黑用户越多,规则越多,获得的积分就越多,风险就越大。例如:黑产为了对抗风控,会找大量代理IP或者修改GPS定位来扰乱风控系统的检测。同时,还有“猫池”等设备提供大量手机账号。但目前有不少普通用户拥有两部手机,而且由于工作原因,经常飞,也就是地理位置不断变化,所以攻略制定的评分规则如下:是否连载numberrule分数异地1多地102设备登录103所有登录设备去重大于等于4204不同登录设备切换太快305提现变化40分数区间如下被人为拒绝review[0,20](20,40](40,∞]可以看出,普通用户只会打0,多设备用户(2到3)基本打20,不会造成干扰。即使普通用户经常直接跑各个城市,不会说上一秒在上海,下一秒在广州。打黑产的痕迹还是有的!流处理的概念,即任何一条规则只要命中,就会立即被拒绝。这种模式包含的规则非常明确,必须是可解释的。如果命中,基本可以断定请求会被拒绝。例如,如果同一台设备同时发起和接受邀请,则属于粉丝欺诈,显然不符合赛事规则。它可以立即被拒绝。谨慎选择最差的匹配模式。它是专家经验的浓缩。必须在生产环境中多次验证。客户投诉被错误拒绝严重甚至阻碍业务发展,极大损害品牌价值。1.2.策略组装策略是对当前风险场景中某个风险点的抽象。例如:在邀请风险场景中,可以有设备策略、手机号策略、组策略等,策略包下是规则,负责管理规则的生命周期。规则规则是风控决策流程中最小的“原子”单元。一条规则的组成如下:lvaluecomparatorrvaluevariable(也叫feature,index等)>,<,=,>=,<=,contains,belongsto。..Constant/Variable例子:在设备策略包中包含如下规则:所有登录设备去重数大于等于4,然后比较下面左值比较器右值登录设备去重数>=4规则组单条规则命中可能性对用户的干扰程度比较大。这时候就需要结合规则判断,即规则组。规则组可以编程OR计算逻辑:满足全部、满足一个、自定义,其中自定义支持复杂条件表达式1||(2&&3)||4、满足不同规则组合的需要。2.列表“列表节点”是决策流程中的一个重要功能,也是最危险的防御动作之一。为什么需要列表?假设你是一名黑客。如果没有清单,每次都需要执行决策流程,对计算和成本都是很大的浪费。然后,为了提高性能和成本的考虑,你会被标记直接屏蔽。这时候在决策流入口添加一个新的列表节点,可以简单的理解为这是一个超大的“缓存”模块,那么被拉黑的用户就直接拒绝了,不需要再往下决策流了.同理,判断为高价值低风险的用户也可以直接加白,直接通过,无需等待。只有真正的纯新用户或“摇摆”客户才需要运行决策流程来判断风险。黑白名单简单粗暴,使用方便。简单粗暴就意味着容易出问题。一不留神,就会“坑死自己”。一次性添加黑名单数据,可能会直接侵害大部分正常用户。同样,白名单的随意添加也可能为恶意用户打开方便之门。那么这些列表是如何产生的呢?黑名单提取历史恶意数据,如设备、手机号、IP等,同时与第三方小伙伴合作,共同建设黑名单库(毕竟已经入驻很久了).白名单最简单粗暴的方法就是看价值和风险的四个象限。价值高、风险低的用户一定是我们的目标客户(不是绝对的,但也可以变相)。这时候可以直接给这些用户加白。列表必须是时效性的,列表内部必须有屏障,可以理解为域隔离。怎么理解呢?即用户在当前场景下是坏的,而在其他场景下是好的,那么这个时候,只需要对当前的细分进行隔离和阻断即可。及时性是为了解决黑客用户知道如何维护账户,或者一开始就伪装成高价值黑客的问题。风控程序需要定期梳理和重新计算哪些用户可以加白加黑,做到奖惩分明,尽可能不做错,不糟蹋任何人。3、分支决策流图需要“分支节点”来引导流程。数据节点(start、list、strategy节点都是数据节点)负责把计算出来的数据吐出来。分支节点获取到数据后,根据条件表达式将流引导到对应的后续节点。决策流到达分支节点后,按照分支上条件的先后顺序执行条件表达式,只要满足其中一个条件,就继续执行。4.Fork/JoinFork&Join是决策流编排中的一个高级概念节点。决策流其实就是一个巨大的DAG(DirectedAcyclicGraph)。如果每条路径都同步执行,太费时了。业务端留给风控决策的时间不会超过200ms,但是风控涉及到大量的计算和I/O操作。此时可以配置Fork/Join节点并发进行流程协调,缩短路径时间。决策流的性能优化非常具有挑战性。这只是一个小的优化点。限于篇幅,后面会专门介绍性能优化。稳定性稳定性是老生常谈,更何况是能掌握“生死”百科全书的风控体系。风控对于系统的稳定性来说比策略的执行更重要,就是策略的底线是通过,在不影响正常用户体验的情况下,让一些被黑的用户进入,我们可以有多种方法来之后抓到黑客出来封禁(前提是线下响应够快,各个系统配合够好,黑产本身效率很高)。极限性能业务留给风控策略执行的时间不超过200ms。短短200ms,风控要处理大量的计算逻辑,矛盾重重。风控是我见过的为数不多的真正利用并发“飞起来”的系统之一。为了节省时间,大量的并行计算都设计了timeout,将以空间换时间的思想运用到了极致。提前计算好放在那儿,等做决定的时候,直接在内存里计算就可以了。风控研发最难的是考虑当前执行是否不能超过超时时间,这是一个重大的技术挑战。灰度支持:推出政策亲民策略是“高风险”动作。如果线下分析操作失误,可能会导致大量优质用户被拦截,引发大量客户投诉。这个损失比较大,所以决策流在设计之初就应该考虑新版本灰度上线等功能的支持,可以按照0-100的流量逐渐增加量以尽量减少损失。当回滚降级过程中出现生产问题时,首先需要观察当前生产变化。如果是决策流程的变化,需要支持版本回滚功能,保证问题能够在第一时间恢复。对于大促或大流量高峰,需要根据具体的风险场景实现限流/熔断功能,并参考业界开源哨兵开发一套防崩盘模式,保证系统稳定性。谈交易监控是老生常谈,但是真的很重要!试想一下,如果不监控某个场景下决策的拒绝结果,如果某个变更导致线上大量拒绝,用户无法正常下线,想想就惨不忍睹!综上所述,决策引擎是风控的大脑。风控可以高效打击黑产,决策引擎是门面。目前,决策引擎配置编排,正朝着智能化、自动化方向建设,帮助业务人员更好地部署规则,提高效率。同时,我们也在思考如何让业务做到快速、“无感知”,或者说侵入性最小(低成本)的访问风控,这也是一个挑战。黑人也是人,也在对抗中进化,挑战风控和安全壁垒的新手段也会越来越多,任重而道远!昔日精彩的性能优化堪称一绝——我怎么进了火焰图做风控?Flink实现了风控场景下的实时特性。欢迎关注公众号:咕咕鸡技术专栏个人技术博客:https://jifuwei.github.io/