Bối cảnh và vấn đề nghiên cứu
Trong ngành công nghệ thông tin và phát triển phần mềm, yêu cầu rút ngắn thời gian hoàn thiện và bàn giao sản phẩm nhưng vẫn đảm bảo chất lượng kỹ thuật là một áp lực thường trực. Lịch sử phát triển phần mềm đã ghi nhận các bước chuyển giao phương pháp luận từ mô hình Thác nước (Waterfall) sang các mô hình linh hoạt như Agile, Scrum, Lean và gần đây là DevOps. Mô hình DevOps đã giải quyết điểm nghẽn giữa nhóm phát triển (Development - Dev) và nhóm vận hành (Operations - Ops), giúp tự động hóa quy trình phân phối phần mềm và gia tăng tần suất phát hành.
Tuy nhiên, việc triển khai DevOps thuần túy bộc lộ lỗ hổng lớn về an toàn thông tin. Trong quy trình DevOps truyền thống, công tác kiểm thử và rà soát bảo mật thường bị đẩy xuống giai đoạn cuối cùng (ngay trước khi phát hành hoặc trong giai đoạn kiểm thử hoàn thiện). Cách tiếp cận này dẫn đến tình trạng phát hiện lỗ hổng muộn, chi phí khắc phục tăng cao, kéo dài thời gian bàn giao sản phẩm hoặc tiềm ẩn rủi ro lộ lọt dữ liệu khi ứng dụng đã vận hành thực tế. Theo số liệu khảo sát từ Gartner được trích dẫn trong khóa luận, chỉ có khoảng 20% kỹ sư bảo mật tham gia vào quy trình DevOps tại các tổ chức. Để giải quyết mâu thuẫn giữa tốc độ phát hành và an toàn hệ thống, mô hình DevSecOps ra đời nhằm tích hợp các biện pháp bảo mật vào mọi giai đoạn của vòng đời phát triển phần mềm (Software Development Life Cycle - SDLC).
Khóa luận tốt nghiệp kỹ sư ngành An toàn thông tin của tác giả Lê Thanh Hồng Nhựt và Châu Thị Nguyệt (Trường Đại học Công nghệ Thông tin, Đại học Quốc gia TP. Hồ Chí Minh) tập trung giải quyết bài toán trên thông qua 03 mục tiêu cụ thể:
- Nghiên cứu tổng quan về mô hình DevOps, DevSecOps, các công cụ hỗ trợ tích hợp liên tục (CI), triển khai liên tục (CD) và các giải pháp kiểm thử bảo mật tự động trong quy trình phát triển phần mềm.
- Phân tích, thiết kế và triển khai một hệ thống phát triển phần mềm tự động, an toàn theo mô hình DevSecOps dựa trên nền tảng container hóa và các công cụ mã nguồn mở.
- Thực nghiệm, kiểm tra và đánh giá ưu nhược điểm của hệ thống thông qua các kịch bản phát triển ứng dụng cụ thể, từ đó xác định tính khả thi khi ứng dụng vào các doanh nghiệp vừa và nhỏ.
Đối tượng nghiên cứu:
- Mô hình DevSecOps và các nguyên tắc chuyển dịch kiểm thử an toàn về phía trước (Shift-Left).
- Các công cụ tự động hóa quy trình CI/CD.
- Các công cụ hỗ trợ kiểm thử an ninh phần mềm ở nhiều tầng (mã nguồn, thư viện phụ thuộc, môi trường container, ứng dụng đang chạy).
Phạm vi nghiên cứu:
- Tập trung vào các giải pháp công nghệ mã nguồn mở triển khai trên hạ tầng container hóa (Docker, Kubernetes).
- Mô hình định hướng ứng dụng thực tế cho các doanh nghiệp phát triển phần mềm quy mô vừa và nhỏ (SMEs).
Cơ sở lý thuyết và phương pháp
Khóa luận xây dựng hệ thống dựa trên việc tổng hợp các khung lý thuyết phát triển phần mềm và các công nghệ hạ tầng, an toàn thông tin:
- Các mô hình phát triển phần mềm: Khảo cứu tiến trình từ mô hình Waterfall (Royce, 1970), Tuyên ngôn Agile (2001), mô hình Scrum với các chu kỳ Sprint 2–4 tuần (Schwaber & Beedle, 2002), và 7 nguyên tắc phát triển phần mềm Lean (Poppendieck, 2003) bắt nguồn từ Hệ thống sản xuất Toyota.
- Mô hình DevOps và DevSecOps: Phân tích nguyên lý hợp tác liên chức năng khởi nguồn từ hội thảo Velocity 2009 (bài trình bày của John Allspaw và Paul Hammond) và sự kiện DevOpsDays của Patrick Debois. Khóa luận tiếp cận DevSecOps qua bộ khung 4 trụ cột CAMS (Culture - Văn hóa, Automation - Tự động hóa, Measurement - Đánh giá, Sharing - Chia sẻ) kết hợp các quy trình kỹ thuật: mô hình hóa mối đe dọa (Threat Modeling), kiểm thử liên tục (Continuous Testing), giám sát và ghi nhật ký (Monitoring & Logging), cùng các kịch bản diễn tập an ninh (Red-Team drills).
- Kỹ thuật phần mềm liên tục (Continuous Software Engineering - CSE): Phân định ranh giới giữa Tích hợp liên tục (Continuous Integration - CI), Phân phối liên tục (Continuous Delivery - CDE), và Triển khai liên tục (Continuous Deployment - CD).
- Công nghệ lưu trữ và điều phối hạ tầng: Khái niệm hệ thống quản lý phiên bản mã nguồn phân tán (Git/GitLab), công nghệ container hóa (Docker) so với ảo hóa truyền thống (Virtual Machines), và cơ chế điều phối cụm tự động bằng Kubernetes (K8s) cùng công cụ quản trị Rancher.
- Phương pháp nghiên cứu: Phương pháp phân tích - tổng hợp tài liệu chuyên ngành; phương pháp thiết kế kỹ thuật hệ thống (System Architecture & Pipeline Engineering); và phương pháp thực nghiệm kiểm thử theo kịch bản (Scenario-based Testing) trên các dự án ứng dụng web mô phỏng.
Thiết kế và triển khai hệ thống
Hệ thống do nhóm tác giả xây dựng là một đường ống (pipeline) DevSecOps tự động hóa khép kín, tích hợp nhiều tầng kiểm soát an ninh từ khâu lập trình đến khi vận hành.
| Thành phần chức năng |
Công nghệ / Công cụ sử dụng |
Vai trò và nhiệm vụ trong hệ thống |
| Giao diện quản trị tập trung |
Administration Dashboard |
Cung cấp giao diện web cho phép quản lý tài khoản, theo dõi các menu Development, Security, Operations. |
| Quản lý mã nguồn |
GitLab |
Lưu trữ kho mã nguồn, phân nhánh phát triển (dev, master), kích hoạt Webhook khi có sự kiện đẩy mã nguồn. |
| Điều phối CI/CD Pipeline |
Jenkins (Jenkinsfile, Multibranch) |
Đọc cấu hình đường ống, tự động kích hoạt quá trình build, gọi các module kiểm thử an ninh và thực thi triển khai. |
| Kiểm tra chất lượng & SAST |
SonarQube |
Phân tích tĩnh mã nguồn, phát hiện lỗi cú pháp, đoạn mã dư thừa, code trùng lặp và các lỗ hổng an ninh cơ bản. |
| Kiểm tra thành phần phụ thuộc (SCA) |
OWASP Dependency Check |
Quét các thư viện bên thứ ba trong dự án để đối chiếu cơ sở dữ liệu lỗ hổng bảo mật đã công bố (CVE). |
| Điều phối và chạy ứng dụng |
Docker, Kubernetes (K8s), Rancher |
Đóng gói ứng dụng thành container image, quản lý cấu hình triển khai, phân bổ tài nguyên và dịch vụ mạng tự động. |
| Kiểm thử động ứng dụng (DAST) |
Arachni |
Tự động quét tìm kiếm các lỗ hổng bảo mật của ứng dụng web sau khi đã được triển khai lên môi trường thử nghiệm thông qua URL. |
| Kiểm tra bảo mật Container |
Kubei |
Quét và phát hiện lỗ hổng an ninh trên các container image và cụm Kubernetes đang chạy. |
| Thu thập log và giám sát tập trung |
ELK Stack (Elasticsearch, Logstash, Kibana) |
Tiếp nhận, xử lý và trực quan hóa toàn bộ nhật ký hoạt động (build logs, scan logs, system metrics) trên giao diện Kibana. |
Luồng xử lý dữ liệu và vận hành (Workflow):
- Lập trình viên đẩy (push) mã nguồn lên nhánh phát triển trên GitLab.
- GitLab kích hoạt Webhook gửi tín hiệu sang Jenkins.
- Jenkins khởi chạy Multibranch Pipeline theo kịch bản trong
Jenkinsfile:
- Giai đoạn 1: Build mã nguồn và thực hiện kiểm tra phân tích tĩnh bằng SonarQube.
- Giai đoạn 2: Quét các thư viện phụ thuộc bằng OWASP Dependency Check để phát hiện lỗ hổng bảo mật第三方.
- Giai đoạn 3: Nếu mã nguồn đáp ứng yêu cầu chất lượng và an toàn, tiến hành đóng gói Docker image và đẩy lên kho lưu trữ.
- Giai đoạn 4: Tự động triển khai container lên cụm Kubernetes thông qua cấu hình điều phối Rancher.
- Giai đoạn 5: Kích hoạt Arachni quét kiểm thử động (DAST) trên URL của ứng dụng vừa triển khai; đồng thời Kubei quét an ninh container/cluster.
- Giai đoạn 6: Toàn bộ thông tin nhật ký quá trình được đẩy về ELK Stack để phân tích và hiển thị cảnh báo tập trung.
Nội dung chính theo từng chương
Chương 1: Mở đầu
Chương này thiết lập nền tảng đề tài bằng việc trình bày lý do chọn đề tài trong bối cảnh các phương pháp bảo mật truyền thống không bắt kịp chu kỳ phát hành ngắn của DevOps. Tác giả xác định rõ 03 mục tiêu nghiên cứu, đối tượng nghiên cứu (mô hình DevSecOps, công cụ CI/CD, công cụ kiểm thử an toàn thông tin), phạm vi ứng dụng thực tế cho khối doanh nghiệp vừa và nhỏ, tính mới của đề tài cùng cấu trúc 5 chương của khóa luận.
Chương 2: Cơ sở lý thuyết
Chương 2 cung cấp hệ thống lý thuyết toàn diện gồm 7 nội dung trọng tâm:
- Phân tích các mô hình phát triển phần mềm: Waterfall, Agile, Scrum, Lean.
- Nguồn gốc, lợi ích (tốc độ, độ tin cậy, quy mô, cộng tác, bảo mật, quản lý rủi ro) và 7 giai đoạn của quy trình DevOps (Continuous Planning, Integration, Delivery, Deployment, Testing, Monitoring, Feedback & Optimization).
- Tổng quan tình hình nghiên cứu DevOps trên thế giới (dữ liệu khảo sát của Puppet Labs từ 4.000 người năm 2013 lên 35.000 người năm 2020; 88% doanh nghiệp Anh theo báo cáo Claranet) và tại Việt Nam (báo cáo TopDev 2019-2020 ghi nhận DevOps đứng thứ ba về mức độ quan tâm của lập trình viên).
- Bản chất mô hình DevSecOps, các nguyên tắc CAMS và các quy trình kỹ thuật triển khai.
- Khái niệm CSE và chi tiết các công đoạn CI, Continuous Delivery, Continuous Deployment.
- Hệ thống quản lý phiên bản mã nguồn (VCS tập trung và phân tán) cùng công nghệ ảo hóa, container hóa (Docker, kiến trúc Kubernetes, Rancher).
- Cơ chế hoạt động của các công cụ an ninh và giám sát mã nguồn mở: SonarQube, OWASP Dependency Check, Kubei, Arachni, ELK Stack.
Chương 3: Phân tích và thiết kế hệ thống
Tác giả trình bày sơ đồ kiến trúc tổng thể và luồng xử lý chi tiết của hệ thống DevSecOps. Nội dung chương tập trung thiết kế các phân hệ:
- Giao diện web quản trị Dashboard Administration (gồm các màn hình đăng nhập, phân quyền, cấu hình kết nối, menu Development, Security, Operations).
- Cấu hình tích hợp kho mã nguồn GitLab với hệ thống Jenkins qua Webhook và Multibranch Pipeline.
- Kịch bản tự động hóa quá trình build, kiểm thử tĩnh mã nguồn với SonarQube, kiểm tra thư viện với OWASP Dependency Check.
- Kịch bản đóng gói và triển khai ứng dụng tự động lên cụm Kubernetes/Rancher.
- Tích hợp kiểm thử bảo mật động Arachni theo URL ứng dụng và Kubei quét cụm container.
- Thiết lập hệ thống ELK Stack thu thập nhật ký tập trung từ các tiến trình build và kiểm thử.
Chương 4: Triển khai hệ thống và đánh giá kết quả
Chương 4 ghi nhận kết quả hiện thực hóa hệ thống trên môi trường phần cứng cụ thể và thực hiện đánh giá qua 4 kịch bản kiểm thử:
- Kịch bản 1: Triển khai đường ống DevSecOps hoàn chỉnh cho dự án nội bộ Administration Dashboard, kiểm chứng luồng hoạt động tự động từ Git commit đến khi chạy trên Kubernetes và xuất log ra Kibana.
- Kịch bản 2: Thử nghiệm phát triển tính năng mới có cài cắm các đoạn mã tồn tại lỗ hổng (như hàm
alert, từ khóa debugger). SonarQube đã phát hiện và cảnh báo chính xác vị trí lỗi mã nguồn.
- Kịch bản 3: Thử nghiệm phát triển tính năng có các lỗi lập trình cơ bản (lỗi phép so sánh logic, mã lỗi
Error, đoạn mã trùng lặp Duplicate, mã không thể thực thi unreachable code). Hệ thống đã phân tích và chỉ ra các điểm bất thường trên giao diện báo cáo.
- Kịch bản 4: Triển khai thực tế quy trình DevSecOps cho dự án thương mại điện tử "Kmarket" (k-market), xác nhận hệ thống tự động build, quét mã nguồn, quét phụ thuộc, quét bảo mật container, quét bảo mật web và triển khai thành công lên cụm máy chủ.
- Tổng kết đánh giá ưu điểm về mức độ tự động hóa, tính đa tầng trong kiểm tra an ninh và các điểm cần tối ưu.
Chương 5: Kết luận và hướng phát triển
Chương cuối tóm tắt lại các kết quả đạt được đối chiếu với mục tiêu ban đầu và đề xuất các hướng hoàn thiện hệ thống trong các giai đoạn tiếp theo.
Kết quả và đóng góp
Khóa luận đã hoàn thành các mục tiêu nghiên cứu và đạt được các kết quả kỹ thuật cụ thể:
| Hạng mục |
Kết quả đạt được ghi nhận trong văn bản |
| Xây dựng hệ thống hoàn chỉnh |
Thiết lập thành công mô hình DevSecOps tự động hóa khép kín, kết hợp đồng bộ 8 công cụ mã nguồn mở chính: GitLab, Jenkins, SonarQube, OWASP Dependency Check, Docker, Kubernetes, Rancher, Arachni, Kubei và ELK Stack. |
| Phát triển giao diện quản trị |
Xây dựng bảng điều khiển Dashboard Administration tập trung, phân chia rõ ràng các module Development, Security, Operations phục vụ vận hành. |
| Bảo mật đa tầng (Multi-layered Security) |
Thực hiện rà soát an ninh ở 4 cấp độ: Tĩnh mã nguồn (SAST - SonarQube), Thư viện phụ thuộc (SCA - OWASP Dependency Check), Động ứng dụng web (DAST - Arachni), và An toàn hạ tầng Container/K8s (Kubei). |
| Thực nghiệm qua 4 kịch bản |
Kiểm chứng tính năng phát hiện chính xác các lỗi lập trình (so sánh logic, trùng lặp, unreachable code), các lỗ hổng mã nguồn (alert, debugger) và triển khai thành công ứng dụng thực tế Kmarket trên nền tảng Kubernetes. |
Đóng góp của khóa luận:
- Đề xuất một mô hình tham chiếu DevSecOps khả thi, chi phí thấp nhờ tận dụng hoàn toàn các giải pháp mã nguồn mở, phù hợp với năng lực tài chính và hạ tầng của các doanh nghiệp vừa và nhỏ.
- Chứng minh tính khả thi của nguyên lý "Shift-Left Security" trong quy trình phát triển phần mềm, giúp tự động hóa quá trình phát hiện sai sót kỹ thuật và rủi ro an ninh ngay trong chu kỳ CI/CD thay vì để tồn đọng đến giai đoạn bàn giao sản phẩm.
Hạn chế và hướng nghiên cứu tiếp
Dựa trên nội dung khóa luận và phạm vi thực nghiệm kỹ thuật:
Hạn chế:
- Hệ thống được cấu hình thử nghiệm chủ yếu trên môi trường lab và cụm Kubernetes quy mô nhỏ phục vụ doanh nghiệp vừa và nhỏ, chưa đánh giá tải lớn khi nhiều đường ống CI/CD chạy đồng thời.
- Việc thực hiện nhiều bước quét bảo mật chuyên sâu (SonarQube, OWASP Dependency Check, Arachni, Kubei) trong một pipeline tuần tự có thể làm tăng tổng thời gian hoàn thành một lượt build/deploy.
- Khả năng kiểm thử động (DAST bằng Arachni) phụ thuộc vào trạng thái sẵn sàng của ứng dụng web sau khi deploy và chưa bao phủ sâu các API phức tạp đòi hỏi cơ chế xác thực đa bước.
Hướng nghiên cứu tiếp:
- Tối ưu hóa hiệu năng đường ống bằng cách song song hóa các giai đoạn kiểm tra an ninh không phụ thuộc lẫn nhau.
- Nghiên cứu tích hợp thêm các công nghệ bảo mật nâng cao như kiểm thử bảo mật ứng dụng tương tác (IAST), bảo vệ ứng dụng khi đang chạy (RASP) và rà soát tự động lộ lọt khóa bí mật (Secret Scanning).
- Mở rộng cơ chế tự động phản hồi và khắc phục lỗi (Auto-remediation) khi phát hiện các lỗ hổng đã có bản vá định sẵn.
Giá trị tham khảo
Khóa luận là tài liệu tham khảo kỹ thuật hữu ích đối với:
- Sinh viên và học viên ngành An toàn thông tin, Mạng máy tính, Công nghệ thông tin: Tham khảo mô hình kiến trúc, phương pháp luận tích hợp bảo mật vào quy trình CI/CD và cách cấu hình các công cụ mã nguồn mở.
- Kỹ sư phát triển (Dev), Vận hành (Ops) và An ninh (Sec): Cung cấp tài liệu thực hành chi tiết về cách viết kịch bản
Jenkinsfile, Dockerfile, cấu hình Webhook GitLab và kết nối các module quét lỗ hổng tự động.
- Các doanh nghiệp phần mềm vừa và nhỏ (SMEs): Bản thiết kế có tính ứng dụng cao giúp doanh nghiệp xây dựng quy trình phát triển an toàn với chi phí bản quyền tối thiểu.
Phần đáng tham khảo nhất trong công trình là Chương 3 (Phân tích và thiết kế hệ thống) cùng Phụ lục A (chứa mã nguồn các tập tin cấu hình thực tế: Jenkinsfile, Dockerfile, build.sh, deploy.sh, gitlab-ci), cung cấp hướng dẫn triển khai rõ ràng từng bước.
Câu hỏi thường gặp
1. Khóa luận sử dụng những công cụ nào để kiểm tra an toàn thông tin trong đường ống DevSecOps?
Nhóm tác giả tích hợp 4 công cụ bảo mật chuyên biệt: SonarQube (phân tích tĩnh mã nguồn - SAST), OWASP Dependency Check (kiểm tra lỗ hổng trong các thư viện phụ thuộc - SCA), Arachni (kiểm tra bảo mật động ứng dụng web qua URL - DAST), và Kubei (quét lỗ hổng trên container image và cụm Kubernetes).
2. Điểm khác biệt cốt lõi giữa mô hình DevOps và DevSecOps được tác giả trình bày là gì?
Điểm khác biệt không phải là DevSecOps bổ sung thêm một giai đoạn độc lập, mà là việc tích hợp các phương thức và công cụ bảo mật vào toàn bộ các giai đoạn của DevOps (từ lập kế hoạch, phát triển, kiểm thử, phân phối đến vận hành và giám sát), giúp phát hiện rủi ro sớm nhất có thể thay vì chỉ kiểm tra ở bước cuối cùng.
3. Bốn kịch bản thử nghiệm trong Chương 4 được thiết kế nhằm mục đích gì?
- Kịch bản 1: Kiểm tra khả năng vận hành thông suốt của toàn bộ đường ống DevSecOps trên dự án Dashboard Administration.
- Kịch bản 2: Đánh giá khả năng phát hiện các lỗ hổng mã nguồn cụ thể (
alert, debugger) của SonarQube.
- Kịch bản 3: Đánh giá khả năng nhận diện các lỗi lập trình cơ bản (lỗi logic so sánh, trùng lặp code, unreachable code, lỗi cú pháp).
- Kịch bản 4: Thử nghiệm triển khai trọn vẹn quy trình DevSecOps trên một dự án ứng dụng thương mại điện tử thực tế (Kmarket).
4. Phân hệ giám sát và ghi nhật ký của hệ thống được xây dựng bằng công nghệ nào?
Hệ thống sử dụng bộ công cụ ELK Stack (gồm Elasticsearch để lưu trữ và lập chỉ mục dữ liệu log, Logstash để xử lý dữ liệu nhật ký từ Jenkins và các công cụ quét, Kibana để trực quan hóa và hiển thị trạng thái hoạt động của hệ thống).
Kết luận
Khóa luận tốt nghiệp của tác giả Lê Thanh Hồng Nhựt và Châu Thị Nguyệt đã giải quyết thành công bài toán tích hợp an toàn thông tin vào quy trình phát triển phần mềm liên tục theo mô hình DevSecOps. Bằng việc kết hợp hiệu quả các giải pháp mã nguồn mở như Jenkins, GitLab, Docker, Kubernetes, SonarQube, OWASP Dependency Check, Arachni, Kubei và ELK Stack, công trình đã xây dựng được một hệ thống tự động hóa hoàn chỉnh có khả năng phát hiện lỗ hổng đa tầng. Kết quả thử nghiệm trên các dự án mẫu và ứng dụng thương mại Kmarket khẳng định tính khả thi và tiềm năng ứng dụng thực tế của mô hình cho các tổ chức, doanh nghiệp phát triển phần mềm vừa và nhỏ.