TRIỂN KHAI HE THONG VÀ DANH GIÁ KET QUA
4.11 Thông tin phần cứng
4.1.3. Kịch bản thử nghiệm
4.1.3.1 Kịch bản 1 - Triển khai DevSecOps cho dự án quản trị hệ thống (Administration
Dashboard)
Trong hệ thống đang cần một trang web phục vụ cho nội bộ của công ty, người
sử dụng chính ở đây là đội ngũ DevSecOps. Với mục đích người dùng có thể nắm bắt
được tình hình hệ thống một cách nhanh chóng, dé dàng, thuận tiện cho quá trình tích
hợp và phat triển sản phẩm. Để phát triển Administration Dashboard, độ ngũ cũng tiến
hành quá trình DevSecOps như các sản phẩm khác. Toàn bộ quá trình được triển khai
cụ thể qua các bước:
Hình 4.1: Tạo mới repository cho dự án Gitlab.
Sau khi dự án được khởi tạo, kỹ sư Devsecops sẽ gửi đường dẫn lưu mã nguồn
đến nhà phát triển, ngoài ra sẽ thêm các thành viên phát triển vào GitLab của dự
án.
* Bước 2: Tạo dự án trên Jenkins để khởi chạy quá trình triển khai và tích hợp liên
tục.
* Bước 3: Tạo mới dự án trên Rancher để triển khai dự án. Truy cập địa chỉ: http://10.102.196.123 để tiến hành tạo mới dự án Rancher. Sau khi tạo mới, Rancher sẽ khởi tạo Container từ Image sẵn có. Tiến hành expose port để truy cập đến dự án đã được triển khai.
* Bước 4: Tạo mới các File và viết script tích hợp mã nguồn phục vụ cho quá trình tự động và triển khai liên tục (Dockerfile, Jenkinsfile, build.sh, deploy.sh,
gitlab-ci.yml).
* Bước 5: Người lập trình tiến hành đẩy mã ngudn lên kho lưu trữ mà kỹ sư DevSecOps đã gửi trước đó, tiền hành khởi tạo 4 nhánh: Dev, Testing, Staging, Master. Sau khi đẩy thành công, quá trình tự động tích hợp và triển khai được tự
Pipeline dev
Stage View
®
mm 24⁄2
> an. = I I W5 Hình 4.2: Jenkins tiến hành build dự án trên nhánh Dev.
* Bước 6: Kỹ sư DevSecOps tiến hành kiểm tra quá trình build trên Jenkinsfile dựa vào hệ thống log Kibana đã build thành công.
91
Hình 4.3: Kết quả log Kibana thông báo Jenkins đã build thành công.
* Bước 7: Kỹ sư DevSecOps tiến hành truy cập SonarQube Server để tiến hành xem kết quả sau khi Quét. Kết quả trả về không xuất hiện bug, lỗ hổng.
© dashboard-administraton front
‘New code: since previous version ‘+a
bugs [ỉ] Vuneables [2ora ea â 24 cect mm zs
09 09 09 Line ode
Code Smells [Õ
2h® 15 0® 0
Duplealone [Ð)
O 2.2% 2 = cuaty cate
Oyplcatea Blocks upseatons on New Code
ual Proties
Hình 4.4: Kết qua sau khi SonarQube quét mã nguồn.
* Bước 8: Kỹ sư DevSecOps tiến hành truy cập OWASP Depedency Check để
kiểm tra các lỗ hổng ở các gói thư viện hỗ trợ (depedencies). Hệ thống chỉ phát
Hình 4.5: Kết quả sau khi Owasp Dependency Check quét mã nguồn.
* Bước 9: Kỹ sư DevSecOps tiến hành truy cập Arachni để kiểm tra các lỗ hổng
a) ©)
EEPEEEE Severities Elements r Trust td, 0m9
Olis
Hình 4.6: Kết quả sau khi Arachni quét toàn bộ dự án đã được triển khai.
93
* Bước 10: Kỹ sư DevSecOps tiến hành truy cập Kubei để tiền hành quét toàn bộ Container bao gồm Container đã được triển khai. Kết quả trả về Container bị lỗ hổng CVE-2019-19816, tuy nhiên đây không phải lã lỗ hổng từ mã nguồn của
dự án.
Hình 4.7: Kết quả sau khi Kubei tiền hành quét Containers.
* Bước 11: Kỹ sư tiễn hành truy cập trang web đã triển khai, địa chi IP va port đã cấu hình ở bước 3.
epee a) ee xhmn#s
QUAN TRIHE THONG
ơ
Hình 4.8: Kết qua sau khi triển khai du án thành công.
* Bước 12: Sau khi chạy toàn bộ dự án, nếu không có lỗi xảy ra, kỹ sư DevSecOps tiến hành gộp nhánh (merge) sang nhánh Testing. Quá trình tự động tích hợp và triển khai ở nhánh Testing này sẽ gồm các bước tương tự nhánh Dev từ bước 1 đến bước 11.
* Bước 13: Sau khi chạy toàn bộ dự án, nếu không có lỗi xảy ra gồm van dé bảo mật và luồng nghiệp vụ, kỹ sư DevSecOps tiến hành gộp nhánh (merge) sang nhánh Staging. Quá trình tự động tích hợp và triển khai ở nhánh Staging này sẽ gồm các bước tương tự nhánh Dev va Testing từ bước 1 đến bước 11.
* Bước 14: Sau khi chạy toàn bộ dự án, nêu không có lỗi xảy ra gồm vấn dé bảo mật và luồng nghiệp vụ, kỹ sư DevSecOps tiền hành gộp nhánh (merge) sang nhánh Master. Quá trình tự động tích hợp và triển khai ở nhánh Master này sẽ
gồm các bước tương tự nhánh Dev va Testing từ bước 1 đến bước 11. Sản phẩm
chính thức được phát hành (release).