资料介绍
软件简介
aswan 是陌陌开发的风控系统静态规则引擎,零基础简易便捷的配置多种复杂规则,实时高效管控用户异常行为。
架构介绍
快速启动
- 本项目依赖redis, mysql, mongodb,因此需准备环境并更改配置项
# 为了简单可以使用docker安装 # docker安装文档地址(以ubuntu为例): https://docs.docker.com/install/linux/docker-ce/ubuntu/ mongo: docker run -d --name mongo -v $HOME/docker_volumes/mongodb:/data/db -p 27017:27017 mongo:latest mysql: docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -v $HOME/docker_volumes/mysql:/var/lib/mysql -v $HOME/docker_volumes/conf/mysql:/etc/mysql/conf.d -p 3306:3306 mysql:5.6 redis: docker run -d --name redis -p 6379:6379 -v $HOME/docker_volumes/redis:/var/lib/redis redis:latest
- 在mysql中创建risk_control库
docker exec -it mysql mysql -h 127.0.0.1 -u root -p # 后续需输入密码 若以上述方式安装mysql,密码为root. CREATE DATABASE risk_control CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 创建数据库时指定编码格式,规避乱码问题(注意: 此编码格式在mysql低版本上可能有兼容性问题)
- 安装所需依赖,本项目基于python2.7进行开发,可运行pip install -r requirements.txt安装依赖包
- 初始化django运行所需的表并创建账户,并可以预生成一些数据(可选)
# 在www目录下 python manage.py makemigrations && python manage.py migrate # 创建管理员账户 此处详见 其它操作--增加用户 python manage.py createsuperuser # 后续 依次输入用户名、密码、邮箱 即可创建一个管理员账号 # 如果希望对系统有一个直观的感受,可以使用如下指令来预注入一些数据 python manage.py init_risk_data
- 启动服务
# 在aswan下以nohup的方式启动服务进程、管理后台、拦截日志消费进程 bash start.sh
后台介绍
-
名单管理
为名单型策略提供基础的数据管理功能。
名单数据的维度包括:用户ID、IP、设备号、支付账号、手机号。后续也可以根据自己的需求扩充其他的维度。
名单包含三个类型:黑、白、灰名单
名单必须属于某个项目(用于确定名单的范围),可以在名单管理-名单项目管理中添加项目。
-
名单型策略
描述符为**{参数名:单选,假设是“用户ID”} {操作码:在/不在} {XX项目:单选,可选全局} 的 {维度:单选}{方向:黑/白/灰名单}**
示例:用户ID 在 初始项目 的 用户黑名单 中
-
布尔型策略
不传阈值的布尔型,描述符为 {参数名:单选,假设是"账号ID"} {操作码:是/不是} {内置函数:异常用户} 示例:账号ID是异常用户
传阈值的布尔型,描述符为 {参数名:单选,假设是"账号ID"} {操作码:大于/小于/等于/不等于} {内置函数:历史登录次数} {阈值:170} 示例:账号ID历史登录次数大于100
内置函数
是什么?就是自定义的一些逻辑判断函数,只需要满足要求返回布尔值即可。比如注册时间是否在某个范围以内,当前设备是否是常用设备。 -
时段频控型策略
描述符为 同一 {计数维度:单选,假设是“设备”} 在 {时段:时间跨度} 内限制 {阈值:整数N} 次 某动作 示例:同一设备一天内限制操作10次. 可是我怎么知道当前已经有多少次呢?这就需要上报,上报后将计数 详见第9条 数据源管理
-
限用户数型策略
描述符为 同一 {计数维度:单选,假设是“设备”} 在 {时段:时间跨度} 内限制 {阈值:整数N} 个用户
示例:同一设备当天限10个用户 此策略同样需要上报的数据,且由于与用户相关,因此上报数据中必须包含user_id字段(在数据源中需配置) 详见第9条 数据源管理
-
规则管理
管控原子:命中某条策略后的管控动作,比如拦截... 把上面2--5中所述的策略原子按照优先级组合起来,由上向下执行,直到命中某条策略,则返回对应策略的管控原子。此模块更多是重交互,完成策略的配置、组合、权重等等
-
日志管理
所有命中策略的日志均在此展示,也会包含审计相关的日志,
下一期会基于此日志,开放拦截溯源功能
。 -
权限配置
供权限设置使用,精确限定某个用户能看哪些页面的数据。 详见 其它 -- 权限管理。
-
数据源配置
示例策略:同一设备一天内限制登录1000次 那么每次登陆就需要上报一条数据,系统会分类计数,并分类存储。 存储的名字叫啥?就是此处要配置的数据源。对于此策略,只需要配置数据源,命名为login_uid, 字段包含uid, uid类型是string。然后程序就能根据uid为维度计数,并自动计算指定时间窗口内是否超出指定阈值。
重要:由于逻辑必然依赖时间信息,为通用且必需字段,timestamp为默认隐含字段,类型是时间戳(精确到秒,整数)
调用样例
-
调用查询服务
假设存在id为1的规则,则可以通过如下方式查询是否命中策略
curl 127.0.0.1:50000/query/ -X POST -d '{"rule_id": "1", "user_id": "10000"}' -H "Content-Type:application/json"
-
调用上报服务
假设存在名称为test的数据源, 且数据源含有的数据是: {"ip": "string", "user_id": "string", "uid": "string"}
curl 127.0.0.1:50000/report/ -X POST -d '{"source": "test", "user_id": "10000", "ip": "127.0.0.1", "uid": "abcabc112333222", "timestamp": 1559049606}' -H "Content-Type:application/json"
-
关于服务拆分
开源样例中,为了简化安装部署,查询和上报揉进了一个服务。实际场景中,显然读写应该分离。
1.可以直接此方式部署2份,域名不同,一份用于查询(上报接口不被访问),一份用于上报(查询接口不被访问),流量分发在nginx层完成
2.risk_server.py中修改配置URL_2_HANDLERS,选择您需要的服务接口部署
内置函数的扩展
-
不带阈值的内置函数扩展
以
是否异常用户
内置函数为例
代码见 aswan/buildin_funcs/sample.py 中的 is_abnormal 方法 -
带阈值的内置函数布尔型策略扩展
以
历史登录次数
内置函数为例
代码见 aswan/buildin_funcs/sample.py 中的 user_login_count 方法
注意:阈值计算不包含在内置函数中进行,控制流详见 aswan/buildin_funcs/base.py
其它
增加用户
考虑到企业用户大多数为域账户登录,因此推荐使用LDAP认证模块直接集成。但考虑到大家的场景不一样,因此也可以手动增加用户,样例代码如下:
# coding=utf-8 from django.contrib.auth.models import User username = 'username' password = 'password' email = 'email@momo.com' first_name = '测' last_name = '试' # 普通用户 User.objects.create_user(username=username, password=password, email=email, first_name=first_name, last_name=last_name) # 管理员账户 User.objects.create_superuser(username=username, password=password, email=email, first_name=first_name, last_name=last_name)
添加完成后,让用户登录,然后管理员配置权限即可。
权限管理
目前的权限模型包含如下元素,可在对应的页面进行配置。
元素名称 | 元素含义 | 配置方式 | 注 |
---|---|---|---|
uri | 风控管理后台的一个独立uri | 开发时自动产生 | 此处uri为相对路径,例如: /permissions/groups/ |
uri组 | 多个相互关联的uri可以被放置到一个uri组中 | /permissions/uri_groups/ | - |
权限组 | 多个uri组可以被分配到一个权限组中 | /permissions/groups/ | - |
用户 | 用户即为独立的个人/员工 | /permissions/users/ | 1. 本系统在界面上不提供添加用户的功能;2. 用户可以被分配到某个权限组中,也可以直接配置uri组 |
管理员 | 即为系统的拥有者,默认拥有所有权限 | 手动配置 | - |
具体图示如下:
配置相关
目前Django部分的配置均存放于 www/settings 目录,非Django部分的配置均位于 config 目录下。
为了在不同环境加载不同的配置,我们使用了RISK_ENV这个环境变量,系统在运行时会自动通过这个环境变量的值加载对应的配置文件。
为了方便项目启动,在未设置这个值时,系统默认会加载 develop 环境的配置。而在执行测试时(python manage.py test)时,RISK_ENV的值必须是 test 。
- 含风电并网系统的鲁棒区间优化调度模型 11次下载
- DFM使用规则
- 面向医疗临床的准静态弹性成像系统 15次下载
- 基于Unity3D游戏引擎的神经反馈治疗系统 5次下载
- 将置信规则库分级优化的网络安全态势预测方法 11次下载
- protel99建库规则大全 0次下载
- 提升风电消纳区间的鲁棒机组组合 4次下载
- 在网关上实现规则引擎方法 0次下载
- 风电并网的静态电压稳定性研究 33次下载
- 汽车的低成本引擎管理系统
- 基于规则引擎的实例级权限控制研究
- 业务规则引擎Ilog JRules工作引擎的工作机制分析
- 客车风暖系统的优化设计
- 软件安全漏洞的静态检测威廉希尔官方网站
- 基于SOA的业务规则代理研究
- Synopsys推出一款低功耗静态规则检查工具—VCLP 1512次阅读
- 履约核心引擎低代码化原理与实践 513次阅读
- 如何利用D3引擎来创建APP和短信推送规则 1066次阅读
- 详解Xpedition规则驱动设计 1w次阅读
- Apriori关联规则算法(Python代码) 3393次阅读
- 软DSP处理用于语音引擎设计是需注意哪些事项 2201次阅读
- WPCS风电控制系统的构成、功能及应用分析 4794次阅读
- 测风设备的影响因素有哪些 3031次阅读
- FPGA系统设计的静态功耗和动态功耗分析与进行仿真建模 8641次阅读
- 静态工作点是什么_静态工作点的作用 6.3w次阅读
- 关于堆栈和静态以及动态内存的理解 2529次阅读
- 怎样选择存储引擎?MySQL存储引擎怎么样? 4566次阅读
- 风电机组变桨系统的形式_风电机组变桨系统原理与维护 3.2w次阅读
- 在双线式麦克风电路中使用MEMS麦克风 9874次阅读
- 变频协调控制威廉希尔官方网站 在一次风高压变频系统中的应用 1066次阅读
下载排行
本周
- 1ADI高性能电源管理解决方案
- 2.43 MB | 446次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 134次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 120次下载 | 免费
- 4如何正确测试电源的纹波
- 0.36 MB | 5次下载 | 免费
- 5550W充电机原理图
- 0.13 MB | 2次下载 | 6 积分
- 6USB的PD快充协议电压诱骗控制器FS312A中文手册
- 1.51 MB | 2次下载 | 免费
- 7USB的PD和OC快充协议电压诱骗控制器FS312B中文手册
- 1.35 MB | 2次下载 | 免费
- 8ADI公司串行端口开发和故障排除指南
- 343.09KB | 1次下载 | 免费
本月
- 1ADI高性能电源管理解决方案
- 2.43 MB | 446次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 134次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 120次下载 | 免费
- 4使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 53314A函数发生器维修手册
- 16.30 MB | 31次下载 | 免费
- 6美的电磁炉维修手册大全
- 1.56 MB | 22次下载 | 5 积分
- 7感应笔电路图
- 0.06 MB | 10次下载 | 免费
- 8使用TL431设计电源
- 0.67 MB | 8次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420062次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多