Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh ngành Công nghệ Thông tin có tốc độ cạnh tranh cao, việc đẩy nhanh tốc độ triển khai sản phẩm phần mềm là yếu tố sống còn của doanh nghiệp. Để đáp ứng nhu cầu khách hàng, các tính năng mới cần được cập nhật liên tục thông qua phương pháp tiếp cận DevOps, cho phép các tổ chức triển khai ứng dụng hàng chục đến hàng trăm lần mỗi ngày. Tuy nhiên, các phương pháp bảo đảm an toàn thông tin truyền thống thường được thực hiện độc lập ở giai đoạn cuối của quy trình phát triển, tạo ra nút thắt cổ chai và không theo kịp tốc độ của chu kỳ tích hợp và triển khai liên tục (CI/CD). Dẫn chứng từ khảo sát của HPE Security Fortify cho thấy khoảng cách lớn giữa nhận thức và thực tế áp dụng bảo mật trong DevOps; đồng thời báo cáo từ Gartner chỉ ra rằng nhiều nhà quản lý và lập trình viên xem các rào cản bảo mật là yếu tố cản trở sự linh hoạt. Xuất phát từ thực tế đó, đề tài "Nghiên cứu và triển khai mô hình đảm bảo an toàn thông tin trong quy trình phát triển và vận hành phần mềm (DevSecOps)" được thực hiện nhằm dung hòa giữa tốc độ phân phối và mức độ an toàn thông tin.

Mục tiêu nghiên cứu của khóa luận được xác định cụ thể qua ba nhiệm vụ:

  1. Nghiên cứu quy trình phát triển phần mềm có tính tích hợp liên tục (Continuous Integration - CI), triển khai liên tục (Continuous Deployment - CD) dựa trên mô hình DevOps và các nguy cơ gây mất an toàn thông tin.
  2. Xây dựng quy trình đảm bảo an toàn thông tin và tích hợp các công cụ kiểm thử tự động để kiểm tra tính bảo mật của ứng dụng.
  3. Triển khai và đánh giá quy trình đảm bảo an toàn thông tin cho một dự án phát triển ứng dụng web cụ thể.

Đối tượng nghiên cứu bao gồm:

  • Mô hình DevOps và các nguy cơ gây mất an toàn thông tin trong quy trình vận hành.
  • Các công cụ hỗ trợ quá trình tích hợp liên tục và triển khai liên tục.
  • Các công cụ kiểm thử bảo mật tự động tích hợp trong quy trình phát triển web.
  • Nền tảng xây dựng ứng dụng web Node.js.
  • Framework xây dựng ứng dụng web Express và Angular.

Phạm vi nghiên cứu tập trung vào việc tìm hiểu quy trình phát triển phần mềm DevOps trên nền tảng container hóa (Kubernetes), từ đó ứng dụng các giải pháp mã nguồn mở và công cụ kiểm thử tự động để phát hiện các lỗ hổng an toàn thông tin trên ứng dụng web.

Cơ sở lý thuyết và phương pháp

Khóa luận thiết lập nền tảng lý thuyết thông qua việc phân tích quá trình tiến hóa của các mô hình phát triển phần mềm:

  • Mô hình truyền thống và Agile: Mô hình Thác nước (Waterfall) do Winston W. Royce đề xuất năm 1970 với 5 giai đoạn tuần tự (Requirements/SRS, Design, Implementation, Verification, Maintenance); Tuyên ngôn Agile (2001) và khung làm việc Scrum với các vòng lặp Sprint (1-4 tuần), Product Backlog, Sprint Backlog và Daily Scrum.
  • Quy trình CI/CD: Tích hợp liên tục (CI), Phân phối liên tục (Continuous Delivery - CD) với bước phê duyệt thủ công trước khi vào môi trường vận hành thực tế (production), và Triển khai liên tục (Continuous Deployment - CD) với đường ống tự động hóa hoàn toàn.
  • Văn hóa DevOps và DevSecOps: Mô hình CAMS (Culture, Automation, Measurement, Sharing) của Damon Edwards và John Willis; mô hình chia sẻ tri thức SECI; các chỉ số đo lường như thời gian trung bình để phát hiện lỗi (Mean time to Detect - MTTD). Triết lý DevSecOps thực hiện chuyển dịch bảo mật sang bên trái ("shift left"), đưa an ninh vào từng giai đoạn thông qua mô hình hóa mối đe dọa (threat modeling), bảo mật dưới dạng mã (Security as code) và kiểm thử liên tục.
  • Công nghệ ảo hóa và điều phối container: Công nghệ đóng gói Docker (Docker Daemon, Docker Client, Engine, Hub, Dockerfile); nền tảng điều phối cụm Kubernetes (K8s) với các thành phần điều khiển (kube-apiserver, etcd, kube-scheduler, kube-controller-manager) và thành phần node (kubelet, kube-proxy, container runtime); bản phân phối gọn nhẹ K3s (dưới 100MB, sử dụng SQLite thay vì etcd) và trình quản lý Helm Chart.
  • Kiểm thử an ninh ứng dụng: Phương pháp kiểm thử bảo mật ứng dụng tĩnh (SAST) với SonarQube và kiểm thử bảo mật ứng dụng động (DAST) sử dụng OWASP Zed Attack Proxy (ZAP).

Phương pháp nghiên cứu chủ đạo là phương pháp thiết kế - xây dựng hệ thống kết hợp thực nghiệm. Nhóm tác giả tổng hợp tài liệu chuyên ngành, thiết kế luồng quy trình CI/CD tích hợp công cụ an toàn thông tin, sau đó triển khai thực nghiệm mô hình trên một ứng dụng web mô phỏng viết bằng Angular, Node.js và Express có cài cắm các lỗ hổng phổ biến (SQL Injection, XSS) để kiểm tra năng lực phát hiện và ngăn chặn tự động của hệ thống.

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

Mô hình hệ thống được cấu trúc dựa trên sự phối hợp của các thành phần mã nguồn mở, kết nối xuyên suốt qua đường ống Jenkins pipeline và một cổng web quản trị tập trung.

Phân tầng chức năng Thành phần công nghệ Vai trò và nhiệm vụ kỹ thuật
Quản lý mã nguồn (SCM) GitLab Lưu trữ kho mã nguồn tập trung, kích hoạt Webhook khi có sự kiện đẩy mã (push/commit).
Tự động hóa CI/CD Jenkins (Jenkinsfile) Nhận tín hiệu từ GitLab, điều phối quy trình phân tích tĩnh, đóng gói ứng dụng, chạy kiểm thử và phân phối.
Kiểm thử an toàn tĩnh (SAST) SonarQube Quét mã nguồn để phát hiện lỗ hổng cú pháp, cấu hình bảo mật yếu, dữ liệu nhạy cảm và chất lượng mã.
Quản lý gói & Registry Nexus Repository Lưu trữ an toàn các Docker image đã đóng gói sau khi vượt qua các bước kiểm tra mã.
Điều phối ứng dụng Kubernetes / K3s Vận hành môi trường staging và production, quản lý vòng đời container và tự động cân bằng tải.
Kiểm thử động & Khai thác OWASP ZAP Thực hiện rà quét, phát hiện các lỗ hổng thời gian chạy trên môi trường staging trước khi lên production.
Lưu trữ chia sẻ NFS Server Cung cấp hệ thống lưu trữ tệp tin dùng chung qua mạng cho các node trong cụm.
Giám sát & Quản trị Bảng điều khiển (Dashboard) Thu thập log qua API, trực quan hóa trạng thái commit, báo cáo lỗ hổng và gửi thông báo tự động.

Hệ thống điều phối tập trung thông qua các giao diện lập trình ứng dụng (Web API) phục vụ việc tương tác dữ liệu giữa pipeline và trang web quản trị:

  • API /api/commit: Tiếp nhận dữ liệu commit từ pipeline, ghi nhận tác giả, mã băm (hash), thời gian và nhánh phát triển.
  • API /detailreport: Truy xuất chi tiết các phát hiện lỗ hổng từ SonarQube và OWASP ZAP gắn với từng lần dựng (build).
  • API /search: Hỗ trợ tìm kiếm, truy vấn lịch sử quét mã và trạng thái triển khai của ứng dụng theo từ khóa và bộ lọc.

Quy trình tự động hóa diễn ra theo kịch bản: Khi lập trình viên commit mã lên GitLab, Webhook lập tức kích hoạt Jenkins pipeline. Jenkins tải mã về, chạy kiểm thử bảo mật tĩnh bằng SonarQube. Nếu mã nguồn không vượt qua các tiêu chuẩn an toàn (Quality Gate), pipeline sẽ tự động hủy bỏ và gửi cảnh báo về nhóm phát triển. Nếu vượt qua, Jenkins tiến hành đóng gói Docker image, đẩy lên Nexus Registry, triển khai ứng dụng lên môi trường staging trên K3s, sau đó kích hoạt OWASP ZAP để quét lỗ hổng động. Chỉ khi ứng dụng đạt toàn bộ bài kiểm tra tại staging, hệ thống mới tự động kích hoạt tiến trình triển khai xuống môi trường production.

Nội dung chính theo từng chương

Chương 1: Mở đầu

Chương này xác định bối cảnh chuyển dịch số của thị trường phần mềm, phân tích sự xung đột giữa tốc độ phát hành của DevOps và tính chặt chẽ của công tác an toàn thông tin. Tác giả nêu rõ mục tiêu nghiên cứu gồm 3 điểm, xác định đối tượng là mô hình DevOps, các công cụ CI/CD, công cụ bảo mật và công nghệ web (Node.js, Express, Angular). Phạm vi giới hạn ở giải pháp mã nguồn mở và nền tảng container hóa (Kubernetes). Chương mở đầu cũng làm rõ tính mới trong việc tích hợp công cụ kiểm thử tự động vào chu kỳ phát triển liên tục và khẳng định khả năng ứng dụng thực tế cho các doanh nghiệp vừa và nhỏ.

Chương 2: Cơ sở lý thuyết

Chương 2 cung cấp hệ thống lý thuyết toàn diện về các mô hình phát triển phần mềm từ Waterfall đến Agile, Scrum. Tiếp đó, tác giả phân tích bản chất của CI, CD và sự khác biệt giữa Continuous Delivery (phân phối liên tục có phê duyệt thủ công) và Continuous Deployment (triển khai tự động hoàn toàn ra production). Nội dung tập trung làm rõ mô hình DevOps dựa trên 4 trụ cột CAMS (Culture, Automation, Measurement, Sharing) cùng 7 giai đoạn trong vòng đời vận hành. Từ đó, tác giả phân tích khái niệm DevSecOps với nguyên lý "shift left", cấu trúc microservices, công nghệ container hóa của Docker, kiến trúc cụm Kubernetes và bản phân phối gọn nhẹ K3s sử dụng SQLite. Chương này cũng phân tích kiến trúc công cụ kiểm thử mã nguồn SonarQube và công cụ kiểm thử thâm nhập OWASP ZAP.

Chương 3: Phân tích và thiết kế mô hình

Tác giả trình bày bản thiết kế kiến trúc hệ thống tổng quan và chi tiết của mô hình DevSecOps. Trọng tâm của chương là thiết kế kịch bản Jenkins pipeline tích hợp GitLab, SonarQube, Nexus Repository, Kubernetes và OWASP ZAP. Tác giả thiết kế một hệ thống quản lý điều phối tập trung gồm cơ sở dữ liệu và giao diện web Dashboard để theo dõi các chỉ số commit, kết quả quét an ninh. Chương 3 mô tả chi tiết các thông số phần cứng, cấu hình máy chủ chia sẻ NFS, cấu hình Webhook giữa các hệ thống và đặc tả các Web API (/api/commit, /detailreport, /search). Đồng thời, tác giả xây dựng một ứng dụng web mẫu có chủ đích tồn tại hai lỗ hổng phổ biến là SQL Injection (khai thác truy vấn cơ sở dữ liệu trái phép) và Cross-Site Scripting (XSS - chèn mã độc vào trình duyệt) để làm đối tượng kiểm thử.

Chương 4: Đánh giá kết quả

Chương 4 ghi lại quá trình vận hành thực nghiệm thông qua 3 kịch bản: triển khai ứng dụng web mới, cập nhật tính năng (tính năng tìm kiếm) và cập nhật phiên bản ứng dụng. Kết quả cho thấy hệ thống hoạt động chính xác theo thiết kế logic:

  • Trang web quản trị ghi nhận và hiển thị đầy đủ các chỉ số thống kê trên Dashboard.
  • Các công cụ quét tự động phát hiện chính xác các lỗi bảo mật nghiêm trọng: SQL Injection, XSS, rò rỉ dữ liệu nhạy cảm (hardcoded secrets/credentials), thư viện phụ thuộc mất an toàn (vulnerable dependencies) và các sai sót trong cấu hình hệ thống.
  • Jenkins pipeline thực hiện dừng tự động (abort/fail) khi phát hiện lỗi an toàn thông tin hoặc khi không vượt qua bài kiểm thử tại môi trường staging, ngăn không cho mã độc hại tiến vào production.
  • Cơ chế gửi thông báo tự động phản hồi ngay lập tức cho lập trình viên về nguyên nhân lỗi của commit.
  • Cuối chương, tác giả tổng hợp đánh giá khách quan về ưu điểm (tự động hóa cao, phát hiện lỗi sớm, tập trung hóa quản lý) và nhược điểm (phụ thuộc tài nguyên phần cứng, thời gian chạy pipeline tăng khi kiểm thử kỹ) của mô hình.

Chương 5: Kết luận và hướng phát triển

Tác giả tổng kết lại các mục tiêu đã đạt được: nghiên cứu thành công quy trình DevSecOps, thiết kế và triển khai đường ống CI/CD tích hợp công cụ bảo mật tự động, đồng thời kiểm thử thành công trên ứng dụng web mẫu. Phần hướng phát triển mở ra các nội dung nghiên cứu tiếp theo nhằm hoàn thiện giải pháp trong tương lai.

Kết quả và đóng góp

Nghiên cứu mang lại kết quả thực nghiệm rõ ràng thông qua việc kiểm thử hệ thống tự động hóa an toàn thông tin:

Hạng mục lỗi kiểm thử Công cụ phát hiện Hành vi xử lý của hệ thống Kết quả ghi nhận trên hệ thống
SQL Injection (SQLi) SonarQube / OWASP ZAP Tự động chặn pipeline, không tạo bản dựng (build). Ghi nhận chi tiết dòng mã vi phạm trên Dashboard, gửi thông báo lỗi commit.
Cross-Site Scripting (XSS) SonarQube / OWASP ZAP Chặn pipeline tại giai đoạn phân tích mã hoặc staging. Ngăn chặn triển khai mã chứa lỗ hổng chèn script độc hại ra production.
Dữ liệu nhạy cảm (Secrets) SonarQube Tự động phát hiện thông tin cấu hình nhạy cảm bị nhúng thô. Pipeline dừng ngay tại bước SAST; cảnh báo rò rỉ thông tin xác thực.
Thư viện mất an toàn SonarQube / Phân tích gói Quét danh mục phụ thuộc (dependencies), đối chiếu cơ sở dữ liệu lỗ hổng. Đưa ra danh sách các thư viện Node.js lỗi thời cần cập nhật.
Cấu hình thiếu bảo mật SonarQube Phân tích tệp tin cấu hình và tham số hệ thống. Cảnh báo các thiết lập sai chuẩn bảo mật trên ứng dụng web.
Kiểm thử staging thất bại Bộ kiểm thử tự động Dừng tiến trình phát hành, không đưa container vào cụm production. Gửi thông báo tự động: commit không đạt staging tests.

Đóng góp khoa học và thực tiễn của đề tài:

  • Tính thực tiễn: Hiện thực hóa quy trình DevSecOps hoàn chỉnh bằng 100% công cụ mã nguồn mở (GitLab, Jenkins, SonarQube, Nexus, K3s, OWASP ZAP), giúp các doanh nghiệp vừa và nhỏ có thể áp dụng ngay mà không tốn chi phí bản quyền đắt đỏ.
  • Tính tự động hóa: Chuyển đổi kiểm thử bảo mật từ quy trình thủ công định kỳ thành các bước kiểm tra tự động diễn ra liên tục tại từng commit, giảm thiểu thời gian trung bình để phát hiện lỗi (MTTD).
  • Hệ thống quản trị tập trung: Xây dựng thành công cổng Dashboard và các Web API điều phối riêng, hỗ trợ các bên liên quan (lập trình viên, chuyên viên bảo mật, quản trị vận hành) theo dõi tập trung chất lượng mã và mức độ an toàn của từng lần phát hành.

Hạn chế và hướng nghiên cứu tiếp

Khóa luận chỉ ra một số hạn chế gắn liền với phạm vi triển khai thực tế:

  • Phạm vi nền tảng: Mô hình thực nghiệm mới tập trung tối ưu cho ứng dụng web xây dựng trên nền tảng Node.js cùng framework Express và Angular; chưa được đánh giá đa dạng trên các ngôn ngữ và nền tảng khác như Java, Python, .NET.
  • Hạ tầng cụm điều phối: Việc sử dụng K3s với cơ sở dữ liệu SQLite nhúng giúp hệ thống nhẹ, dễ cài đặt nhưng tiềm ẩn giới hạn về khả năng mở rộng quy mô lớn và tính sẵn sàng cao so với cụm Kubernetes đầy đủ sử dụng etcd phân tán trên nhiều node.
  • Thời gian thực thi pipeline: Việc tích hợp đầy đủ cả phân tích tĩnh (SAST) và quét động (DAST) bằng OWASP ZAP làm gia tăng thời gian chờ của đường ống triển khai, đòi hỏi phải tối ưu cấu hình rà quét để duy trì tính linh hoạt của DevOps.

Hướng phát triển tiếp theo được tác giả đề xuất:

  • Mở rộng khả năng tích hợp công cụ kiểm thử tự động cho nhiều ngôn ngữ lập trình và kiến trúc công nghệ khác nhau.
  • Tối ưu hóa cấu hình quét của OWASP ZAP và SonarQube để giảm thiểu thời gian thực thi của pipeline mà vẫn đảm bảo độ bao phủ bảo mật.
  • Nghiên cứu cơ chế tự động hóa khắc phục hoặc gợi ý bản vá cho các lỗi bảo mật phổ biến ngay khi phát hiện.

Giá trị tham khảo

Báo cáo khóa luận có giá trị tham khảo ứng dụng đối với:

  • Sinh viên ngành An toàn thông tin và Công nghệ phần mềm: Tài liệu cung cấp cơ sở lý thuyết chuẩn mực về vòng đời phần mềm, các mô hình phát triển hiện đại (Agile, Scrum, CI/CD, DevOps, DevSecOps) và kiến trúc container hóa với Kubernetes/K3s.
  • Kỹ sư phát triển phần mềm và DevOps: Phần hướng dẫn thiết kế Jenkinsfile, tích hợp Webhook với GitLab, SonarQube và triển khai Helm Chart trên Kubernetes là tài liệu thực hành có tính khả thi cao.
  • Doanh nghiệp vừa và nhỏ: Toàn bộ kiến trúc trong khóa luận sử dụng giải pháp mã nguồn mở, là tài liệu tham khảo để xây dựng đường ống phân phối phần mềm an toàn với chi phí tối ưu.

Câu hỏi thường gặp

1. Điểm khác biệt căn bản giữa mô hình DevOps và DevSecOps được nhóm tác giả xác định là gì?
Trong DevOps, an toàn thông tin thường bị tách rời và thực hiện ở bước kiểm tra cuối cùng, dễ trở thành nút thắt làm chậm tốc độ bàn giao phần mềm. DevSecOps áp dụng nguyên tắc "chuyển dịch sang bên trái" (shift left), đưa các biện pháp và công cụ bảo mật vào ngay từ giai đoạn lập kế hoạch và tích hợp tự động trong suốt các khâu viết mã, kiểm thử, đóng gói và vận hành.

2. Tại sao nhóm tác giả lại lựa chọn bản phân phối K3s thay vì Kubernetes (K8s) tiêu chuẩn trong mô hình triển khai?
K3s là bản phân phối Kubernetes gọn nhẹ, đóng gói toàn bộ control plane trong một tệp nhị phân dưới 100MB, thay thế etcd phức tạp bằng cơ sở dữ liệu SQLite nhúng, và yêu cầu tài nguyên phần cứng thấp (chỉ từ 512MB RAM). Điều này phù hợp với điều kiện thử nghiệm thực tế và tối ưu cho các doanh nghiệp có hạ tầng vừa và nhỏ.

3. Pipeline phản ứng như thế nào khi phát hiện các lỗi bảo mật như SQL Injection hay XSS trong mã nguồn?
Khi phát hiện lỗ hổng SQL Injection hoặc XSS qua bước quét của SonarQube hoặc OWASP ZAP, Jenkins pipeline sẽ lập tức kích hoạt trạng thái dừng tự động (abort), chặn toàn bộ tiến trình đóng gói và triển khai lên môi trường tiếp theo. Hệ thống đồng thời chuyển tiếp log vi phạm về Dashboard quản trị và gửi thông báo lỗi commit cho lập trình viên.

4. Trang web quản trị tập trung (Dashboard) đóng vai trò gì và giao tiếp với hệ thống ra sao?
Trang web quản trị do nhóm tác giả tự xây dựng có vai trò hiển thị trạng thái của các lần commit, báo cáo chi tiết các lỗi bảo mật được phát hiện và trạng thái các giai đoạn của pipeline. Trang web giao tiếp với hệ thống thông qua các Web API chuyên dụng như /api/commit, /detailreport và /search.

Kết luận

Khóa luận tốt nghiệp của tác giả Trần Gia Bảo và Trương Thảo Vy đã giải quyết trọn vẹn bài toán tích hợp an toàn thông tin vào quy trình phát triển và vận hành phần mềm thông qua mô hình DevSecOps. Bằng việc kết hợp các công cụ mã nguồn mở như GitLab, Jenkins, SonarQube, OWASP ZAP và K3s, nhóm nghiên cứu đã xây dựng thành công một đường ống tự động hóa có khả năng phát hiện và ngăn chặn sớm các lỗ hổng bảo mật nghiêm trọng trước khi phát hành. Kết quả thực nghiệm minh chứng rõ nét tính khả thi của giải pháp, cung cấp tài liệu tham khảo có giá trị kỹ thuật cao cho sinh viên chuyên ngành và các kỹ sư triển khai hệ thống an toàn thông tin trong thực tế.