Đặt vấn đề Ngành phát trién phần mềm đã có hơn nửa thé kỉ hình thành và đang càng ngày phổ biến rộng rãi ở hầu hết các công ty liên quan đến công nghệ thông tin. tuy nhiên việc phát triển phần mềm và quản trị các dự án phần mềm chưa bao giờ hết thử thách. Rất nhiều những van đề cứ không ngừng lặp đi lặp lại, làm đau đầu đội ngũ phát triển và các nhà quản trị. Từ đó, nhu cầu về các phương pháp phát triển phần mềm luôn luôn cần có sự cải tiến với mục đích nâng cao chất lượng sản pham cũng như rút ngăn thời gian phát triển - đưa sản tới cho khách hàng [1].
Phương pháp Agile ra đời trong bối cảnh ngành phát triển phần mềm gặp nhiều thử thách với cách thức phát triển truyền thống theo mô hình thác nước (waterfall), hoặc dựa theo kế hoạch (plan-driven). Khái niệm Agile (viết tắt của Agile Software Development) có nghĩa là phương pháp phát triên phần mềm linh hoạt, được ứng dụng trong quy trình phát triển phan mềm với mục tiêu là đưa sản phẩm đến tay người dùng càng nhanh càng tốt, tập trung vào việc cảm nhận và đáp ứng các yêu cầu của người dùng dé đưa ra những thay đồi phù hợp [2]. Ngoài Agile, có một phương pháp phát triển phần mềm rat phổ biến va được nhiều doanh nghiệp áp dụng đó chính là DevOps. Không có bất kỳ một định nghĩa duy nhất nào cho DevOps.
Tuy nhiên có thé hiểu đơn giản, Devops là sự kết hợp của nhiêu triết lý văn hóa, biện pháp thực hành và các công cụ nhằm giúp cho khả năng phân phối của ứng dụng, dịch vụ của tổ chức phát triển với tốc độ cao hơn. Quá trình phát triển và cải tiến sản phẩm sẽ phát triển với nhịp độ nhanh hơn. Các tô chức có thé sử dung quy trình quản ly cho các cơ sở hạ tầng và phát triển phần mềm theo thiên hướng truyền thống [3]. DevOps đã cung cấp cho các tô chức một phương pháp dé đáp ứng nhu cầu kinh doanh nhanh chóng hơn.
Các công cụ DevOps đang phát triển nhanh chóng. Tuy nhiên nếu chỉ nói về DevOps không là chưa đủ. Những lo ngại về bảo mật đang đang là mối quan tâm của các tô chức. Thậm chí mối lo về bảo mật có thê là nguyên nhân làm dừng hoặc trì hoãn việc triển khai ứng dụng đối với nhiều tổ chức [4].Chính vì lí do đó, việc tích hợp các công cụ bảo mật trong DevOps là hết sức cần thiết trong bối cảnh hiện nay.
DevSecOps tích hợp bảo mật của tổ chức vào DevOps truyền thống với mục tiêu triển khai, tích hợp các biện pháp bảo mật tron quá trình phát triển và sản xuất phần mềm, bổ sung thêm một lớp phòng thủ khác, chống lại vi phạm đữ liệu và tan công mạng. Mô hình DevSecOps có thé đáp ứng được những nhu cầu trong quá trình phát triển phần mềm như năng giảm thời gian phát triển và phát hành phần mềm, đồng thời đảm bảo chất lượng, tính bảo mật cao cho hệ thống và ứng dụng [5].2 Mục tiêu nghiên cứu Thông qua khóa luận này, nhóm tác giả muốn thực hiện được các mục tiêu sau: e Nghiên cứu về mô hình “DevOps — DevSecOps”. Sau đó, tìm hiểu các công nghệ, công cụ dựa trên nền tảng Opensource tương ứng với từng thành phần trong mô hình (Ví dụ: các công cụ các công cụ hỗ trợ tích hợp liên tục, triển khai liên tục, kiểm thử được sử dụng dé kiểm tra tính bảo mật của ứng dụng, các công cụ Quản lý, giám sát trong quá trình phát triển phần mềm). e Thiết kế và triển khai hệ thống phát triển phần mềm theo mô hình DevOps.
e Phân tích và tích hop thêm các giải pháp an toàn thông tin dé tăng tính bảo mật cho mô hình. e Đánh giá hệ thông hiện tai dựa trên các tiêu chí ưu và nhược diém, khả năng ứng dụng mô hình đôi với các doanh nghiệp vừa và nhỏ.3 Đối tượng nghiên cứu Trong khóa luận này, nhóm tác gia sẽ nghiên cứu: e M6 hình DevOps, DevSecops. e Các công cụ phục vụ cho quá trình tích hợp liên tục (CD, triển khai liên tục (CD), công cụ giám sát (monitoring). e Cac công cụ kiểm thử được sử dụng dé kiểm tra tính bao mật của ứng dụng trong quá trình phát trién phan mềm.4 Phạm vỉ nghiên cứu Xây dựng và triển khai mô hình dựa trên các nền tảng mã nguồn mở, có thể triển khai được trên các nền tảng ảo hóa (VM, container).
Mô hình phải đảm bảo có thể áp dụng được trong quá trình phát triển phần mềm của các doanh nghiệp.5 Những đóng góp của khóa luận 1.1 Tính mới của đề tài Chu trình phát triển phần mềm (Software Development Life Cycle) bao gồm hai giai đoạn chính: phát triển và vận hành. Hai giai đoạn này tương đối tách rời nhau, đặc biệt là ở các công ty có quy mô trung bình trở lên. Tuy nhiên, nhằm tối ưu hóa chu trình phát triển phần mềm, giúp sản phẩm công nghệ được release nhanh và thường xuyên hơn, khái niệm DevOps ra đời [4]. Trong những năm gần đây, Phương pháp DevOps đang được áp dụng rộng rãi trong cộng đồng phát triển phần mềm.
Tuy nhiên, có một vấn đề trong phương pháp này đó là, khi xét đến khía cạnh bảo mật, phương pháp DevOps thiếu sự tích hợp bảo mật trong bat kì giai đoạn nào của nó [5]. Vì dé giải quyết van đề về khía cạnh bao mật, DevSecOps đã ra đời. Khi áp dụng phương pháp này, các công cụ bảo mật sẽ được tích hợp quy trình phát triển sản phẩm, loại bỏ các lỗ hồng, đảm bảo cho các quy trình trong hệ thống có thê hoạt động ồn định, từ đó bắt kip xu hướng phát trién phần mềm trong tương lai [5].2 Khả năng ứng dụng thực tế của đề tài Trong môi trường doanh nghiệp,những nguyên nhân.rủi ro dẫn tới các sự cỗ ảnh hưởng hoặc gây thiệt hại về khía cạnh an ninh thông tin hầu hết đều bắt nguồn từ những lỗ hồng của các phần mém.Dé giải quyết những van dé trên thì chi phí phải bỏ ra là rất lớn chưa xét đến yếu tố nhân lực,thời gian.Không những thế,một thiệt hại vô cùng nghiêm trọng đó là niềm tin của người dùng sản pham.Chinh vì thế,việc đảm bảo an ninh, bảo mật thông tin là vô cùng thiết yêu,có thê được xem là vân đê côt lõi trong quá trình phát triên phân mêm. Với DevSecOps, ba thành phần: Quá trình phát triển (Development), quá trình vận hanh (operation), quá trình bảo mật (security) sẽ luôn có sự liên kết với nhau, giúp cho doanh nghiệp có thé phát hiện được những lỗ hồng phan mềm trong thời gian ngắn nhất.
Từ đó, những sản phẩm khi đưa đến cho người dùng sẽ luôn được đảm về chât lượng cũng như tính bảo mật của nó. Từ đây, nhóm tác giả quyết định nghiên cứu và xây dựng hệ thống phát triển phần mềm tự động và an toàn theo mô hình DevSecOps. Hệ thống này có thê được mở rộng và áp dụng cho các doanh nghiệp vừa và nhỏ trong thực tế.6 Cấu trúc của khóa luận Ngoài phần mục lục, danh mục các từ viết tắt, danh mục hình ảnh và tài liệu tham khảo, khóa luận được bố cục thành 5 chương sau: Chương 1-Mớ đầu e Tông quan về đê tài thực hiện, trình bay sơ lược vê mục đích, đôi tượng, phạm vị nghiên cứu và những đóng góp của đề tài. Chương 2-Co sé lý thuyết e Trình bày và giải thích các cơ sở lý thuyết, định nghĩa và mô tả nguyên tắc hoạt động của mô hình DevOps, DevSecOps và các công nghệ được nhóm triển khai trong đề tài như: Tích hợp và triển khai liên tục, công nghệ container hóa, hệ thống quản lý phiên bản mã nguồn và bảo mật quy trình phát triển phần mềm, cùng với các công cụ như: Jenkins, Gitlab, Docker, Kubernetes, Grafana, Prometheus, Terraform, Chương 3-Phân tích và thiết kế hệ thống e Thiết kế và mô tả sơ đồ hệ thống, trình bày về luồng xử lý (workflow) của hệ thống.
Giải thích các thành phần và cách hoạt động của hệ thống mà nhóm tiến hành nghiên cứu: Thực hiện tích hợp và triển khai liên tục quá trình phát triển ứng dụng bằng việc kết hợp các công cu Jenkins và Gitlab, trién khai ứng dụng trên nền tảng Kubernetes, kiểm tra tính an toàn và bảo mật của mã nguồn, container Kubernetes và ứng dụng web đã được triển khai với các công cụ được tích hợp vào hệ thống, quản lý quá trình hoạt động của toàn bộ hệ thống. Chương 4-Trién khai và thực hiện đánh giá hệ thống e M6 tả các thành phan, các công nghệ được áp dung trong hệ thống, các kịch bản chạy thực nghiệm bám sát các kịch bản trong thực tế. Từ đó, đánh giá ưu điểm và hạn chế của hệ thống mà nhóm đang triển khai. Chương 5-Kết luận và hướng phát triển e Tổng kết các nội dung đã nghiên cứu trong quá trình thực hiện dé tài.
Từ đó, đề xuất những hướng phát triển của đề tài trong tương lai, giúp cho đề tài ngày càng hoàn thiện hơn. Chương 2 CƠ SỞ LÝ THUYET 2.1 Các mô hình phát triển phần mềm truyền thống Ngày nay, thị trường phát triển phần mềm phát triển vô cùng nhanh chóng và dang đặt ra rất nhiều thách thức cho việc xây dựng và triển khai một quy trình phát triển phần mềm có thé đáp ứng được yêu cầu của những khía cạnh như tốc độ phát trién phần mềm, đảm bảo chất lượng sản phẩm, độ bảo mật của hệ thống để có thé mang lại hiệu quả cao nhất.1 Waterfall Mô hình thác nước (Waterfall model) là mô hình của quy trình phát triển phần mềm được giới thiệu lần đầu tiên bởi tiến sĩ Winston W. Royce trong một bài báo công bố năm 1970. Trong mô hình này, quá trình phát triển phần mềm được chia thành các giai đoạn khác nhau và thực hiện tuần tự, đầu ra của giai đoạn này là đầu vào của giai đoạn tiếp theo và không có sự chồng chéo.
Việc tiếp cận tuần tự từ trên xuống dưới như vậy giống như dòng chảy của một thác nước nên mô hình này được đặt tên là mô hình thác nước. Trên thực tế, đây là mô hình đầu tiên được sử dụng rộng rãi trong ngành công nghiệp phần mềm. Tuy nhiên, trong những năm gần đây, mô hình này đang bộc lộ nhiều bat cập và dan bị thay thế bởi các phương pháp phát triển phần mềm linh hoạt (Agile Software Development). Các giai đoạn của mô hình Waterfall được thé hiện trong hình 2.
1 Các giai đoạn của mô hình Waterfall 2.2 Agile Lich sử Trong giai đoạn trước những năm 90 của thế kỷ 20, trên thé giới xảy ra cuộc khủng hoảng về phương pháp phát trién phần mềm.