YOMEDIA
ADSENSE
Cải tiến CI/CD pipeline với các công cụ an toàn thông tin mã nguồn mở
2
lượt xem 1
download
lượt xem 1
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Trong nghiên cứu này, tác giả trình bày một cách tiếp cận cải tiến CI/CD pipeline bằng cách tích hợp các công cụ an toàn thông tin được giới thiệu bởi Open Source Foundation for Application Security Project (OWASP). Ngoài ra, cũng trình bày những khía cạnh cần đánh đổi khi triển khai yếu tố an toàn thông tin vào CI/CD pipeline.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Cải tiến CI/CD pipeline với các công cụ an toàn thông tin mã nguồn mở
- CẢI TIẾN CI/CD PIPELINE VỚI CÁC CÔNG CỤ AN TOÀN THÔNG TIN MÃ NGUỒN MỞ Võ Văn Lên 1, Nguyễn Thành Phương 1 1. Ban đề án Chuyển đổi số, Trường Đại học Thủ Dầu Một TÓM TẮT Continuous Integration (CI) và Continuous Deployment (CD) là các khía cạnh quan trọng trong kỹ nghệ phần mềm hiện nay. Trong các mô hình tổ chức sản xuất phần mềm hiện đại CI/CD pipeline đã trở thành một thành tố bắt buộc nhằm cải thiện tốc độ cũng như giảm thiểu công sức của đội ngũ trong việc tích hợp và triển khai các hạng mục công việc đã hoàn tất. Trong bối cảnh các rủi ro về an toàn thông tin tăng cao, việc triển khai các công cụ an ninh cho CI/CD pipeline đã trở thành một xu hướng tất yếu. Việc triển khai các công cụ an toàn thông tin xuyên suốt pipeline theo triết lý “Shift Left” sẽ giúp phát hiện sớm các vấn đề về an toàn thông tin nhằm xử lý kịp thời và tiết giảm chi phí chỉnh sửa. Trong nghiên cứu này, chính tôi trình bày một cách tiếp cận cải tiến CI/CD pipeline bằng cách tích hợp các công cụ an toàn thông tin được giới thiệu bởi Open Source Foundation for Application Security Project (OWASP). Ngoài ra, chúng tôi cũng trình bày những khía cạnh cần đánh đổi khi triển khai yếu tố an toàn thông tin vào CI/CD pipeline. Từ khóa: CI/CD pipeline, DevSecOps, OWASP. 1. ĐẶT VẤN ĐỀ DevOps được hình thành với mục đích đẩy nhanh việc cung cấp phần mềm chất lượng cao bằng cách đưa tự động hóa, tốc độ, phản hồi chặt chẽ và cộng tác đa chức năng vào vòng đời phát triển phần mềm (Myrbakken và nnk., 2017). DevSecOps tận dụng những triết lý tương tự này kết hợp với yếu tố an toàn thông tin làm cho quá trình phát triển phần mềm trở nên an toàn hơn (Hình 1). Hình 1. Quy trình DevSecOps (Nguồn: www.atlassian.com) 477
- Pipeline về bản chất là quy trình phát triển phần mềm thông qua lộ trình gồm các pha cốt lõi bao gồm nhưng không giới hạn các pha cài đặt, kiểm thử và triển khai (Zampetti và nnk., 2021). Bằng cách tự động hóa một phần hoặc toàn bộ pipeline, mục tiêu cơ bản là giảm thiểu sai sót của cá nhân và duy trì quy trình nhất quán trong cách triển khai. Các công cụ được sử dụng trong pipeline thường bao gồm các công cụ biên dịch mã nguồn, kiểm thử đơn vị, phân tích mã nguồn, kiểm thử an toàn và đóng gói. Về cơ bản, các nền tảng phát triển phần mềm và các pipeline có một số sự hỗ trợ mặc định về an toàn thông tin. Tuy nhiên, các sự hỗ trợ mặc định không bao phủ hết các yêu cầu về an toàn thông tin trong bối cảnh hiện nay. Do đó, hiện nay, các pipeline được bổ sung nhiều công cụ về an toàn thông tin để đạt được các yêu cầu về an toàn thông tin. Tùy theo từng lĩnh vực phần mềm cụ thể, các công cụ khác nhau được cân nhắc sử dụng để đạt được hiệu quả cần thiết. 2. PHƯƠNG PHÁP NGHIÊN CỨU Hiện nay, có nhiều công cụ triển khai CI/CD pipeline. Một số công cụ nổi bật có thể kể đến như Bitbucket Pipelines (Atlassian, n.d.), Jenkins (Jenkins, n.d.), AWS CodePipeline (Amazon, n.d.), CircleCI (CircleCI, n.d.), Azure Pipelines (Microsoft, n.d.), GitLab (GitLab, n.d.), Atlassian Bamboo (Atlassian, n.d.). Các công cụ có các đặc trưng rất riêng (Bảng 1) và tùy theo tính chất của từng dự án mà nhóm dự án sẽ chọn lựa công cụ phù hợp. Bảng 1. Mô tả các công cụ triển khai CI/CD pipeline Công cụ Mô tả Đặc trưng Bitbucket Pipelines CI được tích hợp trực tiếp vào Dễ thiết lập và cấu hình Bitbucket do Atlassian cung cấp. Bitbucket Đồng nhất trải nghiệm với Pipelines là bước tiếp theo dễ dàng để kích hoạt CI Bitbucket Bitbucket Pipelines cho các dự án đã có sẵn trên Bitbucket. Bitbucket Dịch vụ đám mây cung cấp bởi Pipelines được quản lý dưới dạng mã để có thể dễ bên thứ 3 dàng xác định các định nghĩa pipeline và bắt đầu xây dựng. Bitbucket Pipelines cũng cung cấp CD. Jenkins là một công cụ CI đã được minh chứng qua On-premise quá trình lâu dài. Jenkins là công cụ mã nguồn mở Mã nguồn mở Jenkins và được duy trì bởi cộng đồng. Jenkins đặc biệt phù Addon/Plugin đa dạng hợp cho các dự án build trên môi trường on-premise. Amazon Web Service (AWS) là một nhà cung cấp Toàn bộ triển khai trên đám mây hạ tầng đám mây nổi bật. AWS cung cấp hoàn chỉnh Tích hợp với các dịch vụ khác bộ công cụ liên quan đến hạ tầng và phát triển phần của AWS AWS CodePipeline mềm. CodePipeline là công cụ CI chính của AWS. Hỗ trợ plugin CodePipeline đồng nhất trải nghiệm với các dịch vụ khác của AWS. CircleCI là Công cụ CI kết hợp với Github. CircleCI Notification thông báo các sự là một trong những Công cụ CI linh hoạt nhất với kiện khả năng hỗ trợ ma trận các hệ thống kiểm soát Tối ưu hiệu năng CircleCI phiên bản, hệ thống container và cơ chế triển khai. Dễ dàng gỡ lỗi CircleCI có thể được triển khai on-premise hoặc trên Kiểm soát độ đo hiệu năng đám mây. Azure là nền tảng cơ sở hạ tầng đám mây của Tích hợp nền tảng Azure Microsoft, Microsoft tương đương với Amazon Web Tích hợp nền tảng Windows Azure Pipelines Services. Giống như AWS CodePipeline đã nói ở Tích hợp Github trên, Azure cung cấp Công cụ CI được tích hợp hoàn toàn vào bộ công cụ lưu trữ Azure. Gitlab là một Công cụ CI mới cung cấp trải nghiệm Hỗ trợ on-premise và đám mây GitLab DevOps đầy đủ. Gitlab được tạo ra với mục đích cải Hỗ trợ kiểm thử an toàn thông tin 478
- Công cụ Mô tả Đặc trưng thiện trải nghiệm tổng thể của Github. Gitlab cung cấp UX hiện đại có hỗ trợ container. Một sản phẩm CI khác từ Atlassian. Trong khi Tích hợp các sản phẩm Atlassian Bitbucket Pipelines hoàn toàn là một tùy chọn được Addon/Plugin đa dạng Atlassian Bamboo lưu trữ trên nền tảng đám mây thì Bamboo lại cung Hỗ trợ container với docker cấp một giải pháp thay thế on-premise. Bên cạnh nhiệm vụ cơ bản là thúc đẩy quá trình tích hợp và triển khai; pipeline còn phải đảm bảo các yếu tố an toàn thông tin. Thông qua việc tích hợp các công cụ an toàn thông tin vào pipeline, các nhóm dự án có thể cải thiện yếu tố an toàn thông tin cho pipeline. OWASP (Raghu Vamsi và nnk., 2023) khuyến nghị các pipeline có thể tích hợp các nhóm công cụ bao gồm nhưng không giới hạn (Bảng 2): nhóm công cụ phân tích mã nguồn tĩnh, nhóm công cụ phân tích mã nguồn động, nhóm công cụ phân tích chất lượng mã nguồn, nhóm công cụ phân tích dependency, nhóm công cụ phân tích tương tác. Các công cụ phân tích mã nguồn tĩnh (Static Application Security Testing - SAST) có thể giúp phân tích mã nguồn dạng thô hoặc đã được biên dịch nhằm xác định các lỗ hổng an toàn thông tin tiềm tàng. Các công cụ này có thể được chạy độc lập hoặc nhúng vào IDE dưới dạng plugin để hỗ trợ các nhà phát triển kiểm tra mã nguồn trực tiếp trong lúc xây dựng chúng. Các công cụ phân tích mã nguồn tĩnh có thể giúp hạn chế đáng kể thời gian và công sức của nhóm dự án liên quan đến khía cạnh an toàn thông tin vì chúng hỗ trợ phát hiện các lỗ hổng từ rất sớm. Bảng 2. Mô tả các công cụ kiểm thử an toàn thông tin Nhóm công cụ Công cụ Đặc trưng .NET Security Guard Mã nguồn mở hoặc miễn phí Tích hợp IDE Nhóm công cụ phân tích ABOM Scanner Miễn phí mã nguồn tĩnh SaaS Agnitio Mã nguồn mở hoặc miễn phí Tương thích hệ điều hành Windows AppTrana Miễn phí SaaS Nhóm công cụ phân tích Arachni Miễn phí mã nguồn động Hỗ trợ đa nền tảng CI Fuzz CLI Mã nguồn mở hoặc miễn phí Hỗ trợ đa nền tảng PVS-Studio Tính phí, miễn phí thời hạn 1 năm Tương thích pipeline Nhóm công cụ phân tích SonarQube Tính phí, miễn phí chất lượng mã nguồn Tương thích pipeline, IDE Crucible Tính phí Tương thích pipeline Hiện nay, các kiến trúc ứng dụng web hiện đại được chia nhỏ thành nhiều thành phần độc lập để dễ dàng phát triển, bảo trì cũng như mở rộng. Một thao tác của người dùng có thể triệu gọi nhiều thành phần độc lập thực thi chức năng để cho ra output cuối cùng. Chính vì vậy, một số tính năng khó có thể kiểm tra một cách trọn vẹn bằng các công cụ phân tích mã nguồn tĩnh. Để quét các lỗ hổng trong thời gian thực thi của ứng dụng web, các công cụ phân tích mã nguồn động được áp dụng. Các công cụ này ngoài việc kiểm soát mã nguồn thì chúng còn kiểm soát cả các request, response để tìm ra các lỗ hổng tiềm tàng. 479
- Ngoài ra, một pipeline cũng cần được thêm vào các công cụ phân tích dependency để kiểm tra các ràng buộc và mã nguồn của bên thứ 3. Mã nguồn bên thứ 3 được xem là một trong những nguồn phát sinh lỗ hổng nguy cơ cao. Hiện nay, việc sử dụng mã nguồn bên thứ 3 rất phổ biến xuất phát từ triết lý phát triển phần mềm “đứng trên vai người khổng lồ”. Do đó, các công cụ phân tích dependency thường là một thành phần bắt buộc trong các pipeline. Các công cụ phân tích mã nguồn tĩnh thường được sử dụng dưới dạng plugin gắn vào IDE và phục vụ chính là cho đối tượng nhà phát triển. Trên các build server, việc phân tích mã nguồn tĩnh được thực hiện bởi một nhóm các công cụ khác có tên là các công cụ phân tích chất lượng mã nguồn. Về mặt chức năng cốt lõi thì hai nhóm công cụ này có chức năng như nhau. Tuy nhiên, nhóm các công cụ phân tích mã nguồn được xây dựng tương thích và hỗ trợ mạnh hơn cho quá trình build trên build server. Một nhóm các công cụ khác thường xuất hiện trong các pipeline là nhóm các công cụ phân tích tương tác. Nhóm các công cụ này tập trung vào phân tích lỗ hổng tiềm tàng qua các kênh giao tiếp giữa các thành phần như RESTful API, hàng đợi. 3. KẾT QUẢ VÀ THẢO LUẬN Trong nghiên cứu này, chúng tôi tiến hành xây dựng pipeline với công cụ chính là Jenkins, công cụ phân tích mã nguồn tĩnh “Security Code Scan” (Security Code Scan, n.d.), công cụ phân tích mã nguồn động “OWASP ZAP” (Jakobsson và nnk., 2022), công cụ phân tích chất lượng mã nguồn “SonarQube” (Campbell và nnk., 2013), công cụ phân tích dependency “OWASP Dependency Check” (OWAS, n.d.), công cụ giám sát “Prometheus” (An và nnk., 2021). Hình 2. Pipeline được cài đặt với các công cụ theo khuyến nghị của OWASP Qua việc thử nghiệm pipeline, kết quả cho thấy pipeline đã cơ bản kiểm tra các khía cạnh an toàn thông tin trong quá trình CI/CD. Tuy nhiên, thời gian thực thi của pipeline tăng lên nhiều khi triển khai các công cụ an toàn thông tin. Do đó, tùy theo nguồn lực và mức độ nghiêm trọng của dự án, nhóm dự án có thể cân nhắc tăng hoặc giảm các công cụ an toàn thông tin để đạt hiệu quả mong muốn. Hình 3. Công cụ giám sát thể hiện kết quả và logs của các build 480
- 4. KẾT LUẬN Việc tích hợp các công cụ an toàn thông tin vào pipeline là một xu hướng tất yếu. Các tổ chức an toàn thông tin khuyến nghị nhiều bộ công cụ với các đặc trưng rất khác nhau. Do đó, tùy theo tình hình thực tế, các nhóm dự án có thể linh hoạt chọn các công cụ phù hợp. Tuy nhiên, vẫn cần phải đảm bảo các công cụ thuộc các nhóm cốt lõi theo khuyến nghị của OWASP. TÀI LIỆU THAM KHẢO 1. Jakobsson, Adam, and Isak Häggström (2022). Study of the techniques used by OWASP ZAP for analysis of vulnerabilities in web applications. 2. An, Seong Yeol, et al (2021). A pre-study on the open source prometheus monitoring system. Smart Media Journal 10.2, 110-118. 3. Campbell, G. Ann, and Patroklos P. Papapetrou (2013). SonarQube in action. Manning Publications Co.. 4. Myrbakken, Håvard, and Ricardo Colomo-Palacios (2017). DevSecOps: a multivocal literature review. Software Process Improvement and Capability Determination: 17th International Conference, SPICE 2017, Palma de Mallorca, Spain, Proceedings. Springer International Publishing. 5. Raghu Vamsi, P., Aamir Ahmad, and Vivek Dwivedi (2023). Application for Simulating OWASP Vulnerabilities. International Conference on Data Science and Communication. Singapore: Springer Nature Singapore. 6. Zampetti, Fiorella, et al (2021). Ci/cd pipelines evolution and restructuring: A qualitative and quantitative study. 2021 IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE. 7. Amazon. (n.d.). CI/CD Pipeline - AWS CodePipeline - AWS. Amazon AWS. Retrieved May 5, 2024, from http://aws.amazon.com/codepipeline/ 8. Atlassian. (n.d.). Bamboo: Continuous Integration & Deployment. Atlassian. Retrieved May 5, 2024, from http://www.atlassian.com/software/bamboo 9. Atlassian. (n.d.). Bitbucket Pipelines - Continuous Delivery. Bitbucket. Retrieved May 5, 2024, from http://bitbucket.org/product/features/pipelines 10. CircleCI. (n.d.). CircleCI: Continuous Integration and Delivery. Retrieved May 5, 2024, from http://circleci.com/ 11. GitLab. (n.d.). The most-comprehensive AI-powered DevSecOps platform. Retrieved May 5, 2024, from http://about.gitlab.com/ 12. Jenkins. (n.d.). Jenkins. Retrieved May 5, 2024, from http://www.jenkins.io/ 13. Microsoft. (n.d.). Microsoft Azure: Cloud Computing Services. Retrieved May 5, 2024, from http://azure.microsoft.com/en-us 14. OWASP. (n.d.). OWASP Dependency-Check. OWASP Foundation. Retrieved May 5, 2024, from http://owasp.org/www-project-dependency-check/ 15. Security Code Scan. (n.d.). Security Code Scan. Retrieved May 5, 2024, from http://security- code-scan.github.io/ 481
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn