发布时间:2026-07-21阅读(1)
陌陌风控系统静态规则引擎,零基础简易便捷的配置多种复杂规则,实时高效管控用户异常行为。

【名词解释】
策略原子:基于用户行为数据进行异常判断的基础元素,如设备黑名单、手机号黑名单等
管控原子:用户命中策略原子后对应的管控措施,如短信验证码、滑动验证码等;
规则:基于不同业务点建立的规则ID,由多条策略原子 管控原子构成;
错误提示码:用于前端规则命中后的提示,便于运营人员排查问题,解决问题。
【方案设计简介】
规则配置:用于不同业务点的规则配置;
策略配置:用于设置策略原子及策略原子;
数据源配置:基于业务数据而设置的数据来源key,用于风控策略的运算;
数据统计:用户命中规则的数据统计与展示;
【使用说明】
当一个业务需要接入风控系统进行管控时,通过以下步骤进行配置
1. 建立该业务数据源,业务方需要向此数据源推送业务相关数据;
2. 建立该业务所需要的策略原子,部分策略原子需要依赖该业务数据源;
3. 新建规则配置,设置策略名称、权重、策略原子组、管控原子、提示语,完成规则配置;
4. 业务方调用此配置,进行业务风控;
快速启动
# 为了简单可以使用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
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低版本上可能有兼容性问题)
# 在www目录下 python manage.py makemigrations && python manage.py migrate # 创建管理员账户 此处详见 其它操作--增加用户 python manage.py createsuperuser # 后续 依次输入用户名、密码、邮箱 即可创建一个管理员账号 # 如果希望对系统有一个直观的感受,可以使用如下指令来预注入一些数据 python manage.py init_risk_data
# 在aswan下以nohup的方式启动服务进程、管理后台、拦截日志消费进程 bash start.sh
后台介绍




调用样例
curl 127.0.0.1:50000/query/ -X POST -d {"rule_id": "1", "user_id": "10000"} -H "Content-Type:application/json"
curl 127.0.0.1:50000/report/ -X POST -d {"source_name": "test", "user_id": "10000", "ip": "127.0.0.1", "uid": "abcabc112333222", "timestamp": 1559049606} -H "Content-Type:application/json"
内置函数的扩展
其它
增加用户
考虑到企业用户大多数为域账户登录,因此推荐使用LDAP认证模块直接集成。但考虑到大家的场景不一样,因此也可以手动增加用户,样例代码如下:
# coding=utf-8from django.contrib.auth.models import Userusername = usernamepassword = passwordemail = email@momo.comfirst_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 。
git地址:https://github.com/momosecurity/aswan
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图