Tạo một hệ thống tự động để chống lại những kẻ xâm nhập vào trang web (gian lận)

Trong khoảng sáu tháng qua, tôi đã tạo ra một hệ thống chống gian lận (hoạt động gian lận, gian lận, v.v.) mà không có bất kỳ cơ sở hạ tầng ban đầu nào cho việc này. Những ý tưởng ngày nay mà chúng tôi đã tìm thấy và triển khai trong hệ thống của mình giúp chúng tôi phát hiện và phân tích nhiều hoạt động gian lận. Trong bài viết này, tôi muốn nói về các nguyên tắc mà chúng tôi đã tuân theo và những gì chúng tôi đã làm để đạt được trạng thái hiện tại của hệ thống mà không đi sâu vào phần kỹ thuật.

Nguyên tắc của hệ thống của chúng tôi

Khi bạn nghe các thuật ngữ như "tự động" và "gian lận", rất có thể bạn sẽ bắt đầu nghĩ về học máy, Apache Spark, Hadoop, Python, Airflow và các công nghệ khác trong hệ sinh thái Quỹ Apache và lĩnh vực Khoa học dữ liệu. Tôi nghĩ rằng có một khía cạnh của việc sử dụng những công cụ này thường không được nhắc đến: chúng yêu cầu một số điều kiện tiên quyết nhất định phải có trên hệ thống doanh nghiệp của bạn trước khi bạn có thể sử dụng chúng. Nói tóm lại, bạn cần một nền tảng dữ liệu doanh nghiệp bao gồm kho dữ liệu và bộ lưu trữ. Nhưng nếu bạn không có một nền tảng như vậy và vẫn cần phát triển phương pháp này thì sao? Những nguyên tắc sau đây, mà tôi mô tả dưới đây, đã giúp chúng tôi đi đến điểm mà chúng tôi có thể tập trung vào việc cải thiện các ý tưởng của mình, thay vì tìm một ý tưởng khả thi. Tuy nhiên, đây không phải là "bình nguyên" của dự án. Còn nhiều điều nữa trong kế hoạch từ quan điểm công nghệ và sản phẩm.

Nguyên tắc 1: Giá trị kinh doanh là trên hết

Chúng tôi đặt “giá trị kinh doanh” lên hàng đầu trong mọi nỗ lực của mình. Nhìn chung, bất kỳ hệ thống phân tích tự động nào cũng thuộc nhóm các hệ thống phức hợp có mức độ tự động hóa cao và phức tạp về kỹ thuật. Tạo một giải pháp hoàn chỉnh sẽ mất rất nhiều thời gian nếu bạn tạo nó từ đầu. Chúng tôi quyết định đặt giá trị kinh doanh lên hàng đầu và sự trưởng thành về công nghệ ở vị trí thứ hai. Trong cuộc sống thực, điều này có nghĩa là chúng ta không chấp nhận công nghệ tiên tiến như một giáo điều. Chúng tôi chọn công nghệ phù hợp nhất với chúng tôi vào lúc này. Theo thời gian, có vẻ như chúng tôi sẽ phải triển khai lại một số mô-đun. Đây là sự thỏa hiệp mà chúng tôi đã chấp nhận.

Nguyên tắc 2: Tăng cường trí thông minh

Tôi cá rằng hầu hết những người không tham gia sâu vào việc phát triển các giải pháp máy học có thể nghĩ rằng mục tiêu là thay thế con người. Trên thực tế, các giải pháp học máy không hoàn hảo và chỉ có thể thay thế ở một số khu vực nhất định. Chúng tôi đã từ bỏ ý tưởng này ngay từ đầu vì một số lý do: dữ liệu không cân bằng về hoạt động gian lận và không thể cung cấp danh sách đầy đủ các tính năng cho các mô hình máy học. Ngược lại, chúng tôi đã chọn tùy chọn thông minh tăng cường. Đây là một khái niệm thay thế về trí tuệ nhân tạo tập trung vào vai trò hỗ trợ của AI, nhấn mạnh thực tế rằng các công nghệ nhận thức được thiết kế để nâng cao trí thông minh của con người chứ không phải thay thế nó. [1]

Với suy nghĩ này, việc phát triển một giải pháp máy học hoàn chỉnh ngay từ đầu sẽ đòi hỏi rất nhiều nỗ lực, điều này sẽ làm trì hoãn việc tạo ra giá trị cho doanh nghiệp của chúng tôi. Chúng tôi quyết định xây dựng một hệ thống với khía cạnh máy học ngày càng phát triển dưới sự hướng dẫn của các chuyên gia trong lĩnh vực của chúng tôi. Phần khó khăn trong việc phát triển một hệ thống như vậy là nó phải cung cấp cho các nhà phân tích của chúng tôi các nghiên cứu tình huống không chỉ về việc liệu đây có phải là một hoạt động gian lận hay không. Nói chung, bất kỳ sự bất thường nào trong hành vi của khách hàng đều là một trường hợp đáng ngờ mà các chuyên gia cần điều tra và bằng cách nào đó phản hồi. Chỉ một vài trong số những trường hợp được ghi lại này thực sự có thể được phân loại là gian lận.

Nguyên tắc 3: Nền tảng Rich Insights

Phần khó khăn nhất trong hệ thống của chúng tôi là xác minh từ đầu đến cuối quy trình làm việc của hệ thống. Các nhà phân tích và nhà phát triển sẽ dễ dàng có được bộ dữ liệu lịch sử với tất cả các chỉ số được sử dụng để phân tích. Ngoài ra, nền tảng dữ liệu sẽ cung cấp một cách dễ dàng để bổ sung một bộ chỉ số hiện có bằng một bộ chỉ số mới. Các quy trình mà chúng tôi tạo và đây không chỉ là các quy trình phần mềm, sẽ giúp dễ dàng tính toán lại các khoảng thời gian trước đó, thêm số liệu mới và thay đổi dự báo dữ liệu. Chúng tôi có thể đạt được điều này bằng cách tích lũy tất cả dữ liệu mà hệ thống sản xuất của chúng tôi tạo ra. Trong trường hợp như vậy, dữ liệu sẽ dần trở thành một trở ngại. Chúng tôi sẽ cần lưu trữ lượng dữ liệu ngày càng tăng mà chúng tôi không sử dụng và bảo vệ nó. Trong trường hợp như vậy, dữ liệu sẽ ngày càng trở nên không liên quan theo thời gian, nhưng vẫn cần nỗ lực của chúng tôi để quản lý dữ liệu đó. Đối với chúng tôi, việc tích trữ dữ liệu không có ý nghĩa gì và chúng tôi quyết định sử dụng một cách tiếp cận khác. Chúng tôi quyết định tổ chức các kho dữ liệu thời gian thực xung quanh các thực thể mục tiêu mà chúng tôi muốn phân loại và chỉ lưu trữ dữ liệu cho phép chúng tôi kiểm tra các khoảng thời gian cập nhật và gần đây nhất. Thách thức với nỗ lực này là hệ thống của chúng tôi không đồng nhất với nhiều kho lưu trữ dữ liệu và mô-đun phần mềm yêu cầu lập kế hoạch cẩn thận để hoạt động theo cách nhất quán.

Khái niệm thiết kế của hệ thống của chúng tôi

Chúng tôi có bốn thành phần chính trong hệ thống của mình: hệ thống nhập, hệ thống tính toán, phân tích BI và hệ thống theo dõi. Chúng phục vụ các mục đích biệt lập cụ thể và chúng tôi giữ chúng biệt lập bằng cách tuân theo các phương pháp phát triển nhất định.

Tạo một hệ thống tự động để chống lại những kẻ xâm nhập vào trang web (gian lận)

Hợp đồng dựa trên thiết kế

Trước hết, chúng tôi đã đồng ý rằng các thành phần chỉ nên dựa vào một số cấu trúc dữ liệu (hợp đồng) được thông qua giữa chúng. Điều này giúp dễ dàng tích hợp giữa chúng và không áp đặt một thành phần (và thứ tự) cụ thể của các thành phần. Ví dụ: trong một số trường hợp, điều này cho phép chúng tôi tích hợp trực tiếp hệ thống tiếp nhận với hệ thống theo dõi cảnh báo. Trong trường hợp như vậy, điều này sẽ được thực hiện theo hợp đồng thông báo đã thỏa thuận. Điều này có nghĩa là cả hai thành phần sẽ được tích hợp bằng hợp đồng mà bất kỳ thành phần nào khác có thể sử dụng. Chúng tôi sẽ không thêm hợp đồng bổ sung để thêm cảnh báo vào hệ thống theo dõi từ hệ thống đầu vào. Cách tiếp cận này yêu cầu sử dụng số lượng hợp đồng tối thiểu được xác định trước và đơn giản hóa hệ thống cũng như thông tin liên lạc. Về cơ bản, chúng tôi đang thực hiện một phương pháp gọi là "Thiết kế hợp đồng đầu tiên" và áp dụng nó cho các hợp đồng phát trực tuyến. [2]

Truyền phát mọi nơi

Lưu và quản lý trạng thái trong hệ thống chắc chắn sẽ dẫn đến sự phức tạp trong quá trình thực hiện. Nói chung, trạng thái phải có thể truy cập được từ bất kỳ thành phần nào, trạng thái phải nhất quán và cung cấp giá trị cập nhật nhất trên tất cả các thành phần và phải đáng tin cậy với các giá trị chính xác. Ngoài ra, việc có các cuộc gọi đến bộ lưu trữ liên tục để nhận trạng thái mới nhất sẽ làm tăng số lượng I/O và độ phức tạp của các thuật toán được sử dụng trong các đường ống thời gian thực của chúng tôi. Vì điều này, chúng tôi đã quyết định xóa hoàn toàn bộ lưu trữ trạng thái, nếu có thể, khỏi hệ thống của chúng tôi. Cách tiếp cận này yêu cầu tất cả dữ liệu cần thiết phải được đưa vào đơn vị dữ liệu được truyền (thông điệp). Ví dụ: nếu chúng ta cần tính tổng số lượng của một số quan sát (số lượng hoạt động hoặc trường hợp có các đặc điểm nhất định), chúng ta sẽ tính toán nó trong bộ nhớ và tạo ra một luồng các giá trị đó. Các mô-đun phụ thuộc sẽ sử dụng tính năng phân vùng và tạo khối để phân chia luồng theo các thực thể và hoạt động trên các giá trị mới nhất. Cách tiếp cận này đã loại bỏ nhu cầu lưu trữ đĩa liên tục cho dữ liệu đó. Hệ thống của chúng tôi sử dụng Kafka làm trình môi giới tin nhắn và nó có thể được sử dụng làm cơ sở dữ liệu với KSQL. [3] Nhưng việc sử dụng nó sẽ ràng buộc chặt chẽ giải pháp của chúng tôi với Kafka và chúng tôi đã quyết định không sử dụng nó. Cách tiếp cận mà chúng tôi đã chọn cho phép chúng tôi thay thế Kafka bằng một trình môi giới tin nhắn khác mà không có những thay đổi lớn bên trong hệ thống.

Khái niệm này không có nghĩa là chúng tôi không sử dụng lưu trữ đĩa và cơ sở dữ liệu. Để kiểm tra và phân tích hiệu suất hệ thống, chúng tôi cần lưu trữ một lượng dữ liệu đáng kể trên đĩa, đại diện cho các chỉ số và trạng thái khác nhau. Điểm quan trọng ở đây là các thuật toán thời gian thực không phụ thuộc vào dữ liệu đó. Trong hầu hết các trường hợp, chúng tôi sử dụng dữ liệu đã lưu để phân tích ngoại tuyến, gỡ lỗi và theo dõi các trường hợp và kết quả cụ thể mà hệ thống tạo ra.

Các vấn đề trong hệ thống của chúng tôi

Có những vấn đề chúng ta đã giải quyết đến một mức độ nhất định, nhưng chúng đòi hỏi những giải pháp chu đáo hơn. Hiện tại, tôi chỉ muốn đề cập đến chúng ở đây, bởi vì mỗi mục đều có giá trị riêng.

  • Chúng tôi vẫn cần xác định các quy trình và chính sách giúp tạo dữ liệu có ý nghĩa và phù hợp để phân tích, khám phá và khám phá dữ liệu tự động của chúng tôi.
  • Việc giới thiệu kết quả phân tích của một người trong quá trình tự động điều chỉnh hệ thống để cập nhật dữ liệu mới nhất. Đây không chỉ là bản cập nhật cho mô hình của chúng tôi mà còn là bản cập nhật cho các quy trình của chúng tôi và hiểu rõ hơn về dữ liệu của chúng tôi.
  • Tìm kiếm sự cân bằng giữa cách tiếp cận tất định của IF-ELSE và ML. Ai đó đã nói: "ML là một công cụ dành cho những kẻ tuyệt vọng." Điều này có nghĩa là bạn sẽ muốn sử dụng ML khi bạn không còn hiểu cách tối ưu hóa và cải thiện các thuật toán của mình. Mặt khác, cách tiếp cận tất định không cho phép phát hiện những bất thường không lường trước được.
  • Chúng tôi cần một cách dễ dàng để kiểm tra các giả thuyết hoặc mối tương quan giữa các chỉ số trong dữ liệu.
  • Hệ thống phải có nhiều cấp độ kết quả tích cực thực sự. Các trường hợp gian lận chỉ là một phần nhỏ trong tất cả các trường hợp có thể được coi là tích cực đối với hệ thống. Ví dụ, các nhà phân tích muốn nhận tất cả các trường hợp đáng ngờ để xem xét và chỉ một phần nhỏ trong số đó là gian lận. Hệ thống phải cung cấp hiệu quả cho các nhà phân tích tất cả các trường hợp, cho dù đó là gian lận thực sự hay chỉ là hành vi đáng ngờ.
  • Nền tảng dữ liệu sẽ có thể truy xuất các bộ dữ liệu lịch sử với các phép tính được tạo và tính toán nhanh chóng.
  • Triển khai đơn giản và tự động bất kỳ thành phần hệ thống nào trong ít nhất ba môi trường khác nhau: sản xuất, thử nghiệm (beta) và dành cho nhà phát triển.
  • Và cuối cùng nhưng không kém phần quan trọng. Chúng tôi cần tạo một nền tảng đo điểm chuẩn rộng rãi để chúng tôi có thể phân tích các mô hình của mình. [4]

tài liệu tham khảo

  1. Trí thông minh tăng cường là gì?
  2. Triển khai Phương pháp thiết kế API-First
  3. Kafka đang chuyển đổi thành “Cơ sở dữ liệu phát trực tuyến sự kiện”
  4. Tìm hiểu AUC—Đường cong ROC

Nguồn: www.habr.com

Thêm một lời nhận xét