資料介紹
軟件簡介
aswan 是陌陌開發(fā)的風(fēng)控系統(tǒng)靜態(tài)規(guī)則引擎,零基礎(chǔ)簡易便捷的配置多種復(fù)雜規(guī)則,實(shí)時(shí)高效管控用戶異常行為。
架構(gòu)介紹
快速啟動
- 本項(xiàng)目依賴redis, mysql, mongodb,因此需準(zhǔn)備環(huán)境并更改配置項(xiàng)
# 為了簡單可以使用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中創(chuàng)建risk_control庫
docker exec -it mysql mysql -h 127.0.0.1 -u root -p # 后續(xù)需輸入密碼 若以上述方式安裝mysql,密碼為root. CREATE DATABASE risk_control CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 創(chuàng)建數(shù)據(jù)庫時(shí)指定編碼格式,規(guī)避亂碼問題(注意: 此編碼格式在mysql低版本上可能有兼容性問題)
- 安裝所需依賴,本項(xiàng)目基于python2.7進(jìn)行開發(fā),可運(yùn)行pip install -r requirements.txt安裝依賴包
- 初始化django運(yùn)行所需的表并創(chuàng)建賬戶,并可以預(yù)生成一些數(shù)據(jù)(可選)
# 在www目錄下 python manage.py makemigrations && python manage.py migrate # 創(chuàng)建管理員賬戶 此處詳見 其它操作--增加用戶 python manage.py createsuperuser # 后續(xù) 依次輸入用戶名、密碼、郵箱 即可創(chuàng)建一個(gè)管理員賬號 # 如果希望對系統(tǒng)有一個(gè)直觀的感受,可以使用如下指令來預(yù)注入一些數(shù)據(jù) python manage.py init_risk_data
- 啟動服務(wù)
# 在aswan下以nohup的方式啟動服務(wù)進(jìn)程、管理后臺、攔截日志消費(fèi)進(jìn)程 bash start.sh
后臺介紹
-
名單管理
為名單型策略提供基礎(chǔ)的數(shù)據(jù)管理功能。
名單數(shù)據(jù)的維度包括:用戶ID、IP、設(shè)備號、支付賬號、手機(jī)號。后續(xù)也可以根據(jù)自己的需求擴(kuò)充其他的維度。
名單包含三個(gè)類型:黑、白、灰名單
名單必須屬于某個(gè)項(xiàng)目(用于確定名單的范圍),可以在名單管理-名單項(xiàng)目管理中添加項(xiàng)目。
-
名單型策略
描述符為**{參數(shù)名:單選,假設(shè)是“用戶ID”} {操作碼:在/不在} {XX項(xiàng)目:單選,可選全局} 的 {維度:單選}{方向:黑/白/灰名單}**
示例:用戶ID 在 初始項(xiàng)目 的 用戶黑名單 中
-
布爾型策略
不傳閾值的布爾型,描述符為?{參數(shù)名:單選,假設(shè)是"賬號ID"} {操作碼:是/不是} {內(nèi)置函數(shù):異常用戶}?示例:賬號ID是異常用戶
傳閾值的布爾型,描述符為?{參數(shù)名:單選,假設(shè)是"賬號ID"} {操作碼:大于/小于/等于/不等于} {內(nèi)置函數(shù):歷史登錄次數(shù)} {閾值:170}?示例:賬號ID歷史登錄次數(shù)大于100
內(nèi)置函數(shù)
是什么?就是自定義的一些邏輯判斷函數(shù),只需要滿足要求返回布爾值即可。比如注冊時(shí)間是否在某個(gè)范圍以內(nèi),當(dāng)前設(shè)備是否是常用設(shè)備。 -
時(shí)段頻控型策略
描述符為?同一 {計(jì)數(shù)維度:單選,假設(shè)是“設(shè)備”} 在 {時(shí)段:時(shí)間跨度} 內(nèi)限制 {閾值:整數(shù)N} 次 某動作?示例:同一設(shè)備一天內(nèi)限制操作10次. 可是我怎么知道當(dāng)前已經(jīng)有多少次呢?這就需要上報(bào),上報(bào)后將計(jì)數(shù) 詳見第9條?數(shù)據(jù)源管理
-
限用戶數(shù)型策略
描述符為?同一 {計(jì)數(shù)維度:單選,假設(shè)是“設(shè)備”} 在 {時(shí)段:時(shí)間跨度} 內(nèi)限制 {閾值:整數(shù)N} 個(gè)用戶
示例:同一設(shè)備當(dāng)天限10個(gè)用戶 此策略同樣需要上報(bào)的數(shù)據(jù),且由于與用戶相關(guān),因此上報(bào)數(shù)據(jù)中必須包含user_id字段(在數(shù)據(jù)源中需配置) 詳見第9條?數(shù)據(jù)源管理
-
規(guī)則管理
管控原子:命中某條策略后的管控動作,比如攔截... 把上面2--5中所述的策略原子按照優(yōu)先級組合起來,由上向下執(zhí)行,直到命中某條策略,則返回對應(yīng)策略的管控原子。此模塊更多是重交互,完成策略的配置、組合、權(quán)重等等
-
日志管理
所有命中策略的日志均在此展示,也會包含審計(jì)相關(guān)的日志,
下一期會基于此日志,開放攔截溯源功能
。 -
權(quán)限配置
供權(quán)限設(shè)置使用,精確限定某個(gè)用戶能看哪些頁面的數(shù)據(jù)。 詳見 其它 -- 權(quán)限管理。
-
數(shù)據(jù)源配置
示例策略:同一設(shè)備一天內(nèi)限制登錄1000次 那么每次登陸就需要上報(bào)一條數(shù)據(jù),系統(tǒng)會分類計(jì)數(shù),并分類存儲。 存儲的名字叫啥?就是此處要配置的數(shù)據(jù)源。對于此策略,只需要配置數(shù)據(jù)源,命名為login_uid, 字段包含uid, uid類型是string。然后程序就能根據(jù)uid為維度計(jì)數(shù),并自動計(jì)算指定時(shí)間窗口內(nèi)是否超出指定閾值。
重要:由于邏輯必然依賴時(shí)間信息,為通用且必需字段,timestamp為默認(rèn)隱含字段,類型是時(shí)間戳(精確到秒,整數(shù))
調(diào)用樣例
-
調(diào)用查詢服務(wù)
假設(shè)存在id為1的規(guī)則,則可以通過如下方式查詢是否命中策略
curl 127.0.0.1:50000/query/ -X POST -d '{"rule_id": "1", "user_id": "10000"}' -H "Content-Type:application/json"
-
調(diào)用上報(bào)服務(wù)
假設(shè)存在名稱為test的數(shù)據(jù)源, 且數(shù)據(jù)源含有的數(shù)據(jù)是: {"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"
-
關(guān)于服務(wù)拆分
開源樣例中,為了簡化安裝部署,查詢和上報(bào)揉進(jìn)了一個(gè)服務(wù)。實(shí)際場景中,顯然讀寫應(yīng)該分離。
1.可以直接此方式部署2份,域名不同,一份用于查詢(上報(bào)接口不被訪問),一份用于上報(bào)(查詢接口不被訪問),流量分發(fā)在nginx層完成
2.risk_server.py中修改配置URL_2_HANDLERS,選擇您需要的服務(wù)接口部署
內(nèi)置函數(shù)的擴(kuò)展
-
不帶閾值的內(nèi)置函數(shù)擴(kuò)展
以
是否異常用戶
內(nèi)置函數(shù)為例
代碼見 aswan/buildin_funcs/sample.py 中的 is_abnormal 方法 -
帶閾值的內(nèi)置函數(shù)布爾型策略擴(kuò)展
以
歷史登錄次數(shù)
內(nèi)置函數(shù)為例
代碼見 aswan/buildin_funcs/sample.py 中的 user_login_count 方法
注意:閾值計(jì)算不包含在內(nèi)置函數(shù)中進(jìn)行,控制流詳見 aswan/buildin_funcs/base.py
其它
增加用戶
考慮到企業(yè)用戶大多數(shù)為域賬戶登錄,因此推薦使用LDAP認(rèn)證模塊直接集成。但考慮到大家的場景不一樣,因此也可以手動增加用戶,樣例代碼如下:
# 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)
添加完成后,讓用戶登錄,然后管理員配置權(quán)限即可。
權(quán)限管理
目前的權(quán)限模型包含如下元素,可在對應(yīng)的頁面進(jìn)行配置。
元素名稱 | 元素含義 | 配置方式 | 注 |
---|---|---|---|
uri | 風(fēng)控管理后臺的一個(gè)獨(dú)立uri | 開發(fā)時(shí)自動產(chǎn)生 | 此處uri為相對路徑,例如: /permissions/groups/ |
uri組 | 多個(gè)相互關(guān)聯(lián)的uri可以被放置到一個(gè)uri組中 | /permissions/uri_groups/ | - |
權(quán)限組 | 多個(gè)uri組可以被分配到一個(gè)權(quán)限組中 | /permissions/groups/ | - |
用戶 | 用戶即為獨(dú)立的個(gè)人/員工 | /permissions/users/ | 1. 本系統(tǒng)在界面上不提供添加用戶的功能;2. 用戶可以被分配到某個(gè)權(quán)限組中,也可以直接配置uri組 |
管理員 | 即為系統(tǒng)的擁有者,默認(rèn)擁有所有權(quán)限 | 手動配置 | - |
具體圖示如下:
配置相關(guān)
目前Django部分的配置均存放于 www/settings 目錄,非Django部分的配置均位于 config 目錄下。
為了在不同環(huán)境加載不同的配置,我們使用了RISK_ENV這個(gè)環(huán)境變量,系統(tǒng)在運(yùn)行時(shí)會自動通過這個(gè)環(huán)境變量的值加載對應(yīng)的配置文件。
為了方便項(xiàng)目啟動,在未設(shè)置這個(gè)值時(shí),系統(tǒng)默認(rèn)會加載 develop 環(huán)境的配置。而在執(zhí)行測試時(shí)(python manage.py test)時(shí),RISK_ENV的值必須是 test 。
- 含風(fēng)電并網(wǎng)系統(tǒng)的魯棒區(qū)間優(yōu)化調(diào)度模型 11次下載
- DFM使用規(guī)則
- 面向醫(yī)療臨床的準(zhǔn)靜態(tài)彈性成像系統(tǒng) 15次下載
- 基于Unity3D游戲引擎的神經(jīng)反饋治療系統(tǒng) 5次下載
- 將置信規(guī)則庫分級優(yōu)化的網(wǎng)絡(luò)安全態(tài)勢預(yù)測方法 11次下載
- protel99建庫規(guī)則大全 0次下載
- 提升風(fēng)電消納區(qū)間的魯棒機(jī)組組合 4次下載
- 在網(wǎng)關(guān)上實(shí)現(xiàn)規(guī)則引擎方法 0次下載
- 風(fēng)電并網(wǎng)的靜態(tài)電壓穩(wěn)定性研究 33次下載
- 汽車的低成本引擎管理系統(tǒng)
- 基于規(guī)則引擎的實(shí)例級權(quán)限控制研究
- 業(yè)務(wù)規(guī)則引擎Ilog JRules工作引擎的工作機(jī)制分析
- 客車風(fēng)暖系統(tǒng)的優(yōu)化設(shè)計(jì)
- 軟件安全漏洞的靜態(tài)檢測技術(shù)
- 基于SOA的業(yè)務(wù)規(guī)則代理研究
- Synopsys推出一款低功耗靜態(tài)規(guī)則檢查工具—VCLP 1512次閱讀
- 履約核心引擎低代碼化原理與實(shí)踐 513次閱讀
- 如何利用D3引擎來創(chuàng)建APP和短信推送規(guī)則 1066次閱讀
- 詳解Xpedition規(guī)則驅(qū)動設(shè)計(jì) 1w次閱讀
- Apriori關(guān)聯(lián)規(guī)則算法(Python代碼) 3393次閱讀
- 軟DSP處理用于語音引擎設(shè)計(jì)是需注意哪些事項(xiàng) 2201次閱讀
- WPCS風(fēng)電控制系統(tǒng)的構(gòu)成、功能及應(yīng)用分析 4794次閱讀
- 測風(fēng)設(shè)備的影響因素有哪些 3031次閱讀
- FPGA系統(tǒng)設(shè)計(jì)的靜態(tài)功耗和動態(tài)功耗分析與進(jìn)行仿真建模 8641次閱讀
- 靜態(tài)工作點(diǎn)是什么_靜態(tài)工作點(diǎn)的作用 6.3w次閱讀
- 關(guān)于堆棧和靜態(tài)以及動態(tài)內(nèi)存的理解 2529次閱讀
- 怎樣選擇存儲引擎?MySQL存儲引擎怎么樣? 4566次閱讀
- 風(fēng)電機(jī)組變槳系統(tǒng)的形式_風(fēng)電機(jī)組變槳系統(tǒng)原理與維護(hù) 3.2w次閱讀
- 在雙線式麥克風(fēng)電路中使用MEMS麥克風(fēng) 9874次閱讀
- 變頻協(xié)調(diào)控制技術(shù)在一次風(fēng)高壓變頻系統(tǒng)中的應(yīng)用 1066次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多