Chương 1 TỔNG QUAN ĐỀ TÀI 11 Lý do chọn đề tài Với sự thay đổi chóng mặt của ngành công nghệ kèm theo sự cạnh tranh của các công ty phát triển phần mềm cho khách hàng từ đó nhu cầu tiết kiệm thời gian, nhân lực và chi phí được đưa lên hàng đầu. Nhưng với những lập trình viên (Developer) không có kiến thức chuyên sâu về quản trị hệ thống và phát triển sản phẩm sẽ khiến cho sản phẩm trở nên kém chất lượng, không được kiểm định chặt chẽ khi triển khai ra thị trường và thời gian cập nhật sản phẩm mới sẽ không được ổn định. Vì vậy, để giải quyết cho nhu cầu này DevOps (Development và Operations) được ra đời với tiêu chí loại bỏ rào cản giữa đội ngũ phát triển phần mềm và đội ngũ vận hành phần mềm. DevOps là một người có kiến thức về lập trình, CI/CD, triển khai vận hành quản trị hệ thống máy chủ, hạ tang mạng.
Nhưng với thời đại tội phạm số ngày càng phát triển thì DevOps vẫn đặt tiêu chí tiết kiệm thời gian, chỉ phí lên hàng đầu. Nên tính bảo mật và quyền riêng tư chưa được chú trọng. Bên cạnh đó việc tích hợp bảo mật có thể tốn rất nhiều thời gian gây ảnh hưởng, trì trệ trong việc phát hành sản phẩm. Do đó để khắc phục, thuật ngữ DevSecOps được ra đời nhằm bổ sung tính an toàn bảo mật của sản phẩm nhưng vẫn giữ được giá trị trước đó của DevOps.
Dé góp phần củng cố ý tưởng này, bài nghiên cứu nay sẽ thực hiện triển khai mô hình DevSecOps cho ứng dụng web với mục tiêu sử dụng các phần mềm mã nguồn mở vào quy trình Development, Security, Operation và tích hợp thành một quy trình tự động hóa có kèm khả năng phát hiện lỗ hổng va đưa ra dé xuất sửa lỗi của tác giả Guru Bhandari [3]. TỔNG QUAN ĐỀ TÀI 1.2 Mục tiêu nghiên cứu Nghiên cứu, thiết kế, xây dựng hệ thống cho các ứng dụng web giúp cải thiện độ bảo mật, tính liên tục của hệ thống đồng thời tiết kiệm được thời gian và tài nguyên. Goi ý các công cụ mã nguồn mở có thể tích hợp sử dụng với nhau xây dựng thành hệ thống.3 Pham vi nghiên cứu Các công cụ mã nguồn mở phát hiện các lỗ hổng bảo mật, xây dựng và quản trị hệ thống Tập trung nghiên cứu cách xây dung mô hình hệ thống hoàn chỉnh, dam bảo về yếu tố bảo mật và an toàn thông tin.4 Đối tượng nghiên cứu Những mô hình, thiết kế có liên quan về đề tài. Các phần mềm mã nguồn mở phục vụ cho mục đích Development, Security và Operation.
Những khó khăn khi áp dung đánh gia bao mật vào quy trình tự động hóa.5 Phương pháp thực hiện Tìm hiểu kiến trúc, nguyên tắc của DevSecOps và những khó khăn khi áp dụng. Tìm hiều về CVEfixes, mô hình, phần mềm, công cụ quét mã nguồn mở và cách sử dụng hỗ trợ xây dựng mô hình. Tìm hiểu các công trình nghiên cứu đã được thực hiện trong và ngoài nước. Đưa ra phương pháp xây dựng và triển khai hệ thống.
TỔNG QUAN ĐỀ TÀI Thực nghiệm và đánh giá kết quả.6 YÝ nghĩa khoa học và thực tiễn của đề tài 1.1 Ý nghĩa khoa hoc Đề xuất hệ thống DevSecOps hoàn chỉnh các yếu tố bảo mật trong vòng đời phát triển trong và ngoài mã nguồn. Với việc sử dụng các công cụ quét cùng với bộ lưu trữ bản vá để đảm bảo tính an toàn của mã nguồn, ngoài ra tưởng lửa cũng được áp dụng để tăng tính an toàn của hệ thống. Bên cạnh đó, nhằm đảm bảo tính hợp thời của CVEfixes, chúng tôi còn chỉnh sửa, thiết kế lại cơ sở dữ liệu CVEfixes của nhóm tác giả Guru Bhandari, Amara Naseer và Leon Moonen [4], do bộ lưu trữ này chỉ lưu những CVE từ năm 2017 trở về trước. Đồng thời gợi ý một hướng tiếp cận có thể tích hợp CVEfixes vào hệ thống áp dụng quy trình DevSecOps.
Chúng tôi hi vọng đề tài nghiên cứu này có thể góp phần xây dựng tư duy thiết kế hệ thống, cách kết hợp bảo mật vào qui trình phát triển phần mềm trong thời đại công nghệ ngày càng phát triển liên tục.2 Ý nghĩa thực tiễn Gợi ý bộ công cụ mã nguồn mở có thể sử dụng trong quy trình phát triển phần mềm. Cập nhật mới cơ sở dữ liệu các lỗ hổng và bán vá của chúng, dé xuất hướng tiếp cận với cơ sở dit liệu này. Giới thiệu tư duy thiết kế và bảo trì hệ thống. Đề xuất mô hình có thể làm khuôn mẫu và mở rộng quy mô mà không bị hạn ché.7 Cau trúc Khóa luận tot nghiệp Khóa luận được tổ chức trong 5 chương như sau: * Chương|IÌ TONG QUAN ĐỀ TÀI.
Trình bày khái quát định hướng nghiên cứu của khóa luận mà chúng tôi muốn hướng tới. TỔNG QUAN ĐỀ TÀI * Chương|DÌ TONG QUAN TINH HÌNH NGHIÊN CỨU. Sơ lược một số công trình liên quan có cùng hướng nghiên cứu mà dé tài có tham khảo. Giới thiệu các công trình khoa học liên quan chúng tôi đã công bồ trong thời gian thực hiện khoá luận.
* Chương | CƠ SỞ LÝ THUYET. Trình bày các định nghĩa, khái niệm cũng như những kiến thức nền tảng để có thể thực hiện được nghiên cứu. « Chương|4| PHƯƠNG PHÁP THUC HIỆN. Là phần trọng tâm của khoá luận, trình bày những nội dung chính về phương pháp thực hiện và mô hình được sử dụng.
* Chương|5| THỰC NGHIỆM VÀ ĐÁNH GIÁ KET QUA. Đề cập đến quá trình thực nghiệm cùng với kết quả thu được. « Chuong|6 TÀI LIEU THAM KHẢO. Chương 2 CƠ SỞ LÝ THUYET 2.1 Chu kỳ phát triển phan mềm Chu kỳ phát triển phần mềm là một quá trình cho một dự án phần mềm.
Bao gồm các kể hoạch chỉ tiết, mô tả hướng đi từ giai đoạn phát triển đến duy trì, thay đổi và nâng cấp. Quy trình là một trong những yếu tố quan trọng quyết định đến chất lượng sản phẩm và sự thành công của nhà phát triển đó. Một chu trình gồm sáu giai đoạn: 2.1 Thu thập và phân tích các yêu cầu Đội ngũ phát triển sẽ lập kế hoạch cho các yêu cầu và nhận ra các rủi ro liên quan. Giai đoạn này giúp đưa ra bức tranh rõ ràng hơn về phạm vi và các van dé, hỗ trợ đội ngũ có cái nhìn tổng quan hơn.2 Nghiên cứu khả thi Khi giai đoạn phân tích yêu cầu hoàn thành, giai đoạn này sẽ xác định và ghi lại nhu cầu phần mềm.
Được hỗ trợ bởi tài liệu đặc tả hay còn được biết đến là SRS bao gồm mọi thứ cần được thiết kế và phát triển trong vòng đời dự án.3 Thiết kế Tài liệu thiết kế về hệ thống và phần mềm trong giai đoạn này sẽ được chuẩn bị dựa theo tài liệu đặc tả của giai đoạn trước đó. CƠ SỞ LY THUYET Đóng vai trò là đầu vào cho giai đoạn tiếp theo của mô hình chu kì phát triển phần mềm.4 Giai đoạn lập trình Bắt đầu phát triển thực tế sản phẩm được xây dựng, hiện thực hóa các chức năng của phần mềm đã được thiết kế sẵn ở giai đoạn trước đó. Các chức năng sau khi được phát triển sẽ được chuyển sang giai đoạn tiếp theo để thực hiện các kịch bản kiểm thử để đánh giá về hiệu năng và chất lượng.5 Kiểm thử Các kiểm thử viên sẽ tiến hành kiểm tra các chức nang theo các kịch bản kiểm thử được xây dựng. Nếu có lỗi phát sinh kiểm thử viên sẽ thực hiện báo lỗi về cho lập trinh viên để tiễn hành sửa lỗi.
Quá trình này sẽ thực hiện liên tục nhiều lần cho đến khi các chức năng thực hiện đúng mục đích theo tài liệu đặc tả.6 Triển khai và bao trì Sau khi hoàn thiện các chức năng và thông qua các kịch bản kiểm thử trong môi trường thử nghiệm, sản phẩm sẽ được chuyển sang môi trường vận hành và được bảo trì liên tục. Giai đoạn này sẽ xảy ra ba hoạt động chủ yếu: © Sửa lỗi: Lỗi được báo cáo sau khi phát sinh và được sửa nhanh nhất có thể. ¢ Nâng cấp: Sản phẩm sẽ được nâng cấp theo từng phiên bản mà nha phát triển dé ra. * Cải tiến: Thêm một số chức năng mới vào sản phẩm hiện có.
Trọng tâm chính của giai đoạn này là đảm bảo nhu cầu được đáp ứng liên tục và hệ thống hoạt động đúng theo những tiêu chí được đề ra. CƠ SỞ LY THUYET 2.2 Tổng quan ve DevOps/DevSecOps, CI/CD, CVE va CVEfixes, Thu thập dư liệu, Kubernetes, tình hình nghiên cứu và các công trinh liên quan 2.1 DevOps DevOps là văn hóa làm việc dựa theo sự hợp tác, bố sung, giúp hai giai đoạn phát triển (Development) và vận hành (Operations) diễn ra trơn tru hơn. * Giai đoạn phát triển: bao gồm phần việc của thiết kề viên, lập trình viên và kiểm thử viên. « Giai đoạn vận hành: gồm sự tham gia của kỹ sư hệ thống, quản trị viên hệ thống, vận hành viên và kỹ sư mạng.
Đối với những sản phẩm vừa và nhỏ lập trình viên sẽ là người kiêm vị trí vận hành viên vì là người hiểu rõ sản phẩm của mình và cách triển khai nó. Nhưng khi sản phẩm bắt đầu có quy mô lớn hơn và sự thịnh hành của vi dịch vụ dẫn đến quy mô hệ thống tăng lên đáng kể từ vài chục máy chủ tăng đến hàng trăm hàng nghìn. Khi đó nhu cầu chuyên môn trở nên gắt gao, tách giai đoạn phát triển và vận hành thành hai giai đoạn riêng biệt. Từ đó dẫn đến bài toán lập trình viên không còn toàn quyền triển khai và đội ngũ vận hành không thể hiểu rõ cách sản phẩm vận hành như lập trình viên khiến cho việc đồng bộ trở nên khó khăn dẫn đến tốn kém tài nguyên và thời gian.
Vì vậy DevOps ra đời để giải quyết khó khăn và mang đến những lợi ích: © Tăng cường sự cộng tác chặt chẽ giữa nhóm phát triển và nhóm vận hành. ¢ Nâng cao tần suất triển khai, rút ngắn thời gian phát triển/cải tiến sản phẩm. ¢ Tận dụng các công cụ tự động hóa, giúp hạn chế rủi ro, giảm thiểu tỉ lệ that bại. ¢ Thời gian phục hồi sản phẩm nhanh hơn.
CƠ SỞ LY THUYET 2. DevSecOps Mặc dù DevOps đã cung cấp tất cả nhưng yêu cầu cần thiết cho các công ty và tổ chức. Tuy nhiên, với công nghệ ngày càng phát triển thì những lo ngại về bảo mật càng trở thành mối quan ngại chính của các tổ chức. Những mỗi quan tâm này có thể là nguyên nhân dẫn đến dừng hoặc trì hoãn việc triển khai sản phẩm.