1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

173 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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
Tác giả Nguyễn Huỳnh Trọng Nghĩa, Nguyễn Hữu Thắng
Người hướng dẫn ThS. Nguyễn Duy
Trường học Trường Đại học Công nghệ Thông tin
Chuyên ngành An Toàn Thông Tin
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2022
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 173
Dung lượng 55,8 MB

Nội dung

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 phần mềm với mục tiêu là đưa sản p

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHÓ HÒ CHÍ MINH @

TRUONG ĐẠI HỌC CÔNG NGHỆ THONG TIN KHOA MẠNG MAY TÍNH VÀ TRUYEN THONG

Sco => LL cose cos

Z

NGUYEN HUỲNH TRỌNG NGHĨA

NGUYÊN HỮU THẮNG

KHÓA LUẬN TÓT NGHIỆP

XÂY DỰ HỆ THONG DEVOPS TREN NEN TANG MÃ NGUÒN MỞ

VÀ TÍCH HỢP CÁC GIẢI PHÁP BAO MAT DE TANG ĐỘ AN

TOAN CUA HE THONG DEVOPS

BUILDING UP DEVOPS SYSTEM BASE-ON OPEN SOURCES

AND INTEGRATED SECURITY SOLUTION INTO DEVOPS

Trang 2

ĐẠI HỌC QUỐC GIA THÀNH PHÓ HÒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA MẠNG MAY TÍNH VÀ TRUYEN THONG

NGUYEN HUYNH TRONG NGHIA — 18521146 NGUYEN HUU THANG — 18521395

KHOA LUAN TOT NGHIEP

XAY DUNG HE THONG DEVOPS TREN NEN

TANG MA NGUON MO VA TICH HOP CAC GIAIPHAP BAO MAT DE TANG ĐỘ AN TOAN CUA

HE THONG DEVOPS

BUILDING UP DEVOPS SYSTEM BASE-ON OPEN SOURCES AND INTEGRATED SECURITY

SOLUTION INTO DEVOPS SYSTEM.

KY SU NGANH AN TOAN THONG TIN

GIANG VIEN HUONG DAN

THS NGUYEN DUY

TP HO CHi MINH, NAM 2022

Trang 3

THÔNG TIN HỘI ĐÒNG CHÁM KHÓA LUẬN TÓT NGHIỆP

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số

TIBẦY c-cccccc của Hiệu trưởng Trường Đại học Công nghệ Thông tin.

Trang 4

LỜI CẢM ƠN

Dé hoàn thành khóa luận tốt nghiệp này, bên cạnh sự cô gắng nỗ

lực không ngừng của bản thân, nhóm xin được bày tỏ lòng biết ơn

chân thành đến các thầy cô, các anh chị, bạn bè vì đã tận tình hỗ trợ

nhóm trong suốt thời gian thực hiện khóa luận tốt nghiệp.

Nhóm tác giả xin gửi lời cảm ơn chân thành và lòng biết ơn sâu sắc

đến các thầy, cô trường Dai học Công nghệ Thông tin và các thay,

cô Khoa Mạng máy tính và Truyền thông của trường đã tận tình hướng dẫn, truyền đạt kiến thức trong quá trình học tập và nghiên cứu Những kiến thức được trau dôi, học hỏi trong quá trình học tập tại trường không chỉ là nền tảng cho quá trình hoàn thành khóa luận

tốt nghiệp mà còn là nền tang vững chắc để có thé phát triển trên

con đường sự nghiệp sau này.

Quan trọng nhất, nhóm tác giả xin gửi lời cảm ơn đến Ths.Nguyễn Duy đã hỗ trợ hết mình cũng như tạo mọi điều kiện để bọn em có thé thực hiện và hoàn thành tốt khóa luận.

Cuối cùng, chúng tôi xin cảm ơn đến gia đình, bạn bè đã tao tiền

đề, khích lệ, động viên để nhóm có thể hoàn thành đề tài này.

Mặc dù đã cố gắng hết sức trong quá trình làm khoá luận tốt

nghiệp, nhưng chắc chắn rằng nhóm sẽ không thể tránh khỏi những sai sót do bản thân vẫn còn nhiều hạn chế về kiến thức

chuyên môn cũng như những kinh nghiệm thực tiễn Chúng em

kính mong nhận được sự thông cảm và những lời góp ý quý báu

từ quý thầy cô đề có thể hoàn thiện bản thân mình hơn nữa.

Chúng tôi xin chân thành cảm ơn!

Trang 5

ĐẠI HỌC QUOC GIA TP HO CHÍMINH CONG HÒA XÃ HOICHU NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC Độc Lập - Tự Do - Hạnh Phúc

CÔNG NGHỆ THÔNG TIN

DE CƯƠNG CHI TIẾT

TÊN ĐÈ TÀI:

- _ Tên tiếng Việt: "Xây dựng hệ thống DevOps trên nền tảng mã nguồn mở và tích

hop các giải pháp bảo mật dé tăng độ an toàn của hệ thống DevOps."

- _ Tên tiếng Anh: Building up DevOps system base-on Opensources and Integrated

security solution into DevOps system.

Cán bộ hướng dẫn: ThS Nguyễn Duy

Thời gian thực hiện: Từ ngày 1/03/2022 đến ngày 12/06/2022

Sinh viên thực hiện:

Nguyễn Huỳnh Trọng Nghĩa - MSSV: 18521146 — Số điện thoại: 0335615576

Nguyễn Hữu Thắng — MSSV: 18521395 — Số điện thoại: 0898502967

Nội dung đề tài:

1 Tổng quan về đề tài

Ngành phát triển phần mềm đã có hơn nửa thé ki hình thành và đang càng ngày phổ biến

rộng rãi ở hau 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 va 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

vân đề 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ị.

Trang 6

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 phẩm 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 phần 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 và đượ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ử dụng quy trình quản lý 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 để đá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 dữ 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

Trang 7

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 Tính mới và khả năng ứng dụng thực tế của đề tài

2.1 Tinh mớ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 bất kì giai đoạn nào của nó [5] Vì dé giải quyết vấn đề

về khía cạnh bảo mật, DevSecOps đã ra đời Khi áp dụng phương pháp này, các công cụ bao 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, dam bảo

cho các quy trình trong hệ thống có thê hoạt động ổn định, từ đó bắt kịp xu hướng phát

triển phần mềm trong tương lai [5].

nghiêm trọng đó là niềm tin của người dùng sản phẩm.Chính 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à van đề cốt lỗi trong quá trình phát triển phần mềm.

Trang 8

Với DevSecOps, ba thành phan: Quá trình phát triển (Development), quá trình

vận hanh(operation), quá trình bao 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ỗ hong phần 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à sử dụng cho các doanh nghiệp phát triển phần mềm vừa và nhỏ trong thực tế.

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

3.1 Mục tiêu:

Nghiên cứu về mô hình DevOps - DevSecOps” Sau đó, tìm hiểu các công

nghệ, công cụ 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 để 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).

Thiết kế và triển khai hệ thống phát triển phần mềm theo mô hình

DevSecOps.

Đánh giá hệ thống hiện tại dựa trên các tiêu chí ưu và nhược điểm, khả năng

ứng dụng mô hình đối với các doanh nghiệp vừa và nhỏ.

Đối tượng nghiên cứu:

Mô hình DevOps, DevSecOps

Các công cụ phục vụ cho quá trình tích hợp liên tục (CI), triển khai liên tục

(CD), công cụ giám sát(monitoring).

Các công cụ hỗ trợ kiểm thử được sử dụng để kiểm tra tính bảo mật của

ứng dụng trong quá trình phát triển phần mềm.

Phạm vi thực hiện:

Trang 9

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.

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

4.1 _ Nghiên cứu về mô hình DevOps và DevSecOps.

¢ Mục tiêu: Nắm vững kiến thức, cách hoạt động của mô hình

DevOps-DevSecOps cũng như các thành phan cấu tạo nên 2 mô hình trên.

e Phuong pháp: Tham khảo các bài báo, bài nghiên cứu và cáctài liệu liên

quan từ nhiều nguồn khác nhau.

4.2 Tim hiểu cách xây dựng mô hình DevOps, DevSecOps

© Mục tiêu: Xác định và lựa chọn được các cách thức, công cụ để xây dựng

mô hình DevSecOps hoàn chỉnh

e Phuong pháp: Nghiên cứu, tìm hiéu về các công cụ hỗ trợ tích hợp liên tục

và triển khai liên tục, các công cụ kiểm tra tính bảo mật trong ứng dụng như công cụ quét lỗ hồng, công cụ phân tích lỗ hong, công cụ kiểm tra cầu hình, đưa ra ưu nhược điểm của các công cụ, sau đó chọn ra các công cụ có

thể đưa vào mô hình DevSecOps.

4.3 _ Xây dựng và triển khai mô hình

© Muc tiêu: 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 kết hợp các công cụ đã chọn.

e Phuong pháp: Doc kĩ tài liệu của từng công cụ đã chon, tìm hiểu những mô

hình đã được các nhà phát triển, nhà nghiên cứu từng triển khai.

4.4 Đánh giá hệ thống/mô hình

e Muc tiêu: Chạy thực nghiệm thành công và cho ra đánh giá về các ưu nhược

điểm và khả năng ứng dụng hệ thống cho các doanh nghiệp vừa và nhỏ.

e Phuong pháp: Chạy thực nghiệm, kiểm tra khả năng vận hành của hệ thống.

Trang 10

Tài liệu tham khảo

1] Sarker, I., Faruque, F., Hossen, U and Rahman, A., 2015 A Survey of Software Development Process Models in Software Engineering International Journal of

Software Engineering and Its Applications, 9(11), pp.55-70.

2] Alsaqqa, S., Sawalha, S and Abdel-Nabi, H., 2020 Agile Software Development:

Methodologies and Trends International Journal of Interactive Mobile Technologies (JIM), 14(11), p.246.

3] Roche, James (2013) “Adopting DevOps Practices in Quality Assurance”.

Communications of the ACM 56 38-43 10.1145/2524713.2524721 [Accessed 10

09 2020].

4] Myrbakken, Havard & Colomo-Palacios, Ricardo (2017) DevSecOps: A

Multivocal Literature Review 17-29 10.1007/978-3-319-67383-7_2 [Accessed 10

09 2020].

5] Anjaria, D and Kulkarni, M., 2021 Effective DevSecOps Implementation: A

Systematic Literature Review Revista Gestão Inovacão e Tecnologias, 11(4),

pp.4931-4945.

6] Team, S., Team, S., Team, S., Kesarapalli, R and Team, S., 2022 DevSecOps

and the modern application security program | Synopsys [online] Software Integrity

Blog Available at: devsecops-application-security-program/>

<https://www.synopsys.com/blogs/software-security/3-reasons-[7] InfoQ 2022 DevSecOps and Application Security [online] Available at:

<https://www.infoq.com/presentations/app-security-devsecops/>

[8] “DevsecOps” [Online] Available: <https://www.devsecops.org/>

Trang 11

Kế hoạch thực hiện

Thời gian Nội dung

01/03/2022 Tìm hiéu, giao đề tài, xây dựng đề cương chỉ tiết

8/03/2022

9/03/2022 Nghiên cứu mô hình DevOps DevSecOps

21/03/2022

22/03/2022 Nghiên cứu các công cụ hỗ trợ tích hợp liên tục và triển khai liên

10/04/2022 tục (CI/CD), monitoring, các công cụ kiểm thử để kiểm tra tính

6/05/2022 Tổng hợp s6 liệu và kết quả thực nghiệm.

10/06/2022 Hoàn thiện hệ thống đã triển khai.

Viét báo cáo khóa luận.

Hoàn thành báo cáo.

11/06/2022 Kiểm tra lại toàn bộ tài liệu liên quan để phục vụ cho Phản biện và

18/06/2022 bảo vệ Khóa luận tốt nghiệp

20/06/2022 Phản biện khóa luận.

Trang 13

MỤC LỤC

TOM mỵ , 1 00.18009670 2

1.1 Đặt vấn đề HH HH êu 2

IPXMW'Š0àï i6 oan n '"ẸẤ"-"-: ,Ô 3

1.3 Đối tượng nghiên CỨỤ - 2-2-5 +E+SE£2EEE2EE2E1EE12E1271717171E2121 1.1 Xe, 41.4 Pham vi nghiÊn CỨỤ - -ó- G3 1 9319911931 11193 01 nh ng ng nh ngư 4

1.5 Những đóng góp của khóa luận - ¿- - 5c + 3+1 3E ESEEkrskrskererrkrree 4

1.5.1 Tính mới của để tàị c.ccsheeriiierriirrrrriirrrririrrrrirrrree 41.5.2 Khả năng ứng dụng thực tế của dé tàị -¿©-scce+cxccreerxecreee 51.6 Cau trúc của khóa luận -c- tt ỀEESEEEEEEESEEEEEEEEEEEEEEEEEEEEEErkerkrrksree 5Chương 2 CƠ SỞ LY THUYÊT <2 << +s£€Ss£EssESs£ESsESseEssexserssersersser 7

2.1 Các mô hình phát triển phần mềm truyền thống - 2 2© 225225+22<+‡ 7

2.2.3 Triển khai mô hình DevOps ¿2 2 2+2++EE+EE+EEeEEeEEerEerkrrrerreree 13

2.3 Hệ thống quản lý phiên bản — mã nguÖn -2- 2 + ©522+2s£+zxzxezrxez 15

2.3.1 Tổng quan -5+ tt 2E211211221211211 271111111111 rẹ 152.3.2 Hệ thống quản lý phiên bản - ¿22 2+22+E++EE+EE£EEEEEEEEErErkerrrrreces 16

Trang 14

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

2.3.2.2 Hệ thống quan lý phiên ban phân tán (Distributed version control

-DVC) 17

2.3.2.3 Lợi ích của hệ thống quản ly mã nguồn -2- 252 52522522 182.4 Tích hợp và triển khai liên tụC 2 2©£++£+E£+EE+EE+EEeEEerEerkerkerkerrerreee 21

2.4.1 Tich hop En tlc -‹“‹ 212.4.2 Phân phối liên tuc ccecccccccscessesssesssessesssessesssessesssessesssesssssesssssessesssetseesess 22

2.4.3 Triển khai liên tục -cccc-+tEEkkrrHEHH 23

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

2.5.1 Công nghệ ảo hóa Ăn HH HH TH ng gu HH ng 25 2.5.2 Cong nghệ ảo hóa COTIfA1T€T Q2 + 1v vn ngư, 26

2.5.3 Quản lý và điều phối -©-<+2x+2 E2 EEEEEEEEEEEEEEEEErkerkrrrkree 27

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

2.6.1 Tổng quan DevSecOps -2-©5¿©5¿+ 2E 2EE2EEEEEEEEEEEEEEErkerkerkrrrvee 28

2.6.1.1 Lịch sử hình thành - 13 232113 kSEsksirsreree 29

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

2.6.1.3 Triển khai DevSecOps - ¿22 5222 2221221212121 2121212 re 322.6.2 Các giải pháp bao mật trong quá trình phát triển phần mềm 33

2.6.2.1 Phân tích chất lượng mã nguồn 2-2 + s2 E+£x+£Eerxerxzreces 33

2.6.2.2 Kiểm thử phần mềm - ¿2+ £+E+E£+EE£EE£EEEEEEEEEEEerkrrkerrrrei 33

2.6.2.3 Tich hop gam 37 2.6.2.4 Quản ly, bao vệ thông tin nhạy cam (Manage secrets and protect sensitive

ð100 177 38 2.7 Infrastructure as COdGe - s2 TT TH HH gi nrự 39

Trang 15

3.1 Phân tích và thiết kế hệ thống, - - ¿2£ £++£+EE+EE+EE£EE£EEEEEEEEErErrkrrrerrree 43

3.1.1 Mô hình tổng quát - 2-22 2E2E2E12E1211271271 217121211 re, 433.1.2 MG hinh chi 5 a.a 43

3.1.2.1 Triển khai cơ sở hạ tang sceccecceccecscssessessessessessesssesssssesseesessessessesseeseees 443.1.2.2 Luông xử lí của chu trình CI/CTD - 2 2 s2 E+£++£xerxerxzreces 44

3.2 Cac thành phan của hệ thống - 2 2+ £+S£+EE£EE+EE+EE+EEeEEeEEerEerkerrerreee 46

3.2.1 _ Triển khai cơ sở hạ tầng dưới dang mã (Infrastructure as Code) 463.2.2 Quan lý, bảo vệ thông tin nhạy cảm (Manage secrets and protect sensitive

data) 50

3.2.3 Quản lý phiên bản mã nguồn — Kho lưu trữ mã nguồn (Gitlab) 523.2.4 Tích hợp và triển khai liên tụC - z2 2 2+ £+E++£E+EkerEerEerkerrerrecrs 533.2.5 _ Quản ly Artifact — Nexus Repository Manage€r «<-c+ec<s 54

3.2.6 _ Môi trường và công cụ triển khai — Kubernetes — Helm 55

3.2.7 _ Các công cụ bảo mẬT - c1 212111211111 911111118111 1 ng ng rệt 61

3.2.8 Gia Sat CaAMầầầồầẳáaáỗaIAIAIÁẶÁẶẮẶẢAVẢ 64Chương 4 TRIEN KHAI HE THONG VA ĐÁNH GIA KET QUẢ 67

4.1 Triển khai hệ thong ccscccsscesccsssesseessesssessesssessesssessesssessesssessesssessesssessessseeseeesess 67

4.1.2 Thông tin phan cứng -:- + + +E£SE£+E2EEEEEEEEEEEEEEEEEEEEErkrrkrrrrree 68

4.1.3 Giới thiệu dự án thử nghiỆm 5 c5 5 SE **vseEEeererreerereerreree 69

4.1.4 Tu động hóa triển khai cơ sở hạ tẦng - 2-52 sccxccxerxcrrcrreces 69

4.1.4.1 Chuan bị Hashicorp Vault Server và Nginx Modsecurity Server 694.1.4.2 Triển khai với Terraform và Ansible -: 2- ¿2+ s+2z++zxz+zxsrsz 734.1.4.3 Setup các thành phan cần thiết ở các Server cho chu trình CICD 854.1.4.4 Tao Pipeline CICD cho mô hình - 5< 55+ +s+svEseesserseeesee 107

4.1.5 _ Kịch bản thử nghiỆm - c- 5Ă 2222113911311 1E 1E EEEEkEkrrkrreree 116

4.1.5.1: Kịch bản 1 — Đánh giá vai trò của Sonarqube về các lỗi bảo mật liên

Trang 16

quan đến mã nguÖn - 2 2 2+2 SE+EE+EE£EE£EE£EEEEEEEEE2E522122127171 717121 xe 1164.1.5.2: Kịch bản 2 — Đánh giá vai trò của CloudGuard ShifLeft về các lỗi bảo

mật liên quan đến Image - +: 2 + + +E£+E££E££E£EE£EE+EEEEESEEEEEEEEerkrrkerreee 124

4.1.5.3: Kịch ban 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 .137

4.2 _ Đánh giá hệ thống đã triển khai 2-2-2 +E£+E2EE2EE2EEEEEEEEeExerkerreree 143

4.2.1 Ưuđiểm S2c k2 E2 E212211271211071211 112111 cxe 1434.2.2 — Hạn chế c- Set EEt TT E111 11111111 11111111111111111 1 cE 143Chương 5 KET LUẬN VÀ HƯỚNG PHAT TRIỂN s<ccss©cse 145

5.1 Kếtluận J6 Z7 nấ 145

5.2 Hướng phat triÊn + + St SEEEE21E21121121122121121 212121 re 146

TÀI LIEU THAM KHẢO -5- 5-5 s£s£ 222 £Ss£Ss£Ss£EseEsevseEsevssessessee 147

Trang 17

DANH MỤC HÌNH

Hình 2 1 Các giai đoạn của mơ hình Waterfall eee - 25s +2 xxx skresrrrrererer 8

Hinh 0 /)/1980)ì/1i010u) 0n 9

Hình 2 3 Sự hình thành DevOps -. c2 1221321113 1118111151111 7111111 rrxre 11Hình 2 4 Hệ thống quản lý mã nguén ceeccecscsscessesssesseessecssessesssessesssessesssessecssessessseeses 16Hình 2 5 Hệ thống Quản lý phiên bản tập trung -2-©-2cs+2zz+£x+zzz+rxezzzerxez 17

Hình 2 6 Hệ thống quản lý phiên bản phân tán - 2 2 2 s2 + x+£x+£x+zxzxzzzzez 18

Hình 2 7 Lưu trữ mã nguồn truyền thống - 2 2 2 £+E£+EE2£E+£E+EEerEerxrrerreee 19Hình 2 8 Kho mã nguồn chia Sẻ 2-2 252 SE£2E£2E£EEE£EE2EEEEEEEEEEEEEEEEErrkrrkerreee 20

Hình 2 9 Mơ hình tích hợp liên tục - - - ¿+22 +22 *+*E£+2E+vEE+eEeeEeereereeresrrrrsee 21

Hình 2 10 Mơ hình phân phối liên tục - 2+ ©22£+£+££+£+2£E+£x+£E+zxerxerxeczeee 23Hình 2 11 Tích hợp liên tục — Phân phối liên tục — Triển khai liên tục 24

Hình 2 12 Mơ hình ảo hĩĨa sĩc v11 TT HH Hà Hy 26 Hình 2 13 Khác nhau giữa Container va VirtuaÏ1ZafIOn s5 ++sx++sx+s++exsss+ 27 Hình 2 14 DevSecOps tính hợp các phương thức bảo mật vào tồn bộ các giai đoạn

CUA DevOPDs TS n ha /(đ 6“ 30 Hình 2 15 Static Application Security Test (SASÏT) - LH Hệ, 34 Hình 2 16 Dynamic Application Security Test (DASTT) - - 5-5 <c++secxsserssees 36Hình 2 17 Vong đời tài nguyên cơ sở hạ tằng 2 2 2+e+++£E+£EeEEerkerkerrerreee 41

Hình 3 1 Triển khai cơ sở hạ tang ccsccecsesscessesssessesssessvsssecsvsssecssessessuessecsueesessuessesaseeses 44

Hình 3 2 Mơ hình Pipeline CICD - 5 1k9 91912 191 11v nh ng nghi, 46

Hình 3 3 Luồng hoạt động của Terraform - + 2 2 £+E£+EE+EE+EEeEEerEerkerrerreee 47Hình 3 4 Vi dụ khi triển khai Infrastructure trên AWS - c+s+cce+rvrzxererxee 48Hình 3 5 Kiến trúc của Ansible -s- 22 + ©5++2x£EESEEEEEEEEEEEEEEEEEEEEEkrrkkerkrrrrervee 49

Hình 3 6 Kiến trúc của HashiCorp VauÌ( 2© £2s2££+EE+£E£EEtEEEeEEezExerkerrxerkee 51

Trang 18

9 Kết quả của SonarQube sau khi quét toàn bộ mã nguồn - 62

10 Kết quả CloudGuard ShiftLeft kiểm tra Image được tạo ra từ giai đoạn 63

11 Grafana DashbOarr - + x1 99 9v nh ng TH ng nrếc 65

12 Kết hợp Grafana va Prometheus 2 2 2+ £+E++£E+EEerEerxerkerrerreee 66

1 Sơ đồ mô hình triển khai -¿ 22+2+‡E ki 67

2 Giao diện Hashicorp Vault Server - 2c + 31x SE SEssrseerrreree 70

3 Tro IP Nginx Server vào các tên miỀn - 2 2 2s ++x+zxe£xezEerrzcree 70

4 Định dạng cho tên miền của Jenkins SerV€F 2- + s+s+zszE+Eerszxsrszeez 71

5 Dinh dang cho tén miền của GitLab Server cccccccscssssesecessssssesecessescseseseeseees 71

6 Dinh dang cho tén miền của SonarQube Server ccccssessesseseesessesseseseeseeseees 72

7 Dinh dang cho tên miền của Nexus Repository SerVer - 72

8 Dinh dang cho tên miền của Repository Nexus - 2 5+ s2cz+szcsz 72

9 Định dang cho tên miền của WebApplication - 5-5 s2£szzse+zzzse2 73

10 Các file Terraform và AnsIbÌe - -.- «cv ng gưệt 74

11 Đăng nhập vào Azure CÏOU( c5 + SE ES g g g nrnrệt 75

12 Kết quả terraform init +: + 65s SESE£2E£2E2EE2E12E12212127171 71211 xe, 75

13 Khai báo Provider VauÌÏ(L - sư 76

14 Khai báo data của Vault Š€TVT - tt HH HH nhiệt 76

15 Data được lay bằng các biến -2-©2¿© 22x E2 EEEEEEEEEEErkrrkrerrees 76

16 Data được lây bằng các biến 2-2-5222 EEE2EEEEEEEEEEEEEEkrrkrerkree 76

17 Yêu cầu nhập token trước plan -2- + 2£+++£x£+z++£x++zxezxeerxeee 77

18 Kết quả sau khi pla -2- 2 25+ +E£SE£2E2EE2EE2EE2EEEEEEEE271EEEEECEEerkrrrree 78

19 Yêu cầu nhập token trước khi apply -¿-ssz+z++zx++zx+zxzzxeez 79

Trang 19

20 Yêu cầu nhập quyết định trước khi apply - 2 + 5 szsecszzsee- 79

21 Kết quả sau khi apply thành công - 2 2 2 s2 + E+£E+£EezEezEzrerreee 80

22 Kết qua từ Azure Portal của các máy ảO ¿- 2 + scxerxerxerxerrerreee 80

23 Kết quả từ Azure Portal của Kubernetes Cluster - ¿z5 81

24 Gắn địa chi IP của Sonarqube Server vào tên miễn -. -2- 2 +: 81

25 Gắn địa chi IP của Repository Nexus vào tên miễn -2- 2 5+: 82

26 Gắn địa chi IP của Jenkins Server vào tên miễn - 5c s+s+zszxzzezsz 82

27 Gan địa chỉ IP của GitLab Server vào tên miền - 2-2 s+s++xezxccxez 83

28 Gan địa chi IP của Nexus Server vào tên miễn -2- x+x++xerxerxeẻ 83

29 Giao diện web của Jenkins Server - 5 55222 132 stress 84

30 Giao diện web của GitLab S€TV€T - c5 1 11+ kkesseeeeee 84

31 Giao diện web của SonarQube Server - S5 SE siserrrkree 85

32 Giao diện web của SonarQube Server c5 3+ x*+kEssesreerrreree 85

33 Tao user trên GitLab c1 2 111231111211 11 1811119111185 1 118111110111 re 86

34 Tao user trên GitLab - c1 2c 121211111211 111911 1199111182111 8211110111111 xee 86

35 Tạo user trên GitLab - - - c2 1 2c 132221111211 81151 1119111192111 92111 g2 1g vec 87

36 Tao user trên GitLab c1 2c 112231111231 1118111191111 1111811111011 1g xe g7

37 Tao group user trên GitLab - -ó- 2c + 321111 911 1 91191 911 1 1 re, 88

38 Tao group user trên CIItLLaÖ - óc 25 3 12311511911 11 911 1 9112 1n ng ry 88

39 Thêm thành viên vào ðTOUD US€T - - <6 5 + 1k1 9 vn re, 89

40 Tao project Gitlab cho mô hình 5 5 22+ +2 *++sEEseEesereereseeeerrses 89

41 Tao project Gitlab cho mô hình 5 5 +2 +32 *++sEEeeEeexeeresesrerrses 90

42 Kết quả project Gitlab 2-2-5 SE£SE£EE2EEEEE2E12E12212212171 212121 eU 90

43 Commit code lên project VỪa †ạO L2 9v HH HH ng 91

44 Push code lên project VỪa ạO - - SH HH HH HH HH ng nnriệt 91

45 Kết quả sau khi push cccccccccscssessesseessessessessessessessessessesssssesssessessessessesseesees 92

46 Tao Blob Store cho project của mô hình - ¿5+ ++s+++x++s+sexseresss 93

Trang 20

47 Tao Blob Store cho project của mô hình - - 5 5s £+t£+sexserserse 93

48 Kết quả sau khi tạo Blob Store c.cccssesssesssesssssesssessesssesseessessesssessessseeseesess 94

49 Tao Repositories cho project của mô hình - «+ s++s++s+s++erssss 95

50 Tạo Repositories cho project của mô hình - - 5+ +55 +5 s+++exsexs+ 95

51 Tao Repositories cho project của mô hình - - +5 + +5 ++ss+e++exsexs+ 96

52 Kết quả tao Repositories cccscscsessssssesssessessseessessessesssecssessecsesssecseessesseesees 96

53 Tao secret cho Kubemetes Cluster cccccccccsscccesssceesseeesescsesssessseeeesseesens 97

54 Tao project SonarQube cho mô hình - 5-5 +5 +++£+s+svEsseeseesses 97

55 Tao project SonarQube cho mô hình - 5-55 £++£+s++vseeesersses 98

56 Tao project SonarQube cho mô hình s55 55+ *+*£+vE+eseeseesersee 98

57 Tao project SonarQube cho mô hình - - s5 5+ £+s++vssesseesses 99

58 Tạo các plugin cần thiét c ceccecccsscessesssessesssessesssecsesssesssssessessseesesssesseseses 99

59 Tao các plugin cần thiét cccccceccesssessesssesseessessesssecsuessecsssssecsssssesseesseesseess 100

60 Tao các Credentials cần thiét c c.ccccccccccccsccsscssessessssessessssessesesassesseeeseneeeees 101

61 Tao các Credentials cần thiét cc ccccccccccscsscccsssssecsessssessesetssssssesstsasseceteasenees 101

62 Các Credentials cần thiét cccccccccsssecseessesssssecstesseesecsecssecsecsecseesesseesseess 102

63 Cau hình connection của Jenkins và GitLab -2- ¿55s s25: 102

64 Cấu hình connection của Jenkins và GitLab -2-5z©5s>sz2zs+e: 103

65 Thém Node cho Jenkins 1 104

66 Thêm Node cho Jenkins 5 s5 1x11 E1 2 1 ng ri 104

J0 (309i 00 i4 1n 105

68 Kiểm tra IP của Jenkins Slave -2- + ©52cx2++zxtzEterxezrrerxrrrrrred 105

69 Thêm Node cho JenKITAS 5 <6 2211 231991 31 91 119 1g ngư 106

70 Kết quả sau khi thêm Node - 2+ 2522 22E££EE2EE£EE£EESEEEEEerEerkerkered 106

71 Tạo Job Jenkins cho mô hình c5 22533222 **‡ +22 ‡++eeEeeeeeeeeeeees 107

72 Tao Job Jenkins cho mô hình c5 2253322213 *£2<E‡++eeEeeeeeezeseees 108

73 Tao Job Jenkins cho mô hình <5 225332221 ** +2 ‡++eeEezeeezeeeees 108

Trang 21

74 Tạo Webhook Trigger cho Project GitLab 09

75 Tạo Job Jenkins cho mô hình 10

76 Chay thử Job lll T7 Chay thử Job wo cececessceescsessesesescsssseseseseesssesssesesessessssessesneseseeeenaneneae 11

78 Kết quả sau khi chạy job ccccscssssssssssseessssssecssssseesessssecesssssscesssseeesssseeseesssess 12

79 Push code lên GitLab SeTVeT 5255222 St S*2x+xttekerrrkerererrree 13

80 Kết quả Pipeline chạy thành công -2 ©222++2222+z+ecvvszrrerrxee 13

81 Logs của Pipeline ¿+ - + 5S Sk*k2kề E112 211111101 011110111 14

82 Kiểm tra trên Clusf€r -. :+ ©2222222+++2222E2EYY+rrtrtttrEEkvrrrrrrrrrrrrrrrrcee 14

83 Gan địa chi IP webapp vào tên miền -2-¿-52222vvcctttrrrrrvererree 15

84 Kết quả tên miền Webapp -:¿222222222S2vt2EEEErrttrkvrrerrrrrrrrrrkev 15

85 Dev thực hiện commit code lên GitLuab - 55+ 5+ ssss+ssss+s>zz>+s+es+ 16

86 Kiểm tra trên server GitLLab 222222 222222222+ctttEEEEEEvvrrrrtrrrrrrrrerree 17

87 Pipeline tự động chạy khi có commit mới ¿-¿- - s ++++++s+xe++ 18

88 Ảnh khi pipeline chạy xong :2©22++222v+z+ettvvvrrerrvrrrrsrrver 18

89 Dashboard của Sonarqube Server - + + +5++++£++srerzxserrers 19

90 project flask-dOCk€r - 522222222 321212121121 2121 1111212 re 19

91 Chỉ tiết project flask-dOCker ccccccssssssssssssessssssssccsssesecssssscessssseecsssseeesseess 20

92 Chi tiết một bug cụ thể 2222c+2222222S2+ttEEEEEEEErrrrrtrrrrkrrrrrrrrrrex 21

93 M6 ta VE 0 8a -.41ÄÃ[ÃRñRA|.AH Ô 21

94 Mô tả về bugg : 22222222++22222221212222221111111.22211111110.1011111 cm 22

95 Chỉnh sửa source code theo hướng dan của sonarqube và commit lại 2

96 Pipeline tự đông chạy khi có commII - ¿+ 5 2 2 ++++s+s+ss£ec+> 23

97 Dashboard của Sonarqube Server ¿c5 tt svvvverekekrkrkrrer 23

98 project flask-dOCÌK€T ¿ST E1 TH HH HH rà 24

99 Dev commit code lên GitLab - 52-2 5 252 52+*+*‡+£e£e>xzxzxrxsreree 25

100 Pipeline tự động chạy khi có commII +5 c+++sexex+ezxzerexee 25

Trang 22

101 Stage Shiftleft Image Scan - -< SH TH HH 126

102 Kết quả của pipeline - ¿5s s+SxeEEeEEEEEE21121122121121 212121 re 127

103 Logs của Stage "Shiftleft Image SCann” - -ccSc cv sererrseree 127

104 Dashboard của CloudGuard ShIffÏefĂ - ¿s55 2s 2s £+xssesveseesres 128

105 Chi tiết của image đã scan ¿2-55 ©2s‡2x2EEEEEESEEEEEEEkrrkrerkrrrrrred 129

106 Chỉ tiết từng ruÌe ¿- ¿- 2 2 k+EE9EE£EE£EEE2E2E12112112112111171 1171 re 130

107 Chi tiết bài kiỂm tra ccc:c2vvtttEktrrrrttrrrtrttrrrrrrrirrrrrrrrrrieg 130

108 Các thông tin liên quan đến lỗ hồng 2- 2 52 +2s£+zxzxezrxd 131

109 Xuất T€DOFFL c5 S2 S1 E12 1EE19115717111111211 2112111111111 111111111 cre 131

110 Chi tiết bảng T€pOFTL 2-2-5 SE9EE‡EEEEEEEEEEE211211211221211121 112121 re 132

111 Dev commit code lên GitLLab - - - c5 5< 2+*£+*E++eEEeeeesseeseeersre 133

112 Pipeline tự động chạy khi có commTmII - 5 + +s<++£+se+sexseessxs 134

113 Kết quả pipeline chạy xong - +: + s+x+£x£EE+EEeExeerkerkeerkrrrerred 134

114 Logs của stage "ShiftLeft Image SŠCani” - - +5 <++x£+ssseeseesse 135

115 Console output của pID€Ï1TIG - - 6 c2 2311911231 91 91111 11 v g rưy 135

116 Dashboard của CloudGuard ShIftLefT 5 5 + 55+ 2s£+£+£sveses 136

117 Chi tiết của image đã scan 2-22 Ex2EEEEEEEEEEEEEErrkkerkrrrrrred 136

118 Kết quả pod trên clusfer - 2 ¿+ ++Ex£2EE£EEEEEEEEEEEerkeerkerrerred 137

119 0i 0 138

120 Kết qua sau khi apply trên cÏust€r - 2 2 2+ s+++£E+Exerxerxerxerreres 139

121 Gan IP vào tên miền trên Nginx SeTVer 2-2-2 5 s+cxvzxczxezez 139

122 Khởi động lại Nginx S€TVIC€ Gà SH HH gi r rưệp 140

123 Kết quả của tấn công -¿- + s+2k+EESEE2E211211211211211211 111121 cre 140

124 Bật chế độ MOdSCCULILY 232 141

125 Kiểm tra khi không có mã dOC ecececsessesscssssssessessessessessesseessessessessesseeseesees 142

126 Kết quả khi có mã độc 2-2-2 s£+S+SE£SE£EEEEE2EE2EE2E127121 2121 142

Trang 23

DANH MỤC BANG

Bảng 4 1 Bang thông tin phần cứng server

Trang 24

TÓM TAT

DevOps là một văn hóa làm việc kết hợp giữa phát triển và vận hành, được áp dụng ngàycàng phô biến trong quá trình phát triển phần mềm Mục đích chính của DevOps nhămgiúp các tô chức, doanh nghiệp có thé phát trién, triển khai và đem sản phâm đến kháchhàng — người tiêu dùng một cách nhanh nhất nhưng cũng dam bao chất lượng sản phẩm.Tuy nhiên, các vấn đề bảo mật và an toàn thông tin trong văn hóa làm việc của DevOpsvẫn chưa được chú trọng Thêm vào đó, các giải pháp bảo mật truyền thống chưa thể giảiquyết được vấn đề nêu trên Chính vì thế, nhóm tác giả chọn DevSecOps là một hướng

dé nhóm có thé nghiên cứu, thực nghiệm và đánh giá Trong phạm vi, nhóm tác giả sẽcung cấp cái nhìn tổng quan về mô hình DevOps và DevSecOps, cùng với các cơ sở lýthuyết liên quan Từ đó, nhóm tác giả sẽ xây dựng một mô hình DevOps dựa trên cácnền tảng mã nguồn mở và tích hợp thêm các giải pháp bảo mật dé tăng độ an toàn

Trang 25

Chương 1 MỞ DAU

1.1 — Đặ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àngngà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ôngtin 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ưabao 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ácphươ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 đíchnâng cao chất lượng sản pham cũng như rút ngăn thời gian phát triển - đưasản tới cho khách hàng [1] Phương pháp Agile ra đời trong bối cảnh ngànhphá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ốngtheo 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ìnhphá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àngnhanh 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áttriể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ểnvớ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

Trang 26

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ớimụ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]

1.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ừngthành phần trong mô hình (Ví dụ: các công cụ các công cụ hỗ trợ tíchhợp liên tục, triển khai liên tục, kiểm thử được sử dụng dé kiểm tra tínhbảo mật của ứng dụng, các công cụ Quản lý, giám sát trong quá trìnhphá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ả

Trang 27

năng ứng dụng mô hình đôi với các doanh nghiệp vừa và nhỏ.

1.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

1.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

1.5 Những đóng góp của khóa luận

1.5.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ồmhai 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ờinhau, đặ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 releasenhanh 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ểnphầ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

Trang 28

hệ thống có thê hoạt động ồn định, từ đó bắt kip xu hướng phát trién phần mềmtrong tương lai [5].

1.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ểnphầ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ế

1.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ệutham 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

Trang 29

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ệ đượcnhóm triển khai trong đề tài như: Tích hợp và triển khai liên tục, côngnghệ 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ụcquá 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 antoà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.

Trang 30

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ầnmề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ả caonhất

2.1.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ầnmề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áocông bố năm 1970 Trong mô hình này, quá trình phát triển phần mềm được chiathà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à đầuvà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ênxuố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ôngnghiệ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ệntrong hình 2.1

Trang 31

Hình 2 1 Các giai đoạn của mô hình Waterfall

2.1.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 Lý do của việc này đó

là phương pháp truyền thống (Waterfall) ngày càng bộc lộ nhiều nhược điểm va tỉ

lệ các dự án bị thất bại quá cao Tốc độ phát triển ngày càng nhanh của thị trường

phát triển phần mềm thì việc làm sao đề cung cấp sản phâm đến khách hàng trongthời gian sớm nhất ngày càng được chú trọng Nhưng mô hình Waterfall lại khôngthé đáp ứng được điều này Chính vì thé, đã dẫn đến sự ra đời của mô hình phát triểnphần mềm linh hoạt (Agile)

Khái niệm Agile (viết tắt của Agile Software Development) có nghĩa là phương

thức phát triển phần mềm linh hoạt, được ứng dụng trong quy trình phát triển phầnmém với mục tiêu là đưa sản phâm đên tay người dùng càng nhanh càng tot.

Mô hình Agile thực chat là một tập hợp các nguyên lý, kỹ thuật dành cho phát triểnphần mềm tập trung vào kha năng đáp ứng được những thay đổi khi có yêu cầu.Tuyên ngôn Agile được xuất bản năm 2001 đã hệ thống hóa các nguyên tắc của mô

Trang 32

hình này Một trong số các nguyên tắc trong Tuyên ngôn Agile nói răng: "Ourhighest priority is to satisfy the customer through early and continuous delivery ofvaluable software." Nguyên tac này có thé được hiéu là: "Ưu tiên cao nhất của chúngtôi là làm hài lòng khách hàng thông qua việc phân phối sớm và liên tục các phầnmềm có giá trị".

2.1.3 Scrum

Mô hình phát triển phan mềm Scrum được sử dung dé quan lý quá trình phát

triển những sản phâm phức tạp hay những dự án lớn Mô hình Scrum cho phép sửdụng nhiều quy trình và kỹ thuật khác nhau dé con người có thé xác định các van déđang diễn ra và đưa ra giải pháp phù hợp, đảm bảo sản phẩm được đưa đến kháchhàng với chất lượng tốt nhất

Scrum là mô hình phát triển phần mềm lặp đi lặp lại Những khoảng lặp cốđịnh được gọi là Sprint Sprint là thành phần quan trọng nhất của mô hình Scrum.Một Sprint mới sẽ được bắt đầu ngay khi Sprint trước đó kết thúc Đây là sự khácbiệt giữa mô hình Scrum và mô hình Waterfall truyền thống Mô hình phát triểnphần mềm Scrum được minh họa trong hình 2.2

Trang 33

2.2 Mô hình DevOps

2.2.1 Lịch sử hình thành

Với Agile, các dự án giờ đây có thể được khởi động nhanh hơn nhiều với khảnăng làm việc theo nhóm được cải thiện và khả năng đa chức năng tốt hơn Ngay cả

khi làm việc trong những môi trường khó khăn và hỗn loạn hơn, các nhóm giờ đây có

thé phan ứng với những thay đổi tốt hơn Tuy nhiên, khi làm việc với phương pháp

phát triển phan mềm Agile, các tổ chức gặp rất nhiều khó khăn trong việc làm sao déphát hành sản phẩm thường xuyên hơn Nguyên nhân dẫn đến vấn đề trên là do nhómphát triển phần mềm và nhóm vận hành phần mềm không thể phối hợp tốt với nhautrong quá trình làm việc [10] Với phương pháp phát triên phần mềm truyền thống,mục tiêu của đội ngũ phát triển là xây dựng các tính năng (function) đúng với yêu cầu(requirement) và phát hành (release) cho khách hàng càng nhanh càng tốt, trong khimục tiêu của đội ngũ vận hành là tạo ra một hệ thống ôn định Trong thực tế, hai mụctiêu này sẽ có thê đối lập nhau vì các đội ngũ phát triển chỉ quan tâm đến mục tiêu củaminh, dan đến sản phẩm dễ xảy ra van đề, từ đó mang lại những trải nghiệm không tốtcho khách hàng Dé giải quyết được những van đề nêu trên, DevOps được sinh ra vớibăng kết hợp giữa phát triển sản pham (Development) và vận hành sản phẩm(Operations) dé thực hiện mục tiêu chung là đảm bảo về cả tốc độ và sự ôn định

Phong trào DevOps bắt đầu hình thành trong khoảng thời gian từ năm 2007 đếnnăm 2008, khi các công ty và cộng đồng phát triển phần mềm nhận ra những vấn đềnghiêm trọng trong quá trình phát triền phần mềm Tại hội nghị Agile năm 2008,Andrew Clay Shafer va Patrick Debois đã thảo luận về "cơ sở hạ tầng Agile" [7] Thuật

ngữ DevOps được phô biến thông qua một loạt các series "DevOpsDays", bắt đầu từ

năm 2009 ở Bi [8] Ké từ đó, đã có các hội nghị devopsdays được tổ chức ở nhiều quốcgia trên toàn thế giới [9] Từ đó, thuật ngữ DevOps đã chính thức được sử dụng

10

Trang 34

với bộ phận operator (kỹ sư hệ thống, nhân viên bao mật, kỹ su mạng, kỹ sư hạ tang )

nhằm mục đích rút ngắn vòng đời phát triển sản phâm (SDLC) Với các dự án có kiến

trúc phức tạp và quy mô lớn, khi có những thay đổi hay b6 sung những tinh năng mớimang đến nhiều tác động đến chất lượng phần mềm và được thực hiện lặp đi lặp lại đểcải thiện chất lượng phần mềm Từ các yêu cầu thực tiễn, DevOps áp dụng các công

cụ tự động đề quản lý hạ tầng phần mềm giúp tăng tốc độ xây dựng, triển khai và nhậnphản hồi liên tục

Một cách giải thích khác, DevOps là một sự kết hợp của các nguyên lý, thựchành, quy trình và các tool giúp tự động hóa quá trình lập trình và chuyên giao phanmềm Với DevOps, các công ty có thể “release” các tính năng nhỏ rất nhanh và kết hợpcác phản hồi mà họ nhận được một cách nhanh chóng

e - Giai đoạn phát triển (Development) bao gồm phan việc của UI designer,

developer, QA/QC,

e Giai đoạn vận hành (Operations) có sự tham gia của system engineer,

system administrator, operation executive, release engineer

11

Trang 35

Hai giai đoạn này tương đối tách rời nhau Đặc biệt là ở những công ty có quy

mô từ trung bình trở lên Chính vì thế, khái niêm devops ra đời nhằm tối ưu hóa chu

trình phát triển phan mềm Giúp sản phẩm phần mềm được release nhanh và thườngxuyên hơn.

2.2.2 Lợi ích của mô hình DevOps

Tốc độ: DevOps giúp các developers và team operations đạt được mụctiêu ở một tốc độ khác giúp cải tiến sản phẩm nhanh chóng phục vụngười dùng, thích nghi với thị trường tốt hơn và điều chỉnh hiệu quả

kinh doanh hiệu quả hơn.

Chuyén giao nhanh chóng: Tăng tốc độ release thường xuyên dé chúng

ta cải thiện sản phâm nhanh hơn và cho ra mắt các feature nhanh hơncũng như fix bug, giúp phản hồi cho khách hàng nhanh chóng và xâydựng nên lợi thế cạnh tranh tốt hơn

Độ tin cậy: DevOps đảm bảo chất lượng bang cách áp dụng CI /CD,Monitoring và logging process Bằng cách update mà team

infrastructure cấp quyền cho team development dé chuyền giao nhanhhơn mà vẫn duy trì được trải nghiệm người dùng tốt

Quy mô: Sự tự động hóa và tính nhất quán giúp quản lý những hệ thốngphức tạp hoặc giảm thiểu những rủi ro khi có sự thay đổi một cách hiệuquả, giúp vận hành và quản lý cơ sở hạ tầng cũng như các quy trình pháttriển ở quy mô phù hợp

Cải thiện khả năng cộng tác: Xây dựng các nhóm hiệu quả hơn theo mô

hình văn hóa DevOps, trong đó nhân mạnh các giá trị như quyền sở hữu

và trách nhiệm giải trình Các nhà phát triển và nhóm vận hành cộng tácchặt chẽ, chia sẻ nhiều trách nhiệm và kết hợp quy trình làm việc của

họ Điêu này làm giảm sự kém hiệu qua và tiệt kiệm thời gian.

12

Trang 36

e Bao mật: Quá trình làm việc sẽ được tiễn hành nhanh hơn nhưng vẫn có

thé duy trì kiểm soát và dam bảo tuân thủ Vi thé, bạn hoàn toàn có thé

áp dụng mô hình DevOps mà không cần phải giảm bớt đi tính bảo mậtnhờ việc sử dụng các chính sách tự động hóa khác Ngoài ra, các công

cụ kiêm soát đều sẽ được tinh chỉnh sao cho hợp lý nhất

2.2.3 Triển khai mô hình DevOps

Lập kế hoạch liên tục-Continuous PlanningTrong quá trình phát triển phần mềm, các đội ngũ phát triển và vận hành cầnphải thích nghi với những thay đổi nhanh chóng của thị trường phần mềm, các doanhnghiệp cần phải có kế hoạch kinh doanh phù hợp với yêu cầu của thị trường, từ đó tăng

nhanh tốc độ hoàn thành cũng như đảm bảo chất lượng của dự án DevOps hỗ trợ các

doanh nghiệp cải thiện van đề này thông qua việc ưu tiên hoàn thành các sản phẩm còntồn đọng, tạo một kênh giao tiếp với khách hang dé có thê cập nhật phản hồi từ kháchhàng một cách nhanh nhất Việc lập kế hoạch phải được thực hiện thường xuyên dé cóthé theo kip với những thay đôi nhanh chóng của thị trường Lập kế hoạch liên tục làmột quá trình diễn ra theo chu kì và được thực hiện thông qua những bước: Lập kế

hoạch theo từng giai đoạn, thực hiện kế hoạch, tiếp nhận và phản hồi những ý kiến,

điều chỉnh kế hoạch nếu cần thiết

Tích hợp liên tục — Continuous Integration

Tích hợp liên tục (CI) là một phương pháp phát triển phần mềm thường được

áp dụng trong quy trình DevOps Các nhà phát triển thường xuyên hợp nhất các thay

đôi mã của họ vào một kho lưu trữ được chia sẻ nơi các bản cập nhật đó được tự độngkiểm tra, nếu có lỗi xảy ra thì chúng sẽ được thông báo cho lập trình viên dé tiến hànhkhắc phục càng sớm càng tốt Các mục tiêu chính của tích hợp liên tục là tìm và giảiquyết lỗi nhanh hơn, cải thiện chất lượng phần mềm và giảm thời gian xác thực và phát

hành các bản cập nhật phần mềm mới Đây là một quá trình lặp đi lặp lại và diễn ra

liên tục trong suốt quá trình phát triển phần mềm [11]

13

Trang 37

Phân phối liên tục — Continuous DeliveryPhân phối liên tục — Continuous Delivery là phân phối liên tục đề cập đến khảnăng của một tô chức phần mềm trong việc day các bản cập nhật sản phẩm đến kháchhang một cách nhanh chóng va dé dang Các ban cập nhật này có thé bao gồm mọi thứ,

từ các tính năng mới đến sửa lỗi, thiết kế giao diện mới hoặc thậm chí là các loại thửnghiệm khác nhau CD có nghĩa là đã xác định các quy trình và giao thức dé day mãtrực tiếp ngay lập tức

Triển khai liên tục — Continuous DeploymentTrong quá trình triển khai liên tục, ngay khi các tính năng mới của sản phẩmđược hoàn thành, việc triển khai sản phẩm một cách tự động trên môi trường thửnghiệm sẽ được thực hiện, và sau đó sản phẩm cũng sẽ được phát hành một cách tựđộng đến tay người dùng Các nguyên tắc của DevOps khuyến nghị tự động hóa việctriển khai sản phẩm Việc triển khai liên tục giúp giảm số lượng các quy trình thủ công

và tăng tốc độ giao sản phẩm cho khách hàng

Kiểm thử liên tục — Continuous Testing

Continuous Testing là quá trình kiểm tra liên tục, thường xuyên và tự động hóakhi có bat kì thay đôi nào xảy ra trên mã nguồn Mục tiêu của Continuous Testing là

kiêm tra sớm dé có thé phát hiện ra những lỗi tồn tại trong mã nguon, hé théng som

nhất có thé Quá trình này bao gồm các bên liên quan như đội ngũ phát triển, đội ngũ

đánh giá chất lượng sản pham và các bên có chuyên môn Trong quá trình phát triển

phần mềm, ngay khi một tính năng mới được hoàn thành, quá trình kiểm thử sẽ tự động

diễn ra đề phát hiện và khắc phục lỗi ngay từ ban đầu Quá trình này sẽ diễn ra liên tục

và lặp đi lặp lại trong suốt quá trình phát triển sản phẩm dé hạn chế lỗi và rút ngắn thời

gian phát triển

Giám sát liên tục — Continuous Monitoring

14

Trang 38

Giám sát liên tục là một quá trình theo dõi và xác định các vấn đề tuân thủ vàrủi ro bảo mật trong suốt từng giai đoạn của vòng đời hoạt động của DevOps, giúpnhóm phát triển và nhóm vận hành có thé phản ứng kip thời khi có sự cố xảy ra và đưa

ra phương án giải quyết nhằm hạn chế thấp nhất các thiệt hại cho công ty và kháchhàng Theo dõi liên tục và khả năng quan sát có thé được coi là bước cuối cùng củaquy trình DevOps Đây là một trong những bước quan trọng nhất trong vòng đờiDevOps và sẽ giúp đạt được hiệu quả và khả năng mở rộng thực sự.

Phan hồi và tối ưu hóa liên tục — Continuous feedback and optimizationPhản hồi và tối ưu hóa liên tục cập nhật các ý kiến, phản hồi từ khách hàng mộtcách liên tục dé đội ngũ phát triển và vận hành có thể tiến hành phân tích, phát hiệnnhững tính năng chưa được hoàn thiện, tối ưu hoặc thêm tính năng mới cho sản phẩm

Từ đó, nhóm phát triển sẽ lên kế hoạch phù hợp (khắc phục lỗi, tối ưu các tinh năng đã

có, cập nhật các tính năng mới) để cải thiện và tối ưu hóa dịch vụ, tăng trải nghiệmngười dùng Ngoài ra, các lỗi trong quá trình phát triển phần mềm cũng sẽ được pháthiện nhanh chóng, từ đó đưa ra những giải pháp khắc phục một cách kịp thời, đảm bảosản phâm được hoàn thành đúng tiến độ, cũng như chất lượng sản pham

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

2.3.1 Tổng quan

Trong quá trình phát triển chương trình phần mềm, càng về sau ứng dụng cóthé sẽ phải thực hiện những thay đổi, nâng cap dé đáp ứng được nhu cầu của khách

hàng, dan tới mã nguồn sẽ ngày càng trở nên nhiều và phức tạp Chính vi thé, rất khó

dé lập trình viên có thé quản lý được các chức năng đã thực hiện, cũng như quản lýtất cả mã nguồn đã viết ra Đặc biệt đối với những dự án lớn, có số lượng lập trìnhviên đông thì việc chia sẻ mã nguồn, quản lý công việc giữa các thành viên trongnhóm càng trở nên cấp thiết với mục đích giúp cho dự án không bị chồng chéo côngviệc cũng như tăng tốc thực hiện dự án

15

Trang 39

mã nguồn đang được chỉnh sửa xảy ra lỗi và lập trình viên muốn lấy lại trạng tháicủa tệp mã nguồn trước khi chỉnh sửa thì phải làm như thế nào? Cách đơn giản nhất

được sử dụng là tạo ra một bản sao chép của tệp đó trước khi chỉnh sửa Khi dùng

phương pháp này thì lập trình viên phải tạo ra nhiều tệp có nội dung giống nhaunhưng có tên khác nhau Và nếu cách đặt tên không có trật tự thì sẽ không thé phânbiệt được tệp nào là tệp mới nhất dé tiếp tục chỉnh sửa

Dé giải quyết những van dé này thì các hệ thống quản lý phiên bản được tạo

ra Và hệ thống quản lý phiên bản thường được các doanh nghiệp lựa chọn nhiều

nhất là hệ thống quản lý phiên bản phân tán Git

2.3.2 Hệ thống quản lý phiên bản

Hệ thống quản lý phiên bản mã nguồn - Version Control System (VCS) là theo

dõi và quản lý các thay đồi đối với hệ thống tệp VCS cũng cung cấp các tiện ích hop

tac dé chia sẻ và tích hợp các thay đổi hệ thống tệp này với những người dùng VCS

16

Trang 40

khác Khi hoạt động ở cấp hệ thống tệp, VCS sẽ theo dõi các hành động thêm, xóa vàsửa đôi được áp dụng cho tệp và thư mục Kho lưu trữ là một thuật ngữ VCS mô tảkhi nào VCS đang theo dõi một hệ thống tệp Trong phạm vi của các tệp mã nguồnriêng lẻ, VCS sẽ theo dõi việc bổ sung, xóa, sửa đổi các dòng văn bản trong tệp đó

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

- CVC)

Mô hình sử dụng kiến trúc Client-Server Trong mô hình này, Server đóngvai trò là một kho dữ liệu (Repository) duy nhất để lưu trữ tất cả các dữ liệu của

dự án như tập tin, mã nguồn, dependencies, gói cài đặt Khi có nhu cầu sử dụng,

những thành viên của trong dự án (client) sẽ kết nối đến server dé lấy phiên banmới nhất của mã nguồn về máy (check out), sau đó có thể cập nhật (commit) tất

cả các thay đôi lên server.

Computer A Central VCS Server

Checkout

CS || Version Database

Computer B

Checkout

Hình 2 5 Hệ thong Quản ly phiên bản tập trung

2.3.2.2 Hệ thống quản lý phiên bản phân tán (Distributed version control

-DVC)Một giải pháp phô biến hơn của hệ thống quản lý phiên bản mã nguồn sudụng mô hình phân tan là Git Khi các lập trình viên (client) lây mã nguồn phiênbản mới nhất (clone) từ server về máy thì hệ thống sẽ tải toàn bộ cả kho mã nguồn(repository), vì thế máy client lúc này có thể đượ xem như một kho mã nguồn

17

Ngày đăng: 03/11/2024, 18:32

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w