Xây Dựng Hệ Thống DevOps An Toàn Trên Nền Tảng Mã Nguồn Mở

Khóa luận trình bày xây dựng hệ thống DevOps trên nền tảng mã nguồn mở, tích hợp giải pháp bảo mật nhằm nâng cao an toàn thông tin.

Người đăng

Ẩn danh

Thể loại

khóa luận tốt nghiệp

2022

173
3
0

Phí lưu trữ

45 Point

Mục lục chi tiết

LỜI CẢM ƠN

1. TỔNG QUAN

1.1. Tính mới và khả năng ứng dụng thực tế của đề tài

1.2. Mục tiêu, đối tượng và phạm vi thực hiện

1.3. Nội dung và phương pháp thực hiện

2. CƠ SỞ LÝ THUYẾT

2.1. Các mô hình phát triển phần mềm truyền thống

2.2. Mô hình DevOps

2.3. Hệ thống quản lý phiên bản - mã nguồn

2.3.1. Hệ thống quản lý phiên bản tập trung (Centralized version control - CVC)

2.3.2. Hệ thống quản lý phiên bản phân tán (Distributed version control - DVC)

2.3.3. Lợi ích của hệ thống quản lý mã nguồn

2.4. Tích hợp và triển khai liên tục

2.5. Công nghệ ảo hóa Container và quản lý cơ sở hạ tầng container

2.5.1. Công nghệ ảo hóa

2.5.2. Quản lý và điều phối

2.6. Bảo mật quá trình phát triển và triển khai phần mềm

2.6.1. Tổng quan DevSecOps

2.6.2. Các nguyên tắc đặc trưng trong môi trường DevSecOps

2.6.3. Triển khai DevSecOps

2.6.4. Các giải pháp bảo mật trong quá trình phát triển phần mềm

2.6.4.1. Phân tích chất lượng mã nguồn
2.6.4.2. Kiểm thử phần mềm

3. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

3.1. Mô hình tổng quát

3.2. Triển khai cơ sở hạ tầng

3.3. Quản lý phiên bản mã nguồn - Kho lưu trữ mã nguồn (Gitlab)

3.4. Tích hợp và triển khai liên tục

3.5. Quản lý Artifact - Nexus Repository Manager

3.6. Môi trường và công cụ triển khai - Kubernetes - Helm

3.7. Các công cụ bảo mật

4. TRIỂN KHAI HỆ THỐNG VÀ ĐÁNH GIÁ KẾT QUẢ

4.1. Triển khai hệ thống

4.2. Thông tin phần cứng. Giới thiệu dự án thử nghiệm

4.3. Tự động hóa triển khai cơ sở hạ tầng

4.3.1. Chuẩn bị Hashicorp Vault Server và Nginx Modsecurity Server

4.3.2. Triển khai với Terraform và Ansible

4.3.3. Setup các thành phần cần thiết ở các Server cho chu trình CICD

4.3.4. Tạo Pipeline CICD cho mô hình

4.4. Kịch bản thử nghiệm

4.4.1. Kịch bản 1 - Đánh giá vai trò của Sonarqube về các lỗi bảo mật liên quan đến mã nguồn

4.4.2. Kịch bản 2 - Đánh giá vai trò của CloudGuard ShiftLeft về các lỗi bảo mật liên quan đến Image

4.4.3. Kịch bản 3 - Sử dụng Nginx Modsecurity như một WAF (Web Application Firewall) để ngăn chặn các tấn công liên quan đến Web Server

4.5. Đánh giá hệ thống đã triển khai

5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

5.1. Kết luận

5.2. Hướng phát triển

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan Về Xây Dựng Hệ Thống DevOps An Toàn

Hệ thống DevOps đang trở thành xu hướng quan trọng trong phát triển phần mềm. Việc xây dựng một hệ thống DevOps an toàn trên nền tảng mã nguồn mở không chỉ giúp tăng cường hiệu suất mà còn đảm bảo an toàn thông tin. Các tổ chức cần hiểu rõ về DevOps và các giải pháp bảo mật để tối ưu hóa quy trình phát triển phần mềm.

1.1. Khái Niệm Về DevOps Và Mã Nguồn Mở

DevOps là sự kết hợp giữa phát triển và vận hành, giúp tăng tốc độ phát triển phần mềm. Mã nguồn mở cung cấp các công cụ và nền tảng linh hoạt cho việc triển khai DevOps.

1.2. Lợi Ích Của Hệ Thống DevOps An Toàn

Hệ thống DevOps an toàn giúp giảm thiểu rủi ro bảo mật, tăng cường khả năng phản ứng với các mối đe dọa và cải thiện chất lượng sản phẩm.

II. Thách Thức Trong Việc Xây Dựng Hệ Thống DevOps An Toàn

Mặc dù DevOps mang lại nhiều lợi ích, nhưng việc tích hợp bảo mật vào quy trình phát triển vẫn gặp nhiều thách thức. Các tổ chức thường phải đối mặt với các vấn đề như thiếu hụt công cụ bảo mật, sự phức tạp trong quy trình và sự thiếu hiểu biết về bảo mật trong đội ngũ phát triển.

2.1. Vấn Đề Bảo Mật Trong DevOps

Bảo mật thường bị xem nhẹ trong quy trình DevOps, dẫn đến các lỗ hổng bảo mật nghiêm trọng. Việc không tích hợp bảo mật từ đầu có thể gây ra thiệt hại lớn cho tổ chức.

2.2. Thiếu Công Cụ Bảo Mật Hiệu Quả

Nhiều tổ chức không có đủ công cụ bảo mật để tích hợp vào quy trình DevOps, điều này làm giảm khả năng phát hiện và phản ứng với các mối đe dọa.

III. Phương Pháp Tích Hợp Bảo Mật Vào DevOps

Để xây dựng một hệ thống DevOps an toàn, các tổ chức cần áp dụng các phương pháp tích hợp bảo mật hiệu quả. DevSecOps là một trong những phương pháp nổi bật, giúp tích hợp bảo mật vào từng giai đoạn của quy trình phát triển.

3.1. Khái Niệm Về DevSecOps

DevSecOps là mô hình kết hợp giữa DevOps và bảo mật, giúp đảm bảo rằng bảo mật được xem xét trong mọi giai đoạn phát triển phần mềm.

3.2. Các Công Cụ Hỗ Trợ DevSecOps

Sử dụng các công cụ như SonarQube, Jenkins và Terraform giúp tự động hóa quy trình kiểm tra bảo mật và triển khai, từ đó nâng cao độ an toàn cho hệ thống.

IV. Ứng Dụng Thực Tiễn Của Hệ Thống DevOps An Toàn

Việc áp dụng hệ thống DevOps an toàn đã mang lại nhiều kết quả tích cực cho các tổ chức. Các doanh nghiệp đã cải thiện được quy trình phát triển và giảm thiểu rủi ro bảo mật.

4.1. Kết Quả Nghiên Cứu Từ Các Doanh Nghiệp

Nhiều doanh nghiệp đã báo cáo rằng việc áp dụng DevSecOps giúp họ phát hiện và khắc phục các lỗ hổng bảo mật nhanh chóng hơn.

4.2. Các Trường Hợp Thành Công

Một số tổ chức đã thành công trong việc triển khai DevSecOps, từ đó nâng cao chất lượng sản phẩm và sự hài lòng của khách hàng.

V. Kết Luận Và Hướng Phát Triển Tương Lai Của DevOps

Hệ thống DevOps an toàn sẽ tiếp tục phát triển và trở thành một phần không thể thiếu trong quy trình phát triển phần mềm. Các tổ chức cần đầu tư vào công nghệ và đào tạo để đảm bảo an toàn thông tin trong môi trường DevOps.

5.1. Tương Lai Của DevOps

DevOps sẽ tiếp tục phát triển với sự tích hợp của các công nghệ mới, giúp nâng cao hiệu suất và an toàn cho quy trình phát triển phần mềm.

5.2. Đầu Tư Vào Đào Tạo

Đào tạo đội ngũ phát triển về bảo mật và DevSecOps là cần thiết để đảm bảo rằng các tổ chức có thể ứng phó với các mối đe dọa trong tương lai.

10/07/2025
Khóa luận tốt nghiệp an toàn thông tin xây dựng hệ thống devops trên nền tảng mã nguồn mở và tích hợp các giải pháp bảo mật để tăng độ an toàn của hệ thống devops

Trích đoạn nội dung tài liệu

Đặ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.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu có tiêu đề Xây Dựng Hệ Thống DevOps An Toàn Trên Nền Tảng Mã Nguồn Mở cung cấp cái nhìn sâu sắc về cách thức xây dựng và triển khai hệ thống DevOps an toàn, đặc biệt trong môi trường mã nguồn mở. Tài liệu nhấn mạnh tầm quan trọng của việc tích hợp các biện pháp bảo mật vào quy trình phát triển phần mềm, giúp giảm thiểu rủi ro và tăng cường độ tin cậy của sản phẩm. Độc giả sẽ tìm thấy những lợi ích rõ ràng từ việc áp dụng các phương pháp DevOps an toàn, bao gồm việc cải thiện hiệu suất làm việc, tăng cường khả năng phản ứng với các mối đe dọa an ninh, và tối ưu hóa quy trình phát triển.

Để mở rộng thêm kiến thức về chủ đề này, bạn có thể tham khảo tài liệu Khóa luận tốt nghiệp an toàn thông tin 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. Tài liệu này sẽ cung cấp thêm thông tin về mô hình DevSecOps, giúp bạn hiểu rõ hơn về cách thức bảo mật trong quy trình phát triển phần mềm.