Erstellung eines automatischen Systems zur BekÀmpfung von Angreifern auf der Website (Betrug)

In den letzten etwa einem halben Jahr habe ich mich mit der Schaffung eines Systems zur BekĂ€mpfung von Betrug (fraudulent activity, fraud, etc.) ohne jegliche anfĂ€ngliche Infrastruktur dafĂŒr beschĂ€ftigt. Die heutigen Ideen, die wir gefunden und in unser System implementiert haben, helfen uns, viele betrĂŒgerische Handlungen zu erkennen und zu analysieren. In diesem Artikel möchte ich ĂŒber die Prinzipien sprechen, die wir befolgt haben, und was wir getan haben, um den aktuellen Zustand unseres Systems zu erreichen, ohne dabei in technische Details einzutauchen.

Die Prinzipien unseres Systems

Wenn Sie Begriffe wie „automatic“ und „fraud“ hören, denken Sie wahrscheinlich sofort an maschinelles Lernen, Apache Spark, Hadoop, Python, Airflow und andere Technologien des Apache Foundation-Ökosystems und des Bereichs Data Science. Ich denke, es gibt einen Aspekt der Nutzung dieser Werkzeuge, der normalerweise nicht erwĂ€hnt wird: Sie erfordern bestimmte Voraussetzungen in Ihrem Unternehmenssystem, bevor Sie sie nutzen können. Kurz gesagt, Sie benötigen eine Unternehmens-Datenplattform, die einen Data Lake und eine Datenablage umfasst. Aber was ist, wenn Sie eine solche Plattform nicht haben und trotzdem diese Praxis entwickeln mĂŒssen? Die folgenden Prinzipien, die ich unten beschreibe, haben uns geholfen, einen Punkt zu erreichen, an dem wir uns auf die Verbesserung unserer Ideen konzentrieren können, anstatt nach einer funktionierenden Lösung zu suchen. Dennoch ist dies kein „Plateau“ des Projekts; es gibt noch viele Dinge aus technischer und produktbezogener Sicht zu tun.

Prinzip 1: GeschÀftswert steht an erster Stelle

An der Spitze all unserer BemĂŒhungen steht „GeschĂ€ftswert“. Allgemein gehört jedes System zur automatischen Analyse zu einer Gruppe komplexer Systeme mit hohem Automatisierungsgrad und technischer KomplexitĂ€t. Die Schaffung einer vollstĂ€ndigen Lösung wĂŒrde viel Zeit in Anspruch nehmen, wenn Sie alles von Grund auf neu erstellen. Wir haben beschlossen, den GeschĂ€ftswert an erste Stelle zu setzen und die technische VollstĂ€ndigkeit an zweiter Stelle. Im realen Leben bedeutet dies, dass wir fortschrittliche Technologien nicht als Dogma akzeptieren. Wir wĂ€hlen die Technologie, die im Moment am besten fĂŒr uns funktioniert. Im Laufe der Zeit könnte es so erscheinen, als mĂŒssten wir einige Module neu implementieren. Dies ist ein Kompromiss, den wir eingegangen sind.

Prinzip 2: Erweiterte Intelligenz des Menschen (augmented intelligence)

Ich wette, die meisten Menschen, die nicht tief in die Entwicklung von maschinellen Lernlösungen involviert sind, denken, dass der Ersatz von Menschen das Ziel ist. TatsĂ€chlich sind maschinelle Lernlösungen weit von der Perfektion entfernt und ein Ersatz ist nur in bestimmten Bereichen möglich. Wir haben von Anfang an aus mehreren GrĂŒnden von dieser Idee Abstand genommen: unausgewogene Daten zu betrĂŒgerischen AktivitĂ€ten und die UnfĂ€higkeit, eine umfassende Liste von Funktionen fĂŒr maschinelle Lernmodelle bereitzustellen. Im Gegensatz dazu haben wir uns fĂŒr die Möglichkeit mit erweitertem Intellekt entschieden. Dies ist ein alternatives Konzept der kĂŒnstlichen Intelligenz, das sich auf die unterstĂŒtzende Rolle von KI konzentriert und den Fakt betont, dass kognitive Technologien dazu bestimmt sind, menschliche Intelligenz zu verbessern, und nicht sie zu ersetzen. [1]

In Anbetracht dessen wĂŒrde die Entwicklung einer vollstĂ€ndigen maschinellen Lernlösung von Grund auf enorme Anstrengungen erfordern, die die Schaffung von Werten fĂŒr unser Unternehmen verzögert hĂ€tten. Wir haben beschlossen, ein System mit einem iterativ wachsenden Aspekt des maschinellen Lernens unter der Aufsicht unserer Fachexperten zu erstellen. Der komplizierte Teil der Entwicklung eines solchen Systems besteht darin, dass es unseren Analysten FĂ€lle bieten muss, und zwar nicht nur aus der Perspektive, ob es sich um betrĂŒgerische AktivitĂ€ten handelt oder nicht. Im Allgemeinen ist jede Anomalie im Verhalten der Kunden ein verdĂ€chtiger Fall, den die Spezialisten untersuchen und irgendwie darauf reagieren mĂŒssen. Nur ein Teil dieser erfassten FĂ€lle kann tatsĂ€chlich als Betrug eingestuft werden.

Prinzip 3: Plattform fĂŒr umfassende Analysen

Der herausforderndste Teil unseres Systems ist die durchgĂ€ngige ÜberprĂŒfung des Arbeitsprozesses. Analysten und Entwickler mĂŒssen leicht Zugriff auf DatensĂ€tze aus vergangenen Perioden mit allen Metriken haben, die fĂŒr die Analyse verwendet wurden. DarĂŒber hinaus muss die Datenplattform einen einfachen Weg bieten, um bestehende Metriksets mit neuen zu ergĂ€nzen. Die Prozesse, die wir kreieren – und das sind nicht nur Softwareprozesse – sollten es ermöglichen, frĂŒhere Perioden leicht neu zu berechnen, neue Metriken hinzuzufĂŒgen und die Datenprognosen zu Ă€ndern. Wir könnten dies erreichen, indem wir alle Daten sammeln, die unser Produktionssystem generiert. In diesem Fall wĂŒrden die Daten schrittweise zur Belastung werden. Wir wĂŒrden ein wachsendes Volumen an Daten speichern mĂŒssen, die wir nicht verwenden, und mĂŒssten diese schĂŒtzen. In einem solchen Szenario wĂŒrde die Relevanz der Daten im Laufe der Zeit abnehmen, dennoch wĂŒrde es unsere MĂŒhe erfordern, sie zu verwalten. FĂŒr uns machte das Ansammeln von Daten keinen Sinn, und wir beschlossen, einen anderen Ansatz zu verfolgen. Wir entschieden uns, Echtzeit-Datenspeicher um die ZielentitĂ€ten zu organisieren, die wir klassifizieren möchten, und nur die Daten aufzubewahren, die es ermöglichen, die letzten und relevantesten Perioden zu ĂŒberprĂŒfen. Die KomplexitĂ€t dieser Anstrengungen liegt darin, dass unser System heterogen ist, mit mehreren Datenspeichern und Softwaremodulen, die eine sorgfĂ€ltige Planung fĂŒr ein konsistentes Funktionieren erfordern.

Konstruktive Konzepte unseres Systems

Wir haben vier Hauptkomponenten in unserem System: das Eingabesystem (ingestion system), die Berechnung (computational), die Analyse (BI analysis) und das Tracking-System (tracking system). Sie dienen spezifischen isolierten Zwecken, und wir halten sie isoliert, indem wir bestimmten AnsÀtzen in der Entwicklung folgen.

Erstellung eines automatischen Systems zur BekÀmpfung von Angreifern auf der Website (Betrug)

Vertragsbasierter Entwurf

ZunĂ€chst haben wir uns darauf geeinigt, dass die Komponenten sich ausschließlich auf bestimmte Datenstrukturen (VertrĂ€ge) stĂŒtzen mĂŒssen, die zwischen ihnen ausgetauscht werden. Dies ermöglicht eine einfache Integration und zwingt nicht zu einer spezifischen Zusammensetzung (und Reihenfolge) der Komponenten. In einigen FĂ€llen ermöglicht uns dies beispielsweise, direkt das Empfangssystem mit dem Warnverfolgungssystem zu integrieren. In einem solchen Fall wird dies gemĂ€ĂŸ dem vereinbarten Vertrag fĂŒr Benachrichtigungen erfolgen. Das bedeutet, dass beide Komponenten mithilfe eines Vertrags integriert werden, den jeder andere Bestandteil nutzen kann. Wir werden keinen zusĂ€tzlichen Vertrag zum HinzufĂŒgen von Warnungen aus dem Geben-System in das Verfolgungssystem einfĂŒgen. Dieser Ansatz erfordert die Verwendung einer im Voraus festgelegten minimalen Anzahl von VertrĂ€gen und vereinfacht das System sowie die Kommunikation. Im Wesentlichen verwenden wir einen Ansatz, der als „Contract First Design“ bezeichnet wird, und wenden ihn auf die Datenstream-VertrĂ€ge an. [2]

Streaming ĂŒberall

Die Speicherung und Verwaltung des Zustands im System wird unweigerlich zu Komplikationen bei dessen Umsetzung fĂŒhren. Im Allgemeinen sollte der Zustand aus jeder Komponente zugĂ€nglich sein, konsistent sein und den aktuellsten Wert fĂŒr alle Komponenten bereitstellen und zuverlĂ€ssig mit den richtigen Werten sein. DarĂŒber hinaus wird die Notwendigkeit, stĂ€ndig auf den Speicher zuzugreifen, um den letzten Zustand abzurufen, die Anzahl der Ein- und Ausgabeoperationen und die KomplexitĂ€t der Algorithmen erhöhen, die in unseren Echtzeit-Pipelines verwendet werden. Aus diesem Grund haben wir beschlossen, die Speicherung des Zustands, wo immer möglich, ganz aus unserem System zu entfernen. Dieser Ansatz erfordert, dass alle erforderlichen Daten im ĂŒbertragbaren Datenblock (Nachricht) enthalten sind. Wenn wir beispielsweise die Gesamtzahl bestimmter Beobachtungen (Anzahl der Operationen oder FĂ€lle mit bestimmten Merkmalen) berechnen mĂŒssen, berechnen wir sie im Speicher und generieren einen Strom solcher Werte. AbhĂ€ngige Module verwenden Partitionierung und Batchverarbeitung, um den Strom nach EntitĂ€ten zu unterteilen und mit den neuesten Werten zu operieren. Dieser Ansatz hat die Notwendigkeit beseitigt, ein permanentes Datenspeicherlaufwerk fĂŒr solche Daten zu haben. Unser System verwendet Kafka als Nachrichtenbroker, und es kann als Datenbank mit KSQL verwendet werden. [3] Die Verwendung wĂŒrde unsere Lösung jedoch stark an Kafka binden, weshalb wir uns entschieden haben, es nicht zu verwenden. Unser gewĂ€hlter Ansatz ermöglicht es uns, Kafka durch einen anderen Nachrichtenbroker ohne wesentliche interne Änderungen am System zu ersetzen.

Dieses Konzept bedeutet nicht, dass wir keine Datenspeicher und Datenbanken verwenden. Um die Leistung des Systems zu ĂŒberprĂŒfen und zu analysieren, mĂŒssen wir einen erheblichen Teil der Daten auf der Festplatte speichern, die verschiedene Metriken und ZustĂ€nde darstellen. Ein wichtiger Punkt hierbei ist, dass die Echtzeit-Algorithmen nicht von solchen Daten abhĂ€ngen. In den meisten FĂ€llen verwenden wir die gespeicherten Daten fĂŒr die eigenstĂ€ndige Analyse, die Fehlersuche und die Verfolgung spezifischer FĂ€lle und Ergebnisse, die das System liefert.

Probleme unseres Systems

Es gibt bestimmte Probleme, die wir bis zu einem gewissen Punkt gelöst haben, die jedoch durchdachtere Lösungen erfordern. Jetzt möchte ich sie einfach hier erwÀhnen, denn jeder Punkt verdient einen eigenen Artikel.

  • Wir mĂŒssen immer noch die Prozesse und Richtlinien definieren, die zur Ansammlung bedeutungsvoller und relevanter Daten fĂŒr unsere automatisierte Analyse, Erkennung und Untersuchung von Daten beitragen.
  • Die Implementierung der Ergebnisse der menschlichen Analyse in den Prozess der automatisierten Systemanpassung zur Aktualisierung mit den aktuellsten Daten. Das ist nicht nur ein Update unseres Modells, sondern auch eine Aktualisierung der Prozesse und ein besseres VerstĂ€ndnis unserer Daten.
  • Das Finden eines Gleichgewichts zwischen einem deterministischen IF-ELSE-Ansatz und ML. Jemand sagte: „ML ist ein Werkzeug fĂŒr die Verzweifelten“. Das bedeutet, dass Sie ML verwenden möchten, wenn Sie nicht mehr verstehen, wie Sie Ihre Algorithmen optimieren und verbessern können. Andererseits erlaubt der deterministische Ansatz nicht die Entdeckung von Anomalien, die nicht vorhergesehen wurden.
  • Wir brauchen eine einfache Möglichkeit, unsere Hypothesen oder Korrelationen zwischen Metriken in den Daten zu ĂŒberprĂŒfen.
  • Das System sollte mehrere Ebenen an echten positiven Ergebnissen haben. BetrugsfĂ€lle sind nur ein Teil aller FĂ€lle, die als positiv fĂŒr das System angesehen werden können. Zum Beispiel möchten Analysten alle verdĂ€chtigen FĂ€lle zur PrĂŒfung erhalten, und nur ein kleiner Teil davon ist Betrug. Das System sollte den Analysten alle FĂ€lle effektiv liefern, unabhĂ€ngig davon, ob es sich um echten Betrug oder einfach nur um verdĂ€chtiges Verhalten handelt.
  • Die Datenplattform sollte es ermöglichen, DatensĂ€tze aus frĂŒheren ZeitrĂ€umen mit Berechnungen abzurufen, die in Echtzeit erstellt und berechnet wurden.
  • Einfache und automatische Bereitstellung eines der Systemkomponenten in mindestens drei verschiedenen Umgebungen: Produktions-, Experimentier- (Beta) und Entwicklerumgebung.
  • Und zuletzt, aber nicht weniger wichtig. Wir mĂŒssen eine umfassende Plattform zur LeistungsĂŒberprĂŒfung schaffen, auf der wir unsere Modelle analysieren können. [4]

Links

  1. Was ist Augmented Intelligence?
  2. Implementierung einer API-First-Designmethodik
  3. Kafka verwandelt sich in eine „Event-Streaming-Datenbank“
  4. AUC und ROC-Kurve verstehen

Quelle: habr.com

60GB SSD 8Gb DDR4