Momo risk kontrol sistemi statik kural motoru aswan

Momo Risk Kontrol Sisteminin statik kural motoru, sıfır temelli çeşitli karmaşık kuralları kolayca ve rahatlıkla yapılandırabilir ve kullanıcıların anormal davranışlarını gerçek zamanlı olarak verimli bir şekilde kontrol edebilir.

Sözlük

Strateji Atom: Cihaz kara listesi, cep telefonu numarası kara listesi vb. Gibi kullanıcı davranış verilerine dayanan anormal karar verme için temel unsur.

Kontrol atomu: SMS doğrulama kodu, kayan doğrulama kodu vb. Gibi kullanıcı politika atomuna ulaştıktan sonra karşılık gelen kontrol ölçümleri;

Kurallar: Birden çok politika atomu + kontrol atomlarından oluşan, farklı iş noktalarına dayalı olarak oluşturulan kural kimlikleri;

Hata istemi kodu: Operatörlerin sorunları gidermesi ve çözmesi için uygun olan ön uç kuralı vurulduktan sonra sormak için kullanılır.

Şema Tasarımına Giriş

Kural yapılandırması: farklı iş noktaları için kural yapılandırması;

Strateji yapılandırması: strateji atomunu ve strateji atomunu ayarlamak için kullanılır;

Veri kaynağı yapılandırması: risk kontrol stratejisinin hesaplanmasında kullanılan, iş verilerine dayalı veri kaynağı anahtar seti;

İstatistikler: Kullanıcı isabet kurallarının istatistikleri ve görüntülenmesi;

Kullanım için talimatlar

Bir işletmenin yönetim ve kontrol için risk kontrol sistemine bağlanması gerektiğinde, aşağıdaki adımlarla yapılandırın

1. İş veri kaynağını oluşturun ve iş tarafının işle ilgili verileri bu veri kaynağına aktarması gerekir;

2. İşletmenin gerektirdiği strateji atomlarını oluşturun ve bazı strateji atomlarının iş veri kaynağına güvenmesi gerekir;

3. Yeni bir kural yapılandırması oluşturun, ilke adını, ağırlığını, ilke atom grubunu, kontrol atomunu, bilgi istemi dilini ayarlayın ve kural yapılandırmasını tamamlayın;

4. İş tarafı, iş riski kontrolünü gerçekleştirmek için bu yapılandırmayı çağırır;

Hızlı başlangıç

  • Bu proje redis, mysql, mongodb'ye dayanıyor, bu nedenle ortamı hazırlamanız ve yapılandırma öğelerini değiştirmeniz gerekiyor
  • # Basitlik açısından, kurmak için docker kullanabilirsiniz # docker kurulum belgesi adresi (ubuntu'yu örnek olarak alın): 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: en son 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- s 3306: 3306 mysql: 5.6 redis: docker run -d --name redis -p 6379: 6379 -v $ HOME / docker_volumes / redis: / var / lib / redis redis: en son
  • Mysql'de risk_control kitaplığı oluşturun
  • docker exec -it mysql mysql -h 127.0.0.1 -u root -p # Daha sonra bir parola girmeniz gerekir, mysql'i yukarıdaki şekilde kurarsanız, parola root'tur. VERİTABANI OLUŞTUR risk_control KARAKTER SETİ utf8mb4 COLLATE utf8mb4_unicode_ci; # Karışık sorunları önlemek için veritabanını oluştururken kodlama formatını belirtin (Not: Bu kodlama formatının MySQL'in daha düşük sürümlerinde uyumluluk sorunları olabilir)
  • Gerekli bağımlılıkları kurun, bu proje python2.7 temel alınarak geliştirilmiştir, bağımlı paketleri kurmak için pip install -r requirements.txt dosyasını çalıştırabilirsiniz.
  • Django'nun bir hesap çalıştırması ve oluşturması için gerekli olan tabloları başlatın ve bazı verileri önceden oluşturabilir (isteğe bağlı)
  • # Www dizininde python manage.py makemigrations python manage.py migrate # Bir yönetici hesabı oluşturun, ayrıntılar için buradaki diğer işlemlere bakın - kullanıcı ekleyin python manage.py createsuperuser # Follow-up, bir yönetici hesabı oluşturmak için sırasıyla kullanıcı adını, şifreyi ve e-postayı girin # Sistem hakkında sezgisel bir hisse sahip olmak istiyorsanız, bazı verileri önceden enjekte etmek için aşağıdaki komutları kullanabilirsiniz. python manage.py init_risk_data
  • Servisi başlat
  • # Servis sürecini başlatın, arka planı yönetin ve günlük tüketim sürecini aswan altında nohup şeklinde durdurun bash start.sh

    Arka plan tanıtımı

  • Liste yönetimi
  • Liste stratejisi için temel veri yönetimi işlevlerini sağlayın.
  • Liste verilerinin boyutları şunları içerir: kullanıcı kimliği, IP, cihaz numarası, ödeme hesabı numarası ve cep telefonu numarası. İleride ihtiyaçlarınıza göre diğer boyutları da genişletebilirsiniz.
  • Liste üç tür içerir: siyah, beyaz ve gri listeler
  • Liste belirli bir öğeye ait olmalıdır (listenin kapsamını belirlemek için kullanılır) ve öğeler liste yönetim listesi öğe yönetimine eklenebilir.
  • Liste stratejisi
  • Tanımlayıcı ** {parametre adı: tek seçenek, "kullanıcı kimliği" olduğu varsayılır} {İşlem kodu: mevcut / değil} {XX öğesi: tek seçenek, isteğe bağlı genel} {Boyut: tek seçenek} {yön: siyah / Beyaz / gri liste} **
  • Örnek: Kullanıcı kimliği, ilk projenin kullanıcı kara listesindedir
  • Boole stratejisi
  • Eşiği geçmeyen Boole türü, tanımlayıcı {parametre adı: tek seçenek, "hesap kimliği" varsayılarak} {İşlem kodu: evet / hayır} {yerleşik işlev: anormal kullanıcı} Örnek: hesap kimliği anormal kullanıcı
  • Eşiği geçmek için Boole türü, tanımlayıcı {parametre adı: tek seçimdir, bunun "hesap kimliği" olduğu varsayılır} {İşlem kodu: büyük / küçüktür / eşittir / eşit değildir} {yerleşik işlev: geçmiş oturum açma süreleri} {eşik: 170} Örnek : Geçmişe dönük hesap kimliği girişlerinin sayısı 100'den fazla
  • Yerleşik işlevler nelerdir? Bir Boolean değeri döndürmek için yalnızca gereksinimleri karşılaması gereken bazı özel mantık değerlendirme işlevleridir. Örneğin, kayıt süresinin belirli bir aralıkta olup olmadığı ve mevcut cihazın yaygın olarak kullanılan bir cihaz olup olmadığı.
  • Zaman periyodu frekans kontrol stratejisi
  • Tanımlayıcı aynı {sayma boyutu: tek seçenek, varsayalım ki "cihaz"} {zaman periyodu: zaman aralığı} {eşik değeri: tamsayı N} çarpı bir eylem örneği: aynı cihaz günde 10 kez çalışacak şekilde sınırlandırılmıştır. Ama nasıl bilebilirim Kaç kere oldu? Bunun bildirilmesi gerekiyor ve sayı rapordan sonra sayılacaktır. Ayrıntılar için 9. Madde Veri Kaynağı Yönetimi'ne bakın
  • Sınırlı kullanıcı stratejisi
  • Tanımlayıcı, {period: time span} {eşik: tamsayı N} kullanıcı içinde aynı {sayma boyutu: tek seçenek, "cihaz"} olduğunu varsayıyor
  • Örnek: Aynı cihaz, aynı gün 10 kullanıcıyla sınırlıdır. Bu politikanın ayrıca verileri rapor etmesi gerekir ve kullanıcılarla ilgili olduğu için, raporlanan veriler user_id alanını (veri kaynağında yapılandırılmış) içermelidir. Ayrıntılar için bkz.Madde 9 Veri Kaynağı Yönetimi
  • Kural yönetimi
  • Kontrol atomları: belirli bir stratejiye ulaştıktan sonra eylemleri kontrol edin, mesela yakalama ... Yukarıda 2-5'te açıklanan strateji atomlarını önceliğe göre birleştirin ve belirli bir stratejiye ulaşana kadar yukarıdan aşağıya doğru uygulayın, ardından karşılık gelen Stratejinin kontrol atomu. Bu modül daha çok etkileşim, strateji yapılandırmasını tamamlama, kombinasyon, ağırlıklandırma vb. Konulara odaklanır.
  • Günlük yönetimi
  • Vuruş stratejisinin tüm günlükleri burada görüntülenir ve denetimle ilgili günlükleri de içerir. Bu günlüğe dayalı olarak, bir sonraki sorun durdurma ve izlenebilirlik işlevini açacaktır.
  • Hak Profili
  • Bir kullanıcının görebileceği sayfaların verilerini kesin olarak sınırlamak için izin ayarı için kullanılır. Ayrıntılar için bkz. Diğer - Yetki Yönetimi.
  • Veri kaynağı yapılandırması
  • Örnek strateji: Aynı cihaz günde 1000 kez oturum açmakla sınırlıdır.Daha sonra, her oturum açma için bir veri parçası raporlanmalıdır ve sistem bunları sayacak ve kategoriler halinde saklayacaktır. Mağazanın adı nedir? Bu, burada yapılandırılacak veri kaynağıdır. Bu strateji için, yalnızca login_uid adlı veri kaynağını yapılandırmanız gerekir, alan uid içerir ve uid türü string'dir. Daha sonra program, boyutu kullanıcı kimliğine göre sayabilir ve belirtilen zaman penceresinde belirtilen eşiğin aşılıp aşılmadığını otomatik olarak hesaplayabilir.
  • Önemli: Mantık, zaman bilgisine bağlı olması gerektiğinden, evrensel ve gerekli bir alandır. Zaman damgası varsayılan bir gizli alandır ve tür, zaman damgasıdır (ikincisi için doğru, tam sayı)
  • Çağrı örneği

  • Çağrı sorgulama hizmeti
  • 1 numaralı bir kural olduğunu varsayarsak, stratejiye aşağıdaki yöntemle ulaşılıp ulaşılmadığını sorgulayabilirsiniz.
  • curl 127.0.0.1:50000/query/ -X POST -d '{"rule_id": "1", "user_id": "10000"}' -H "İçerik Türü: uygulama / json"
  • Raporlama hizmetini çağırın
  • Test adında bir veri kaynağı olduğunu ve veri kaynağında bulunan verilerin: {"ip": "string", "user_id": "string", "uid": "string"} olduğunu varsayalım.
  • curl 127.0.0.1:50000/report/ -X POST -d '{"kaynak_adı": "test", "kullanıcı_kimliği": "10000", "ip": "127.0.0.1", "uid": "abcabc112333222", "zaman damgası": 1559049606} '-H "İçerik Türü: uygulama / json"
  • Hizmet bölümü hakkında
  • Açık kaynak örneğinde, kurulum ve dağıtımı basitleştirmek için sorgu ve rapor bir hizmete entegre edilmiştir. Gerçek senaryolarda okuma ve yazmanın birbirinden ayrılması gerektiği açıktır.
  • 1. 2 kopyayı doğrudan bu şekilde farklı alan adları ile dağıtabilirsiniz, biri sorgu için (raporlama arayüzüne erişilmez) ve biri raporlama için (sorgu arayüzüne erişilmez) ve trafik dağıtımı nginx katmanında yapılır
  • 2. risk_server.py içindeki yapılandırma URL_2_HANDLERSi değiştirin, ihtiyacınız olan hizmet arayüzü dağıtımını seçin
  • Yerleşik işlevlerin genişletilmesi

  • Eşiksiz dahili fonksiyon genişletme
  • Anormal kullanıcı yerleşik işlevini örnek olarak alın
  • Kod için aswan / buildin_funcs / sample.py içindeki is_abnormal yöntemine bakın.
  • Eşikli yerleşik işleve sahip Boole stratejisi uzantısı
  • Örnek olarak geçmiş oturum açma sürelerinin yerleşik işlevini ele alın
  • Kod için aswan / buildin_funcs / sample.py içindeki user_login_count yöntemine bakın.
  • Not: Eşik hesaplaması yerleşik işleve dahil değildir ve kontrol akışı aswan / buildin_funcs / base.py içinde ayrıntılı olarak açıklanmıştır.
  • diğer

    kullanıcıyı artır

    Çoğu kurumsal kullanıcının etki alanı hesapları için oturum açtığı düşünüldüğünde, doğrudan entegrasyon için LDAP kimlik doğrulama modülünün kullanılması önerilir. Ancak herkesin senaryolarının farklı olduğunu göz önünde bulundurarak kullanıcıları manuel olarak da ekleyebilirsiniz. Örnek kod aşağıdaki gibidir:

    # kodlama = utf-8 django.contrib.auth.models adresinden içe aktar Kullanıcı kullanıcı adı = 'kullanıcı adı' password = 'password' email ='email@momo.com ' first_name = 'test' last_name = 'dene' # genel kullanıcı User.objects.create_user (kullanıcı adı = kullanıcı adı, şifre = şifre, e-posta = e-posta, ilk_name = ilk_name, son_name = soyadı) # Yönetici hesabı User.objects.create_superuser (kullanıcı adı = kullanıcı adı, şifre = şifre, e-posta = e-posta, ilk_name = ilk_name, son_name = soyadı)

    Ekleme tamamlandıktan sonra, kullanıcının oturum açmasına izin verin ve ardından yönetici izinleri yapılandırabilir.

    yetki yönetimi

    Mevcut izin modeli, ilgili sayfada yapılandırılabilen aşağıdaki öğeleri içerir.

    Eleman adı, eleman anlamı, konfigürasyon yöntemi Not: uri, risk yönetimi yönetiminin arka planında bağımsız bir uri'nin geliştirilmesi sırasında otomatik olarak oluşturulur.Burada, uri göreceli bir yoldur, örneğin: / permissions / groups / uri group Birbiriyle ilişkili birden fazla uris, bir uri grubuna yerleştirilebilir / permissions / uri_groups / -Permission grupları Birden fazla uri grubu bir izin grubuna / izinlere / gruplara atanabilir / -Kullanıcılar bağımsız kişilerdir / çalışanlar / izinler / kullanıcılar / 1. Bu sistem arayüzde ilave sunmaz Kullanıcı işlevleri; 2. Kullanıcılar belirli bir izin grubuna atanabilir veya doğrudan uri grubunu yapılandırabilir.Yönetici, sistemin sahibidir ve varsayılan, manuel olarak yapılandırmak için tüm izinlere sahiptir.

    Konfigürasyonla ilgili

    Şu anda, Django yapılandırması www / settings dizininde saklanır ve Django dışı yapılandırma da yapılandırma dizininde bulunur.

    Farklı ortamlarda farklı konfigürasyonları yüklemek için, RISK_ENV ortam değişkenini kullanırız ve sistem, çalışma zamanı sırasında bu ortam değişkeninin değeri aracılığıyla ilgili konfigürasyon dosyasını otomatik olarak yükler.

    Projenin başlamasını kolaylaştırmak için, bu değer ayarlanmadığında, sistem varsayılan olarak geliştirme ortamının yapılandırmasını yükleyecektir. Bir test yürütürken (python manage.py testi), RISK_ENV değeri test olmalıdır.

    git adresi: https://github.com/momosecurity/aswan

    Parlak bir hayatla prestijli bir okuldan mezun oldu ama 52 yaşındayken ölmek için başka ülkelere gitti ...
    önceki
    618 kurulum önerisi: RTX 2060 grafik kartı 5000 yuan için kullanılabilir
    Sonraki
    Hava fotoğraflarından 36 fotoğrafı geri getirdi ve dünya şaşkına döndü: Çin çok güzel.
    "GOT7" "Paylaş" 190617 Duan Yien, konser sırasında bir hayranının suratından vuruldu, yıldızları akılcı bir şekilde kovalamayı unutmayın
    AI ses kontrolü yeni bir çağ açar, kontrolü daha ilginç hale getirmek için uzaktan kumandayı çöpe atın
    Ulusal hazine pandası dünyaca ünlü tabloyla karşılaştığında, sadece itaatsizlik duygusu kalmaz, aynı zamanda binlerce netizeni anında havaya uçurur.
    190617 Zhu Zhengting, Şangay Film Festivali'nin kırmızı halısında göründü. Beyefendi ve zarif kilidi açılmış yeni aktör kimliği
    Fast food tüketimi, hala yüksek kaliteli bir TV'ye ihtiyacınız var mı
    190617 BTS Busan fm, Yoonchi ve Taehyungun TV dizisindeki aşk-nefret ilişkisi nihayet aşkla mükemmel sonun asimile edildi.
    Xi Jinping, G20 zirvesine katılmak için Pekin'den ayrılıyor. Bir dizi rakam, Başkan Xi tarafından savunulan küresel yönetişim konseptini anlıyor
    Çift, piyango biletini 528 milyon yuan'a satın almış, muhabir 5 ay sonra gizlice sahneyi fotoğraflamış, buna inanmayabilirsiniz.
    Tamamen şeffaf uçak, 360 ° C serin ve göz kamaştırıcı, insanlar inşa etmeye cesaret ediyor, binmeye cesaretin var mı?
    İlkokuldan mezun olmayan yabancı banknotlara basılacak tek Çinli.
    Ni Shurui'nin yorumu: Meituan'ın paket servisi olan restoran konumu "sarsıldı" mı?
    To Top