Δημιουργία αυτόματου συστήματος για την καταπολέμηση εισβολέων στον ιστότοπο (απάτη)

Τους τελευταίους περίπου έξι μήνες δημιουργώ ένα σύστημα για την καταπολέμηση της απάτης (δόλια δραστηριότητα, απάτη κ.λπ.) χωρίς καμία αρχική υποδομή για αυτό. Οι σημερινές ιδέες που βρήκαμε και εφαρμόσαμε στο σύστημά μας μας βοηθούν να εντοπίσουμε και να αναλύσουμε πολλές δόλιες δραστηριότητες. Σε αυτό το άρθρο, θα ήθελα να μιλήσω για τις αρχές που ακολουθήσαμε και τι κάναμε για να πετύχουμε την τρέχουσα κατάσταση του συστήματός μας, χωρίς να μπω στο τεχνικό κομμάτι.

Αρχές του συστήματός μας

Όταν ακούτε όρους όπως «αυτόματο» και «απάτη», πιθανότατα αρχίζετε να σκέφτεστε τη μηχανική μάθηση, το Apache Spark, το Hadoop, το Python, το Airflow και άλλες τεχνολογίες από το οικοσύστημα του Apache Foundation και τον τομέα της Επιστήμης Δεδομένων. Νομίζω ότι υπάρχει μια πτυχή της χρήσης αυτών των εργαλείων που συνήθως δεν αναφέρεται: απαιτούν ορισμένες προϋποθέσεις στο εταιρικό σας σύστημα για να μπορέσετε να αρχίσετε να τα χρησιμοποιείτε. Εν ολίγοις, χρειάζεστε μια πλατφόρμα επιχειρηματικών δεδομένων που περιλαμβάνει μια λίμνη δεδομένων και μια αποθήκη. Τι γίνεται όμως αν δεν έχετε μια τέτοια πλατφόρμα και πρέπει να αναπτύξετε αυτήν την πρακτική; Οι ακόλουθες αρχές που μοιράζομαι παρακάτω μας βοήθησαν να φτάσουμε σε ένα σημείο όπου μπορούμε να επικεντρωθούμε στη βελτίωση των ιδεών μας αντί να βρούμε κάποια που να λειτουργεί. Ωστόσο, αυτό δεν είναι ένα πλατό έργου. Υπάρχουν ακόμη πολλά πράγματα στο πλάνο από τεχνολογική και προϊοντική άποψη.

Αρχή 1: Πρώτα η επιχειρηματική αξία

Βάζουμε την «επιχειρηματική αξία» στην πρώτη γραμμή όλων των προσπαθειών μας. Γενικά, κάθε σύστημα αυτόματης ανάλυσης ανήκει στην ομάδα των πολύπλοκων συστημάτων με υψηλό επίπεδο αυτοματισμού και τεχνικής πολυπλοκότητας. Η δημιουργία μιας ολοκληρωμένης λύσης θα πάρει πολύ χρόνο αν τη δημιουργήσετε από την αρχή. Αποφασίσαμε να βάλουμε πρώτα την επιχειρηματική αξία και δεύτερη την τεχνολογική πληρότητα. Στην πραγματική ζωή, αυτό σημαίνει ότι δεν αποδεχόμαστε την προηγμένη τεχνολογία ως δόγμα. Επιλέγουμε την τεχνολογία που λειτουργεί καλύτερα για εμάς αυτή τη στιγμή. Με την πάροδο του χρόνου, μπορεί να φανεί ότι θα πρέπει να εφαρμόσουμε ξανά ορισμένες ενότητες. Αυτός είναι ο συμβιβασμός που δεχθήκαμε.

Αρχή 2: Επαυξημένη νοημοσύνη

Στοιχηματίζω ότι οι περισσότεροι άνθρωποι που δεν ασχολούνται βαθιά με την ανάπτυξη λύσεων μηχανικής εκμάθησης μπορεί να πιστεύουν ότι ο στόχος είναι η αντικατάσταση των ανθρώπων. Στην πραγματικότητα, οι λύσεις μηχανικής εκμάθησης απέχουν πολύ από το να είναι τέλειες και μόνο σε ορισμένους τομείς είναι δυνατή η αντικατάσταση. Απορρίψαμε αυτήν την ιδέα από την αρχή για διάφορους λόγους: μη ισορροπημένα δεδομένα σχετικά με δόλιες δραστηριότητες και αδυναμία παροχής μιας ολοκληρωμένης λίστας λειτουργιών για μοντέλα μηχανικής εκμάθησης. Αντίθετα, επιλέξαμε την επιλογή βελτιωμένης νοημοσύνης. Αυτή είναι μια εναλλακτική έννοια της τεχνητής νοημοσύνης που εστιάζει στον υποστηρικτικό ρόλο της τεχνητής νοημοσύνης, τονίζοντας το γεγονός ότι οι γνωστικές τεχνολογίες προορίζονται να ενισχύσουν την ανθρώπινη νοημοσύνη αντί να την αντικαταστήσουν. [1]

Δεδομένου αυτού, η ανάπτυξη μιας ολοκληρωμένης λύσης μηχανικής μάθησης από την αρχή θα απαιτούσε τεράστια προσπάθεια, η οποία θα καθυστερούσε τη δημιουργία αξίας για την επιχείρησή μας. Αποφασίσαμε να δημιουργήσουμε ένα σύστημα με επαναληπτικά αναπτυσσόμενη πτυχή μηχανικής μάθησης υπό την καθοδήγηση των ειδικών του τομέα μας. Το δύσκολο μέρος της ανάπτυξης ενός τέτοιου συστήματος είναι ότι πρέπει να παρέχει στους αναλυτές μας περιπτώσεις όχι μόνο όσον αφορά το εάν πρόκειται για δόλια δραστηριότητα ή όχι. Γενικά, οποιαδήποτε ανωμαλία στη συμπεριφορά των πελατών είναι μια ύποπτη περίπτωση που οι ειδικοί πρέπει να διερευνήσουν και να ανταποκριθούν με κάποιο τρόπο. Μόνο ένα κλάσμα αυτών των αναφερόμενων περιπτώσεων μπορεί πραγματικά να χαρακτηριστεί ως απάτη.

Αρχή 3: Πλατφόρμα εμπλουτισμένων αναλύσεων

Το πιο δύσκολο μέρος του συστήματός μας είναι η επαλήθευση από άκρο σε άκρο της ροής εργασιών του συστήματος. Οι αναλυτές και οι προγραμματιστές θα πρέπει να αποκτούν εύκολα σύνολα δεδομένων ιστορικού με όλες τις μετρήσεις που χρησιμοποιούνται για την ανάλυση. Επιπλέον, η πλατφόρμα δεδομένων θα πρέπει να παρέχει έναν εύκολο τρόπο συμπλήρωσης ενός υπάρχοντος συνόλου μετρήσεων με νέες. Οι διεργασίες που δημιουργούμε, και αυτές δεν είναι απλώς διαδικασίες λογισμικού, θα μας επιτρέψουν να υπολογίσουμε εύκολα προηγούμενες περιόδους, να προσθέσουμε νέες μετρήσεις και να αλλάξουμε την πρόβλεψη δεδομένων. Θα μπορούσαμε να το πετύχουμε αυτό συγκεντρώνοντας όλα τα δεδομένα που παράγει το σύστημα παραγωγής μας. Σε αυτή την περίπτωση, τα δεδομένα θα γίνονταν σταδιακά ενοχλητικά. Θα χρειαστεί να αποθηκεύσουμε έναν αυξανόμενο όγκο δεδομένων που δεν χρησιμοποιούμε και να τα προστατεύσουμε. Σε ένα τέτοιο σενάριο, τα δεδομένα θα γίνονται όλο και πιο άσχετα με την πάροδο του χρόνου, αλλά απαιτούν ακόμα τις προσπάθειές μας για τη διαχείρισή τους. Για εμάς, η συσσώρευση δεδομένων δεν είχε νόημα, οπότε αποφασίσαμε να ακολουθήσουμε μια διαφορετική προσέγγιση. Αποφασίσαμε να οργανώσουμε αποθήκες δεδομένων σε πραγματικό χρόνο γύρω από τις οντότητες-στόχους που θέλουμε να ταξινομήσουμε και να αποθηκεύσουμε μόνο τα δεδομένα που μας επιτρέπουν να ελέγχουμε τις πιο πρόσφατες και σχετικές περιόδους. Η πρόκληση αυτής της προσπάθειας είναι ότι το σύστημά μας είναι ετερογενές, με πολλαπλές αποθήκες δεδομένων και λειτουργικές μονάδες λογισμικού που απαιτούν προσεκτικό σχεδιασμό για να λειτουργούν με συνεπή τρόπο.

Σχεδιαστικές ιδέες του συστήματός μας

Έχουμε τέσσερα κύρια στοιχεία στο σύστημά μας: σύστημα απορρόφησης, υπολογιστικό, ανάλυση BI και σύστημα παρακολούθησης. Εξυπηρετούν συγκεκριμένους, μεμονωμένους σκοπούς και τους κρατάμε απομονωμένους ακολουθώντας συγκεκριμένες σχεδιαστικές προσεγγίσεις.

Δημιουργία αυτόματου συστήματος για την καταπολέμηση εισβολέων στον ιστότοπο (απάτη)

Σχεδιασμός βάσει συμβολαίου

Πρώτα απ 'όλα, συμφωνήσαμε ότι τα στοιχεία θα πρέπει να βασίζονται μόνο σε ορισμένες δομές δεδομένων (συμβόλαια) που μεταβιβάζονται μεταξύ τους. Αυτό διευκολύνει την ενσωμάτωση μεταξύ τους και όχι την επιβολή συγκεκριμένης σύνθεσης (και σειράς) συστατικών. Για παράδειγμα, σε ορισμένες περιπτώσεις αυτό μας επιτρέπει να ενσωματώσουμε απευθείας το σύστημα εισαγωγής με το σύστημα παρακολούθησης ειδοποίησης. Σε μια τέτοια περίπτωση, αυτό θα γίνει σύμφωνα με το συμφωνημένο συμβόλαιο προειδοποίησης. Αυτό σημαίνει ότι και τα δύο στοιχεία θα ενσωματωθούν χρησιμοποιώντας ένα συμβόλαιο που μπορεί να χρησιμοποιήσει οποιοδήποτε άλλο στοιχείο. Δεν θα προσθέσουμε πρόσθετο συμβόλαιο για την προσθήκη ειδοποιήσεων στο σύστημα παρακολούθησης από το σύστημα εισαγωγής. Αυτή η προσέγγιση απαιτεί τη χρήση ενός προκαθορισμένου ελάχιστου αριθμού συμβάσεων και απλοποιεί το σύστημα και τις επικοινωνίες. Ουσιαστικά, ακολουθούμε μια προσέγγιση που ονομάζεται "Πρώτο Σχεδιασμό Συμβάσεων" και την εφαρμόζουμε σε συμβάσεις ροής. [2]

Streaming παντού

Η αποθήκευση και η διαχείριση κατάστασης σε ένα σύστημα θα οδηγήσει αναπόφευκτα σε επιπλοκές στην εφαρμογή του. Γενικά, η κατάσταση θα πρέπει να είναι προσβάσιμη από οποιοδήποτε στοιχείο, θα πρέπει να είναι συνεπής και να παρέχει την πιο πρόσφατη τιμή σε όλα τα στοιχεία και θα πρέπει να είναι αξιόπιστη με τις σωστές τιμές. Επιπλέον, η πραγματοποίηση κλήσεων σε μόνιμο χώρο αποθήκευσης για την ανάκτηση της πιο πρόσφατης κατάστασης θα αυξήσει τον αριθμό των λειτουργιών εισόδου/εξόδου και την πολυπλοκότητα των αλγορίθμων που χρησιμοποιούνται στις σωληνώσεις μας σε πραγματικό χρόνο. Εξαιτίας αυτού, αποφασίσαμε να αφαιρέσουμε την κατάσταση αποθήκευσης, αν είναι δυνατόν, εντελώς από το σύστημά μας. Αυτή η προσέγγιση απαιτεί να περιλαμβάνονται όλα τα απαραίτητα δεδομένα στο μπλοκ δεδομένων που μεταδίδονται (μήνυμα). Για παράδειγμα, εάν πρέπει να υπολογίσουμε τον συνολικό αριθμό ορισμένων παρατηρήσεων (τον αριθμό των πράξεων ή περιπτώσεων με συγκεκριμένα χαρακτηριστικά), τον υπολογίζουμε στη μνήμη και παράγουμε μια ροή τέτοιων τιμών. Οι εξαρτημένες λειτουργικές μονάδες θα χρησιμοποιούν κατάτμηση και ομαδοποίηση για να χωρίσουν τη ροή σε οντότητες και να λειτουργήσουν με τις πιο πρόσφατες τιμές. Αυτή η προσέγγιση εξάλειψε την ανάγκη για μόνιμο χώρο αποθήκευσης σε δίσκο για τέτοια δεδομένα. Το σύστημά μας χρησιμοποιεί τον Kafka ως μεσίτη μηνυμάτων και μπορεί να χρησιμοποιηθεί ως βάση δεδομένων με KSQL. [3] Αλλά η χρήση του θα είχε συνδέσει τη λύση μας σε μεγάλο βαθμό με τον Κάφκα και αποφασίσαμε να μην το χρησιμοποιήσουμε. Η προσέγγιση που επιλέξαμε μας επιτρέπει να αντικαταστήσουμε τον Κάφκα με έναν άλλο μεσίτη μηνυμάτων χωρίς σημαντικές εσωτερικές αλλαγές στο σύστημα.

Αυτή η έννοια δεν σημαίνει ότι δεν χρησιμοποιούμε αποθήκευση δίσκου και βάσεις δεδομένων. Για να ελέγξουμε και να αναλύσουμε την απόδοση του συστήματος, πρέπει να αποθηκεύσουμε μια σημαντική ποσότητα δεδομένων στο δίσκο που αντιπροσωπεύει διάφορες μετρήσεις και καταστάσεις. Το σημαντικό σημείο εδώ είναι ότι οι αλγόριθμοι σε πραγματικό χρόνο δεν εξαρτώνται από τέτοια δεδομένα. Στις περισσότερες περιπτώσεις, χρησιμοποιούμε τα αποθηκευμένα δεδομένα για ανάλυση εκτός σύνδεσης, εντοπισμό σφαλμάτων και παρακολούθηση συγκεκριμένων περιπτώσεων και αποτελεσμάτων που παράγει το σύστημα.

Προβλήματα του συστήματός μας

Υπάρχουν ορισμένα προβλήματα που έχουμε λύσει σε ένα ορισμένο επίπεδο, αλλά απαιτούν πιο προσεκτικές λύσεις. Τώρα θα ήθελα απλώς να τα αναφέρω εδώ γιατί κάθε σημείο αξίζει το δικό του άρθρο.

  • Πρέπει ακόμη να ορίσουμε διαδικασίες και πολιτικές που υποστηρίζουν τη συσσώρευση σημαντικών και σχετικών δεδομένων για την αυτοματοποιημένη ανάλυση, ανακάλυψη και εξερεύνηση δεδομένων.
  • Η ενσωμάτωση ανθρώπινης ανάλυσης έχει ως αποτέλεσμα τη διαδικασία αυτόματης ρύθμισης του συστήματος για την ενημέρωση του με τα πιο πρόσφατα δεδομένα. Αυτό δεν είναι μόνο ενημέρωση του μοντέλου μας, αλλά και ενημέρωση των διαδικασιών μας και βελτίωση της κατανόησης των δεδομένων μας.
  • Εύρεση ισορροπίας μεταξύ της ντετερμινιστικής προσέγγισης του IF-ELSE και του ML. Κάποιος είπε, «Το ML είναι ένα εργαλείο για τους απελπισμένους». Αυτό σημαίνει ότι θα θέλετε να χρησιμοποιήσετε το ML όταν δεν καταλαβαίνετε πλέον πώς να βελτιστοποιείτε και να βελτιώνετε τους αλγόριθμούς σας. Από την άλλη πλευρά, η ντετερμινιστική προσέγγιση δεν επιτρέπει τον εντοπισμό ανωμαλιών που δεν είχαν προβλεφθεί.
  • Χρειαζόμαστε έναν απλό τρόπο για να ελέγξουμε τις υποθέσεις μας ή τις συσχετίσεις μεταξύ των μετρήσεων στα δεδομένα.
  • Το σύστημα πρέπει να έχει πολλά επίπεδα αληθινά θετικών αποτελεσμάτων. Οι περιπτώσεις απάτης είναι μόνο ένα κλάσμα όλων των υποθέσεων που μπορούν να θεωρηθούν θετικές για το σύστημα. Για παράδειγμα, οι αναλυτές θέλουν να λαμβάνουν όλες τις ύποπτες υποθέσεις για επαλήθευση και μόνο ένα μικρό μέρος αυτών είναι απάτες. Το σύστημα πρέπει να παρουσιάζει αποτελεσματικά όλες τις περιπτώσεις στους αναλυτές, ανεξάρτητα από το αν πρόκειται για πραγματική απάτη ή απλώς για ύποπτη συμπεριφορά.
  • Η πλατφόρμα δεδομένων θα πρέπει να μπορεί να ανακτά σύνολα ιστορικών δεδομένων με υπολογισμούς που δημιουργούνται και υπολογίζονται εν κινήσει.
  • Αναπτύξτε εύκολα και αυτόματα οποιοδήποτε από τα στοιχεία του συστήματος σε τουλάχιστον τρία διαφορετικά περιβάλλοντα: παραγωγή, πειραματικό (beta) και για προγραμματιστές.
  • Και τελευταίο αλλά εξίσου σημαντικό. Πρέπει να δημιουργήσουμε μια πλούσια πλατφόρμα δοκιμών απόδοσης στην οποία μπορούμε να αναλύσουμε τα μοντέλα μας. [4]

παραπομπές

  1. Τι είναι η Επαυξημένη Νοημοσύνη;
  2. Εφαρμογή μιας μεθοδολογίας σχεδίασης API-First
  3. Ο Κάφκα μεταμορφώνεται σε «βάση δεδομένων ροής συμβάντων»
  4. Κατανόηση της καμπύλης AUC - ROC

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο