Xây dựng quy trình CI/CD an toàn với DevSecOps cho nền tảng thảo luận mạng xã hội dựa trên kiến trúc Microservices

Building a Secure CI/CD Pipeline with DevSecOps for a Microservices-Based Social Discussion Platform

Trong bối cảnh này, quy trình CI/CD (Continuous Integration/Continuous Deployment) sẽ giúp rút ngắn thời gian phát triển và phát hành các phiên bản phần mềm mới. Sự kết hợp giữa CI/CD và DevSecOps không chỉ giúp quá trình phát triển diễn ra nhanh chóng mà còn bảo đảm an toàn. Việc tự động hóa kiểm tra bảo mật trong quy trình CI/CD sẽ giúp phát hiện những lỗ hổng sớm, từ đó giảm thiểu rủi ro. Đối với các nền tảng thảo luận mạng xã hội, chúng không chỉ cần đáp ứng các nhu cầu của người dùng mà còn phải đảm bảo tính bảo mật và riêng tư cho dữ liệu cá nhân. Xây dựng một quy trình CI/CD an toàn kết hợp với DevSecOps sẽ giúp gia tăng bảo vệ dữ liệu của người dùng, ngăn chặn các hành vi xâm phạm và đảm bảo tuân thủ các quy định về bảo mật thông tin.

TÁC GIẢ

Nguyễn Thanh Duy, Nguyễn Thành Luân

GIẢNG VIÊN HƯỚNG DẪN

NGÀNH

Năm:

Tổng quan đồ án

Trong thời đại công nghệ thông tin phát triển nhanh chóng, việc tạo ra các ứng dụng mạng xã hội ngày càng trở nên phổ biến. Những hệ thống này thường cần có tính linh hoạt, khả năng mở rộng cùng với độ tin cậy cao. Kiến trúc microservices đã trở thành một giải pháp hiệu quả để đáp ứng các yêu cầu này, cho phép phát triển và triển khai các thành phần ứng dụng một cách độc lập, cũng như dễ bảo trì và nâng cấp.

Tuy nhiên, sự gia tăng các mối đe dọa an ninh mạng đã làm nổi bật tầm quan trọng của việc bảo vệ cho các ứng dụng. Theo nhiều báo cáo, những lỗ hổng an ninh trong phần mềm có thể dẫn đến hậu quả nghiêm trọng cho doanh nghiệp và người dùng. Do đó, DevSecOps đã xuất hiện như một phương pháp mới, kết hợp các nguyên tắc bảo mật vào toàn bộ quy trình phát triển phần mềm, từ giai đoạn thiết kế đến triển khai và duy trì.

Trong bối cảnh này, quy trình CI/CD (Continuous Integration/Continuous Deployment) sẽ giúp rút ngắn thời gian phát triển và phát hành các phiên bản phần mềm mới. Sự kết hợp giữa CI/CD và DevSecOps không chỉ giúp quá trình phát triển diễn ra nhanh chóng mà còn bảo đảm an toàn. Việc tự động hóa kiểm tra bảo mật trong quy trình CI/CD sẽ giúp phát hiện những lỗ hổng sớm, từ đó giảm thiểu rủi ro. Đối với các nền tảng thảo luận mạng xã hội, chúng không chỉ cần đáp ứng các nhu cầu của người dùng mà còn phải đảm bảo tính bảo mật và riêng tư cho dữ liệu cá nhân. Xây dựng một quy trình CI/CD an toàn kết hợp với DevSecOps sẽ giúp gia tăng bảo vệ dữ liệu của người dùng, ngăn chặn các hành vi xâm phạm và đảm bảo tuân thủ các quy định về bảo mật thông tin.

Vì vậy, đề tài này không chỉ có giá trị học thuật mà còn có tính ứng dụng cao. Việc tạo ra một quy trình CI/CD an toàn với DevSecOps cho các nền tảng thảo luận mạng xã hội sẽ cung cấp một mô hình tham khảo cho các tổ chức và doanh nghiệp trong việc phát triển và duy trì các ứng dụng an toàn. Hơn nữa, nghiên cứu và áp dụng đề tài sẽ nâng cao nhận thức về quản lý an ninh trong phát triển phần mềm trong cộng đồng lập trình viên, từ đó góp phần sản xuất các sản phẩm phần mềm bảo mật hơn.

Từ những lý do trên, việc thiết lập quy trình CI/CD an toàn với DevSecOps cho nền tảng thảo luận mạng xã hội dựa trên kiến trúc microservices là một đề tài có ý nghĩa và thiết thực. Nó không chỉ nâng cao chất lượng và hiệu quả của quy trình phát triển mà còn đảm bảo an toàn thông tin cho người dùng, góp phần thúc đẩy sự phát triển bền vững của các ứng dụng công nghệ trong xã hội hiện đại.

Cơ sở lý thuyết

Microservice
Microservice là một phong cách kiến trúc phần mềm trong đó ứng dụng được xây dựng dưới dạng một tập hợp các “dịch vụ nhỏ, độc lập và có thể triển khai riêng biệt”. Mỗi microservice phụ trách một chức năng cụ thể trong ứng dụng và có thể giao tiếp với nhau thông qua giao thức mạng (thường là HTTP/REST hoặc các giao thức nhắn tin).

Đặc điểm

  • Tính phân tán: Mỗi microservice hoạt động như một đơn vị độc lập và có thể được triển khai trên các máy chủ hoặc môi trường khác nhau.
  • Khả năng mở rộng: Microservices có thể được mở rộng độc lập, cho phép tăng cường hiệu suất mà không ảnh hưởng đến toàn bộ ứng dụng.
  • Độc lập công nghệ: Các microservice có thể được xây dựng bằng nhiều ngôn ngữ lập trình và công nghệ khác nhau, miễn là chúng có thể giao tiếp với nhau.

Kubernetes

Kubernetes là một nền tảng nguồn mở, khả chuyển, có thể mở rộng để quản lý các ứng dụng được đóng gói và các service, giúp thuận lợi trong việc cấu hình và tự động hoá việc triển khai ứng dụng. Kubernetes là một hệ sinh thái lớn và phát triển nhanh chóng. Các dịch vụ, sự hỗ trợ và công cụ có sẵn rộng rãi.” Kubernetes, thường được gọi là K8s, được Google phát triển và hiện nay được duy trì bởi Cloud Native Computing Foundation (CNCF), Kubernetes giúp các nhà phát triển và quản trị viên IT dễ dàng quản lý các ứng dụng chạy trong môi trường container.

image 25

Docker

Docker là nền tảng phần mềm cho phép bạn dựng, kiểm thử và triển khai ứng dụng một cách nhanh chóng. Docker đóng gói phần mềm vào các đơn vị được tiêu chuẩn hóa được gọi là container có mọi thứ mà phần mềm cần để chạy, bao gồm thư viện, công cụ hệ thống, mã và thời gian hoạt động.”

Docker đã tạo ra một cách tiếp cận mới cho việc phát triển và triển khai ứng dụng, đặc biệt trong môi trường đám mây và container. Nhờ vào tính năng đơn giản, hiệu quả và linh hoạt, Docker đã trở thành một công cụ không thể thiếu cho các lập trình viên và tổ chức có quy mô lớn trong việc phát triển phần mềm.

image 26

DevSecOps

DevSecOps là một phương pháp phát triển ứng dụng mà tích hợp các công cụ và các quy trình bảo mật vào mọi giai đoạn của vòng đời phát triển phần mềm, từ thiết kế ban đầu đến tích hợp, kiểm tra, đóng gói và triển khai. Trong quá khứ, các thành phần bảo mật thường được cân nhắc ở cuối giai đoạn phát triển của phần mềm. Nhưng khi việc phần mềm áp dụng các phương pháp Agile và DevOps nhằm giảm chu kỳ phát triển phần mềm xuống còn vài tuần hoặc thậm chí vài ngày, việc tích hợp bảo mật như truyền thống đã tạo ra một tình huống nghẽn cổ chai, làm chậm quá trình phát triển của phần mềm.

DevSecOps tích hợp yếu tố bảo mật ứng dụng và hạ tầng vào các quy trình và công cụ Agile và DevOps. Việc cân nhắc các yếu tố bảo mật sớm hơn giúp giải quyết các vấn đề về bảo mật khi chúng vừa xuất hiện, mức độ còn dễ dàng, nhanh chóng và ít tốn kém hơn để sửa chữa, và trước khi triển khai vào sản xuất. Đồng thời, nó cũng làm cho việc bảo mật ứng dụng và hạ tầng trở thành trách nhiệm chung của các nhóm phát triển, bảo mật và vận hành, thay vì chỉ trách nhiệm của một một thành phần bảo mật cụ thể.

image 27

CI/CD Security

CI/CD security là tập hợp các quy trình và công nghệ được triển khai để đảm bảo bảo mật và tính toàn vẹn của quá trình tích hợp liên tục và triển khai liên tục (CI/CD). Đây là một thành phần cốt lõi của DevSecOps, khi nó tích hợp an ninh xuyên suốt vòng đời phát triển phần mềm, thay vì coi an ninh là một giai đoạn riêng biệt. Mục tiêu của CI/CD security là phát hiện và giảm thiểu các lỗ hổng, giảm rủi ro và thúc đẩy các thực hành mã hóa an toàn.

Trong một pipeline CI/CD truyền thống, các bước như xây dựng, kiểm tra và triển khai thường không bao gồm các biện pháp bảo mật. Điều này có thể dẫn đến các rủi ro như rò rỉ dữ liệu nhạy cảm, sử dụng mã hoặc thành phần bên thứ ba không an toàn, và truy cập trái phép vào kho mã nguồn hoặc công cụ build. CI/CD security giúp khắc phục những lỗ hổng này bằng cách tích hợp các kiểm tra an ninh như quét mã nguồn, kiểm tra lỗi bảo mật, và xác thực/ủy quyền vào toàn bộ vòng đời phát triển. Việc này giúp các nhóm phát hiện và khắc phục các lỗ hổng ngay từ đầu, trước khi mã nguồn được triển khai vào sản xuất.

Thực hiện đề tài

Các công cụ hỗ trợ quy trình CI bao gồm:

  • Jenkins: Nền tảng tự động hóa giúp triển khai và phân phối phần mềm hiệu quả.
  • Trivy: Công cụ quét lỗ hổng bảo mật mạnh mẽ cho hình ảnh container và mã nguồn.
  • Sonarqube: Giải pháp phân tích mã nguồn giúp đảm bảo chất lượng và bảo mật phần mềm.
  • OWASP Dependency-Check: Công cụ kiểm tra lỗ hổng trong các thư viện phụ thuộc của ứng dụng.
    Về quy trình CD, chúng ta có ArgoCD, một công cụ quản lý và triển khai Kubernetes dễ dàng.
    Để giám sát và theo dõi, không thể không nhắc đến:
  • Prometheus: Hệ thống giám sát và cảnh báo mã nguồn mở, giúp thu thập và phân tích dữ liệu.
  • Grafana: Công cụ trực quan hóa dữ liệu mạnh mẽ, hỗ trợ việc tạo bảng điều khiển linh hoạt cho xu hướng và hiệu suất hệ thống

Thiết kế và triển khai hệ thống

image 28
image 29
image 30
image 31

Đánh giá

1. Mức độ hoàn thành

  • Đã tích hợp được những công cụ bảo mật vào trong quá trình tích hợp liên tục của ứng dụng. Giúp hạn chế phát sinh những vấn đề về bảo mật.
  • Triển khai được các công cụ để theo dõi và giám sát tài nguyên của hệ thống và trạng thái triển khai của ứng dụng trên môi trường Kubernetes.
    2. Khuyết điểm
  • Quá trình CI phụ thuộc vào các công cụ bên ngoài như SonarQube và Trivy có thể gây ra vấn đề nếu các công cụ này gặp sự cố hoặc không hoạt động đúng cách.
  • Việc phân tích mã nguồn qua SonarQube và quét bảo mật qua Trivy có thể mất thời gian do phải cập nhật cơ sở dữ liệu lỗ hỏng, làm chậm quá trình phát triển.
  • Các công cụ và hệ thống vẫn chưa được thiết lập và triển khai một cách an toàn và bảo mật. Hiện tại, chúng chỉ mới dựng lên và thực hiện các chức năng cơ bản chứ vẫn chưa được triển khai theo một mô hình đảm bảo về tính sẵn sàng và tính bảo mật.
  • Chưa thiết lập các giải pháp bảo mật cũng như là chưa có phân tích và giải pháp về cơ chế xác thực và phân quyền trong môi trường Kubernetes. Bên cạnh đó, vẫn chưa có giải pháp để quản lý các secret cho các biến môi trường và các key.
  • Việc giám sát vẫn còn sơ sài chỉ theo dõi các chỉ số mức độ sử dụng của các tài nguyên trong hệ thống mà chưa có các cơ chế thông báo. Ngoài ra, việc giám sát bằng granfana gây ra những khó khăn nhất định khi triển khai một dịch vụ mới ta cần phải thiết lập thủ công các bảng điều khiển và theo dõi cho từng dịch vụ .

3. Định hướng phát triển

Về quy trình CI, cần tinh chỉnh cấu hình của SonarQube và Trivy để tối ưu hóa tốc độ phân tích mà không ảnh hưởng đến chất lượng. Tìm hiểu cách chạy các bước phân tích song song để tiết kiệm thời gian đồng thời đảm bảo rằng Jenkins có đủ tài nguyên (CPU, RAM) để có thể chạy nhiều bước phân tích song song mà không bị chậm.

Nghiên cứu và triển khai giải pháp Hashicorp Vault để quản lý và bảo vệ các secret. Đồng thời, nghiên cứu và triển khai giải pháp quản lý cluster kuberntes như Kubescape. Đây là công cụ mã nguồn mở cung cấp khả năng bảo mật từ giai đoạn phát triển đến giai đoạn triển khai. Nhóm sẽ nghiên cứu sử dụng công cụ này để kiểm tra tình trạng bảo mật của các cấu hình triển khai dựa trên các khuôn mẫu từ NSA-CISA, MITRE ATT&CK® and the CIS Benchmark.

Triển khai các giải pháp giám sát có khả năng quản lí hệ thống mạng và trực quan hoá các kết nối mạng giữa các pod trong hệ thống Kubernetes. Nhóm sẽ nghiên cứu và triển khai một số giải pháp mạng phổ biến cho môi trường Kubernetes như Calico và Cilium.

Kết luận

Đồ án đã hoàn thành mục tiêu triển khai Threaddit, một phiên bản mô phỏng của Reddit, thông qua việc ứng dụng ArgoCD theo phương pháp GitOps. Dự án tập trung xây dựng quy trình tự động hóa CI/CD, trong đó bao gồm tự động build và deploy ứng dụng khi mã nguồn thay đổi, đồng thời tích hợp các công cụ quét bảo mật nhằm đảm bảo chất lượng và an toàn của mã nguồn. Mặc dù các chức năng của ứng dụng hiện chưa được triển khai dưới dạng các service riêng lẻ, nhóm đã xây dựng nền tảng cần thiết để phát triển theo kiến trúc microservices trong tương lai