[CWMicroScan] PHẦN 1: KIẾN TRÚC HỆ THỐNG

25/02/2022 151
cwmicroscan 1 5
CODEWELL

CWMicroScan là công cụ quét bảo mật hoàn toàn mới, được nghiên cứu, xây dựng và phát triển bởi chính đội ngũ chuyên gia của CO-WELL Asia. Với công cụ này, CO-WELL Asia tin tưởng đây là giải pháp tối ưu để quản lý các lỗ hổng bảo mật, gây dựng lòng tin từ khách hàng. Cùng tìm hiểu về kiến trúc hệ thống của CWMicroScan với bài viết đưới đây.

 

1. Tổng quan về CWMicroScan

CWMicroScan là công cụ nội bộ với chức năng dò quét, phân tích bảo mật và nâng cao chất lượng source code cũng như sản phẩm. Công cụ được triển khai theo mô hình Microservice cung cấp giao diện trực quan, thực hiện quét bảo mật source code, quét bảo mật cho Website và quét cho API.

 

Việc sử dụng CWMicroScan là phương án an toàn, hiệu quả và tiết kiệm chi phí thay vì sử dụng các công cụ phức tạp và tốn kém khác. Thay vì mỗi tháng phải chi trả từ $20-$30 cho một server có cấu hình tương đối, bạn chỉ cần trả khoảng $5 trong 4 tháng cho toàn bộ chi phí vận hành.

 

>>> Xem thêm: CWMicroScan – CÔNG CỤ QUÉT BẢO MẬT NỘI BỘ ĐA TÍNH NĂNG

 

2. Sơ lược mô hình triển khai

 

Mô hình của CWMicroScan được chia thành 3 phần chính:

  • Frontend sử dụng React và backend với API Django
  • Phần chạy các scan task (quét SAST, DAST, CLOC)
  • Thực hiện Blue/Green Deployments

cwmicroscan 1 1

 

3. Lựa chọn mô hình

Vì CWMicroScan là công cụ quét bảo mật nên khi thực hiện, tùy vào đặc thù từng dự án mà bạn có thể đặt ra yêu cầu phù hợp. Ví dụ như là phải chạy được đồng thời nhiều scan task cùng một lúc, cùng với đó là khả năng tối ưu hóa chi phí.
Nếu như đơn thuần sử dụng EC2 Instance làm server để chạy frontend, backend và scan task thì gặp phải những vấn đề sau:

  • Bị giới hạn về số lượng scan task cùng chạy một lúc: scan task có thể được chạy bất cứ lúc nào và một số task đòi hỏi tài nguyên lớn và thời gian dài như quét bảo mật động ở chế độ Full Scan. Vì vậy, cần phải có một server với cấu hình đủ lớn để có thể chờ và chạy scan task bất cứ lúc nào. Như vậy thì sẽ lãng phí tài nguyên và chi phí.
  • Khả năng scale chậm và phức tạp: Khi số lượng scan task nhiều cần phải tạo thêm một hoặc nhiều server mới. Việc này đòi hỏi một thành phần phân tích xem khi nào cần tạo server mới lên. Sau khi tạo xong thì chạy scan task và xóa server đó đi khi xong việc. Với AutoScaling thông thường thì khó có thể đảm nhiệm được quá trình đó.

Vì thế, bạn có thể lựa chọn sử dụng Amazon ECS và AWS Fargate.

 

4. Tại sao chọn Fargate?

 

cwmicroscan 1 2

Amazon Elastic Container Service (Amazon ECS) và AWS Fargate theo định nghĩa của AWS như sau:

  • Amazon ECS là một dịch vụ quản lý container có khả năng mở rộng cao, dễ dàng run, stop, hay quản lý docker container ở trong một cluster. Bạn có thể host một serverless infrastructure bằng cách chạy service hay task sử dụng Fargate launch type hoặc sử dụng EC2 launch type để chạy các EC2 instance.
  • AWS Fargate là một tùy chọn triển khai trong Amazon Elastic Container Service (ECS) cho phép bạn triển khai các container mà không cần quản lý bất cứ máy chủ nào.

Lý do lựa chọn AWS Fargate:

  • Có quyền kiểm soát các container và có thể linh hoạt chọn thời điểm chạy container mà không cần lo lắng về việc cung cấp hoặc mở rộng máy chủ.
  • Tích hợp sẵn với dịch vụ AWS để bảo mật, kết nối mạng, kiểm soát truy cập, cung cấp công cụ dành cho nhà phát triển, monitoring và log.
  • Fargate chỉ bị tính phí khi đang trong chế độ running.

cwmicroscan 1 3

Chi tiết mô hình triển khai:

  • Frontend và backend: Được triển khai trên một cụm ECS và mỗi thành phần được đặt trong một Service, xác định mức tối thiểu và tối đa của một hoặc nhiều task, được thiết lập cân bằng tải và có thể scale khi tải tăng cao.
  • Scan task: được triển khai trên nhiều cụm ECS độc lập, mỗi task được chạy bằng Fargate tách biệt với các frontend, backend và giữa các scan task với nhau (không chia sẻ kernel, tài nguyên CPU hay bộ nhớ). Vì chúng độc lập với nhau mà có thể chạy cùng lúc nhiều task, sau khi chạy xong các task sẽ tự động tắt đi.
  • Backend và các scan task được mount chung vào một Elastic File System (EFS) để có thể đọc file kết quả scan.

Như vậy là đã giải quyết được yêu cầu đặt ra lúc ban đầu: Chạy nhiều task cùng một lúc và tối ưu chi phí.

 

5. Vấn đề trong quá trình triển khai

Với việc sử dụng các dịch vụ của AWS thì không gặp vấn đề quá lớn trong quá trình triển khai. Tuy nhiên, trong quá trình chạy thực tế có phát sinh vấn đề tốc độ ghi file vào EFS.

  • Khi chạy task quét bảo mật tĩnh trong source code của những dự án có source code lớn, nhiều file và thư mục (các dự án sử dụng Magento bộ phận GEC). Source code sẽ được clone về và ghi vào trong EFS để scan task có thể thực hiện quét file.
  • Sau khi task có nhiệm vụ clone hoàn thành và task có nhiệm vụ scan bắt đầu chạy, kết thúc rất nhanh và không xuất ra file kết quả. Check log thì hiện thông tin “Not Found Project”

Nguyên nhân là với souce code có dung lượng lớn, nhiều file và thư mục như vậy sẽ mất một lúc để mới có thể ghi và đồng bộ hoàn toàn vào EFS.

 

6. Kết luận

Fargate giúp ta chạy các ứng dụng trên AWS một cách dễ dàng, ta chỉ phải trả tiền cho các tài nguyên sử dụng nên có thể tiết kiệm chi phí hơn. Vì vậy mà hiện nay có nhiều dự án triển khai ứng dụng trên Amazon ECS và AWS Fargate.

Trên đây là những hướng dẫn từ cơ bản tới chi tiết của chuyên gia từ CO-WELL Asia về công cụ dò quét bảo mật nội bộ CWMicroScan. Đừng quên theo dõi chuyên mục CODEWELL trên website CO-WELL Asia để đón đọc những bài viết công nghệ bổ ích nhé!

 

Trần Hữu Tài – CO-WELL Asia