DevSecOps workflow: 7 bước triển khai bảo mật toàn diện

DevSecOps workflow ra đời giúp giải quyết bài toán cân bằng giữa tốc độ phát triển phần mềm và yêu cầu bảo mật ngày càng cao. Bài viết này sẽ hướng dẫn 7 bước “xương sống” của một quy trình DevSecOps hiệu quả, đảm bảo kiểm soát rủi ro từ sớm và xuyên suốt hành trình sản phẩm. 

Đọc bài viết để hiểu rõ:

  • 7 bước quan trọng trong quy trình DevSecOps: Lập kế hoạch – Phát triển – Xây dựng – Kiểm tra – Phát hành – Triển khai – Vận hành và giám sát;
  • Các công cụ và phương pháp tốt nhất ở mỗi bước;
  • Các câu hỏi thường gặp trong quá trình thực hiện DevSecOps.

Đọc chi tiết: DevSecOps là gì: Tổng hợp công cụ và DevSecOps best practices

devsecops workflow là gì - itviec blog

DevSecOps workflow bước 1: Lập kế hoạch (Plan)

Các yếu tố bảo mật được đưa vào ngay từ giai đoạn lập kế hoạch ban đầu. Điều này bao gồm việc xác định các rủi ro tiềm ẩn và yêu cầu tuân thủ theo quy định. Việc lập kế hoạch bảo mật hiệu quả đòi hỏi sự hợp tác giữa tất cả các bên liên quan.

Các chuyên gia bảo mật, nhà phát triển và nhóm vận hành phải thống nhất về các mục tiêu bảo mật, quy trình làm việc và tài nguyên cần thiết. Sự hợp tác này thúc đẩy sự hiểu biết lẫn nhau và liên kết các chiến lược bảo mật với các mục tiêu kinh doanh.

Mục tiêu

Giảm thiểu rủi ro và đảm bảo nhu cầu bảo mật phù hợp với mục tiêu phát triển.

Các nhiệm vụ chính

1. Xác định các yêu cầu bảo mật: 

  • Thu thập và phân tích các yêu cầu bảo mật từ các bên liên quan, tiêu chuẩn ngành, chính sách nội bộ… 
  • Xác định mối đe dọa và rủi ro tiềm ẩn thông qua phân tích rủi ro, brainstorming và threat modeling.
  • Thiết lập mục tiêu bảo mật cho dự án.

2. Thiết kế kiến trúc bảo mật:

  • Phác thảo kiến trúc tổng thể của hệ thống, bao gồm thành phần, giao diện, luồng dữ liệu.
  • Tích hợp nguyên tắc thiết kế bảo mật ngay từ đầu như least Privilege, Defense-in-Depth, Network Segmentation…
  • Xác định các giải pháp bảo mật cần thiết cho kiến trúc như WAF, IAM, mã hóa dữ liệu.

3. Lập kế hoạch quản lý tuân thủ: Đảm bảo tích hợp các yêu cầu về tuân thủ vào kế hoạch phát triển; chuẩn bị kế hoạch thu thập bằng chứng tuân thủ xuyên suốt vòng đời dự án.

4. Xây dựng kế hoạch kiểm thử bảo mật: Xác định các loại kiểm thử bảo mật sẽ được thực hiện,  lên lịch trình phân bổ nguồn lực cho các hoạt động kiểm thử bảo mật trong suốt chu trình SDLC.

5. Xác định công cụ và quy trình:

  • Lựa chọn các công cụ sẽ được sử dụng trong các giai đoạn tiếp theo.
  • Định nghĩa các quy trình làm việc và luồng tự động hóa để tích hợp bảo mật.

6. Phân công vai trò và trách nhiệm:

  • Xác định rõ ràng vai trò và trách nhiệm của từng thành viên trong nhóm liên quan đến bảo mật.
  • Thiết lập các kênh giao tiếp và quy trình xử lý sự cố bảo mật.

Phương pháp và công cụ

Phương pháp: Shift Left, cộng tác liên chức năng, threat modeling, đánh giá rủi ro, xác định các chỉ số đo lường, tài liệu hóa chi tiết. 

Công cụ: 

  • Công cụ quản lý yêu cầu: Jira, Confluence, Azure DevOps, OpenText ALM/Quality Center.
  • Công cụ threat modeling: Microsoft Threat Modeling Tool, OWASP Threat Dragon, IriusRisk.
  • Công cụ quản lý rủi ro: LogicManager, ServiceNow GRC, Archer GRC.
  • Công cụ cộng tác và giao tiếp: Slack, Microsoft Teams, Google Meet, Miro, Lucidchart.

DevSecOps workflow bước 2: Phát triển (Development)

Trong giai đoạn này, developer tuân theo các hướng dẫn để tích hợp các tiêu chuẩn mã hóa an toàn, các bài kiểm tra mã và phân tích tĩnh được tự động tích hợp vào môi trường phát triển. Điều này giúp developer hiểu rõ hơn về các mối đe dọa tiềm ẩn, từ đó xác định và giải quyết các vấn đề một cách nhanh chóng.

Các nhiệm vụ chính

1. Mã hóa an toàn:

  • Tuân thủ các nguyên tắc mã hóa an toàn như OWASP Top 10, CWE Top 25.
  • Áp dụng các mẫu thiết kế bảo mật và nguyên tắc ít đặc quyền nhất.
  • Xử lý đầu vào người dùng một cách cẩn thận để ngăn chặn các cuộc tấn công như SQL Injection, XSS, CSRF.
  • Quản lý phiên và xác thực, ủy quyền một cách an toàn.

2. Sử dụng thư viện và phụ thuộc an toàn:

  • Chỉ sử dụng các thư viện, framework và component từ các nguồn đáng tin cậy.
  • Quản lý các phụ thuộc và phiên bản để tránh các lỗ hổng đã biết trong các thư viện (ví dụ: thông qua SBOM – Software Bill of Materials).
  • Thường xuyên cập nhật và vá lỗi các thư viện đã sử dụng.

3. Kiểm tra bảo mật mã tĩnh (Static Application Security Testing – SAST):

  • Chạy các công cụ SAST trên mã nguồn ngay trong môi trường phát triển (IDE) hoặc trong quá trình tích hợp liên tục (CI) để phát hiện sớm các lỗ hổng bảo mật.
  • Phân tích kết quả SAST và khắc phục các lỗ hổng được tìm thấy.

4. Quản lý thông tin nhạy cảm (Secret management):

  • Tránh hardcoding các thông tin nhạy cảm như khóa API, mật khẩu, chuỗi kết nối cơ sở dữ liệu trong mã nguồn.
  • Sử dụng các giải pháp quản lý chuyên dụng để lưu trữ và truy xuất các thông tin nhạy cảm một cách an toàn.

5. Kiểm soát phiên bản và quản lý mã nguồn:

  • Sử dụng các hệ thống quản lý phiên bản (như Git) để theo dõi các thay đổi mã nguồn.
  • Thực hiện đánh giá mã thường xuyên, đặc biệt tập trung vào các khía cạnh bảo mật.
  • Thiết lập các quy tắc bảo vệ branch để đảm bảo mã được kiểm tra trước khi hợp nhất.

6. Tạo tài liệu và hướng dẫn bảo mật:

  • Tài liệu hóa các quyết định thiết kế bảo mật và các biện pháp bảo vệ đã triển khai.
  • Cung cấp hướng dẫn mã hóa an toàn cho toàn bộ nhóm phát triển.

Các phương pháp tốt nhất

  • Đào tạo về mã hóa an toàn và nhận thức bảo mật cho tất cả Developer;
  • Tích hợp SAST vào IDE và CI/CD để tự động hóa việc quét mã với mỗi lần commit hoặc build;
  • Áp dụng Security by Design và Privacy by Design;
  • Tận dụng các framework và library về bảo mật, ví dụ Spring Security cho Java, ASP.NET Core Identity cho .NET, Passport.js cho Node.js…;
  • Peer Code Review với trọng tâm bảo mật;
  • Quản lý thành phần phần mềm và sử dụng công cụ quản lý bí mật.

Công cụ

  • Công cụ phân tích mã tĩnh SAST: SonarQube, Checkmarx SAST, Veracode Static Analysis, Snyk Code, Bandit/ESLint/gosec,…
  • Công cụ SCA: Snyk Open Source, OWASP Dependency-Check, Sonatype Nexus Lifecycle/Nexus Repository, WhiteSource Bolt/Mend.
  • Công cụ quản lý thông tin nhạy cảm: HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, Google Cloud Secret Manager, CyberArk.
  • Hệ thống kiểm soát phiên bản: GitHub, GitLab, Bitbucket, Azure Repos.
  • Môi trường phát triển tích hợp: IntelliJ IDEA, Visual Studio Code, Eclipse.

DevSecOps workflow bước 3: Xây dựng (Build)

Giai đoạn này bao gồm việc tự động hóa các thử nghiệm bảo mật, tích hợp trực tiếp vào quy trình xây dựng phần mềm. Sử dụng các công cụ xác thực codebase, đảm bảo rằng mọi thành phần được đóng gói đều an toàn trước khi triển khai. Các hệ thống tự động thực hiện phân tích nhị phân, kiểm tra cấu hình và kiểm tra tính toàn vẹn, cung cấp phản hồi nhanh cho developer và giảm thiểu rủi ro bảo mật. 

Mục tiêu

Việc tự động hóa kiểm tra bảo mật trong giai đoạn build giúp tăng khả năng mở rộng, lặp lại và đảm bảo phần mềm phát hành đạt chuẩn an toàn.

Các nhiệm vụ chính

1. Biên dịch và đóng gói:

  • Biên dịch mã nguồn thành các file thực thi hoặc thư viện.
  • Đóng gói các thành phần ứng dụng, tài nguyên và cấu hình thành các artifacts triển khai được.
  • Đảm bảo quá trình biên dịch và đóng gói sử dụng các cài đặt bảo mật tốt nhất.

2. SAST Scan tự động:

  • Tích hợp công cụ SAST vào quy trình build để quét mã nguồn (hoặc bytecode) ngay lập tức sau khi commit hoặc trong quá trình build chính.
  • Cấu hình cổng chất lượng để tự động dừng quá trình build nếu phát hiện ra các lỗ hổng nghiêm trọng, vượt ngưỡng cho phép.

3. Phân tích thành phần phần mềm (SCA):

  • Quét các thư viện, framework và phụ thuộc mã nguồn mở được sử dụng trong dự án để phát hiện các lỗ hổng đã biết và vấn đề về giấy phép.
  • Đảm bảo chỉ các thành phần được phê duyệt và không có lỗ hổng mới được đưa vào artifact cuối cùng.
  • Tạo danh sách các thành phần phần mềm để có cái nhìn minh bạch về tất cả phụ thuộc.

4. Quét container image:

  • Nếu ứng dụng được đóng gói dưới dạng container (ví dụ: Docker), thực hiện quét các image để phát hiện các lỗ hổng trong hệ điều hành cơ bản, các thư viện được cài đặt và cấu hình không an toàn.
  • Sử dụng các base image tối giản và đã được vá lỗi.

5. Code Signing: Ký điện tử các artifacts đã xây dựng để xác minh tính toàn vẹn và nguồn gốc của chúng, đảm bảo rằng artifacts không bị giả mạo hoặc thay đổi trái phép.

6. Lưu trữ artifacts an toàn: Lưu trữ các artifacts đã được xây dựng và quét vào một kho lưu trữ an toàn, có kiểm soát truy cập và kiểm toán.

Các phương pháp tốt nhất

  • Tự động hóa hoàn toàn quy trình build để giảm thiểu lỗi và đảm bảo tính nhất quán;
  • Cấu hình các quality gate trong CI/CD pipeline;
  • Sử dụng base image đã được tăng cường bảo mật;
  • Quản lý phiên bản chặt chẽ, đảm bảo mỗi build được gắn một phiên bản duy nhất;
  • Thực thi chính sách bảo mật qua công cụ;
  • Tạo SBOM tự động cho mỗi artifact;
  • Giảm thiểu bề mặt tấn công của Build System.

Công cụ

  • Hệ thống tích hợp liên tục (CI) – trung tâm của quá trình build, nơi các công cụ bảo mật được tích hợp: Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps Pipelines…
  • Công cụ SAST: SonarQube, Checkmarx SAST, Snyk Code, Veracode Static Analysis.
  • Công cụ SCA: Snyk Open Source, OWASP Dependency-Check, Sonatype Nexus Lifecycle / Nexus Repository.
  • Công cụ quét container image: Trivy, Clair, Aqua Security Trivy, Anchore Engine.
  • Công cụ scan IaC (Infrastructure as Code): Checkov, Terrascan, TfLint, Kubescape, Jit IaC Security, KICS,…
  • Kho lưu trữ Artifact: JFrog Artifactory, Harbor, Sonatype Nexus Repository.

DevSecOps workflow bước 4: Kiểm thử (Test)

Kiểm thử trong DevSecOps không chỉ dừng lại ở kiểm thử chức năng, mà còn mở rộng sang việc phát hiện, đánh giá và giảm thiểu các rủi ro bảo mật tiềm ẩn. Các framework kiểm thử tự động thực hiện quét lỗ hổng, kiểm tra thâm nhập và kiểm toán bảo mật, liên tục đánh giá bảo mật ứng dụng. Các quy trình kiểm thử được cập nhật thường xuyên để thích ứng với các lỗ hổng mới, duy trì trong suốt vòng đời ứng dụng, tạo điều kiện để phản ứng nhanh.

Việc kiểm thử toàn diện này đảm bảo các ứng dụng đáp ứng các yêu cầu bảo mật trước khi phát hành.

Các nhiệm vụ chính

1. Kiểm tra bảo mật ứng dụng động (Dynamic Application Security Testing – DAST):

  • Tự động quét ứng dụng đang chạy để phát hiện các lỗ hổng phổ biến như SQL Injection, Cross-Site Scripting (XSS), Broken Authentication,… bằng cách gửi các payload tấn công và phân tích phản hồi.
  • Tích hợp DAST vào CI/CD pipeline để quét liên tục hoặc định kỳ trên môi trường staging/testing.

2. Kiểm tra bảo mật ứng dụng tương tác (IAST):

  • Theo dõi hành vi của ứng dụng từ bên trong (runtime analysis) để xác định các lỗ hổng trong thời gian thực khi ứng dụng đang được tương tác.
  • Cung cấp thông tin chi tiết về dòng chảy dữ liệu và vị trí chính xác của lỗ hổng trong mã nguồn.

3. Kiểm tra thâm nhập (Penetration Testing – Pentest): 

  • Được thực hiện bởi chuyên gia bảo mật một cách thủ công hoặc bán tự động, định kỳ hoặc trước các bản phát hành lớn. 
  • Mô phỏng các cuộc tấn công thực tế để tìm kiếm các lỗ hổng phức tạp, lỗ hổng logic nghiệp vụ và các điểm yếu mà công cụ tự động có thể bỏ sót.

4. Kiểm tra bảo mật API: Bao gồm kiểm tra xác thực, ủy quyền, giới hạn tốc độ, xử lý dữ liệu và các lỗ hổng cụ thể của API.

5. Kiểm tra bảo mật hạ tầng và cấu hình:

  • Đánh giá tính bảo mật của môi trường triển khai (server, database, network devices, cloud configurations) để phát hiện misconfigurations, phiên bản phần mềm lỗi thời, hoặc các cổng mở không cần thiết.
  • Sử dụng công cụ quét lỗ hổng mạng.

6. Kiểm tra tuân thủ: Đảm bảo rằng ứng dụng và môi trường triển khai tuân thủ các quy định, tiêu chuẩn ngành và chính sách bảo mật nội bộ đã được xác định trong giai đoạn Lập kế hoạch.

7. Quản lý lỗ hổng:

  • Thu thập, phân loại, đánh giá mức độ rủi ro và theo dõi quá trình xử lý lỗ hổng từ tất cả các hoạt động kiểm thử.
  • Tích hợp với hệ thống quản lý task để đảm bảo lỗ hổng được giao cho đúng người phụ trách và được khắc phục kịp thời.

8. Fuzz Testing:

  • Fuzz Testing là kỹ thuật tạo ra một khối lượng lớn input ngẫu nhiên hoặc đột biến cho một ứng dụng, nhằm kiểm tra cách ứng dụng phản ứng. Fuzz Testing giúp phát hiện các trường hợp ngoại lệ, lỗi không mong đợi mà kiểm thử thông thường bỏ sót.
  • Các công cụ Fuzz Testing phổ biến bao gồm: American Fuzzy Lop (AFL), Peach Fuzzer, OWASP ZAP Fuzz, libFuzzer, ZAP Fuzzer.

Các phương pháp tốt nhất

  • Tích hợp kiểm thử bảo mật vào CI/CD 
  • Layered Testing bằng cách kết hợp nhiều loại kiểm thử (SAST, SCA, DAST, IAST, Pentest) để có cái nhìn toàn diện về tình hình bảo mật. 
  • Risk-Based Testing: Ưu tiên kiểm thử các khu vực có rủi ro cao, ví dụ: các chức năng xử lý dữ liệu nhạy cảm, các điểm cuối API quan trọng, các thành phần tiếp xúc với internet…
  • Sử dụng các công cụ quản lý lỗ hổng để theo dõi toàn bộ vòng đời của lỗ hổng.
  • Kiểm thử lặp đi lặp lại và liên tục (Continuous and Iterative Testing).
  • Giả lập tấn công (Attack Simulation).

Công cụ

  • Công cụ kiểm tra bảo mật ứng dụng động (DAST): OWASP ZAP (Zed Attack Proxy), PortSwigger Burp Suite Enterprise Edition, Acunetix, AppScan DAST, Nessus Professional.
  • Công cụ kiểm tra bảo mật ứng dụng tương tác (IAST): Contrast Security, HCL AppScan IAST, Dynatrace Application Security.
  • Công cụ quét lỗ hổng mạng và hạ tầng: Nessus (Tenable), OpenVAS/ Greenbone Vulnerability Management, Qualys VMDR.
  • Công cụ kiểm tra bảo mật API: Postman, OWASP ZAP, Akto, Tricentis Tosca (API Testing), Salt Security, Noname Security và OWASP APICheck.
  • Công cụ quản lý lỗ hổng: Jira (kết hợp với các plugin bảo mật), DefectDojo, Kenna Security (nay là Cisco Vulnerability Management), ServiceNow Security Operations.
  • Framework kiểm thử thâm nhập: Metasploit Framework, Nmap, Kali Linux.

DevSecOps workflow bước 5: Triển khai (Deploy)

Trong giai đoạn triển khai, DevSecOps thực hiện các kiểm tra bảo mật để đảm bảo cấu hình đáp ứng tiêu chuẩn. Các công cụ tự động xác nhận thiết lập bảo mật và tính toàn vẹn môi trường, xử lý sự cố ngay khi phát hiện. Giám sát liên tục giúp phát hiện nguy cơ và gửi phản hồi nhanh cho đội phát triển.

Việc tích hợp bảo mật vào quy trình triển khai giúp giảm lỗi do thao tác thủ công. Các công cụ tự động chủ động khắc phục sự cố, nâng cao độ ổn định và bảo mật cho ứng dụng.

Nhiệm vụ chính

1. Tự động hóa triển khai:

  • Sử dụng các công cụ CI/CD để tự động hóa toàn bộ quá trình triển khai, từ việc kéo artifacts đến cấu hình môi trường và khởi động ứng dụng.
  • Đảm bảo rằng quá trình triển khai là nhất quán và có thể lặp lại (idempotent).

2. Quản lý cấu hình an toàn:

  • Áp dụng các cấu hình bảo mật được xác định trước cho cả ứng dụng và hạ tầng (hệ điều hành, máy chủ web, cơ sở dữ liệu, dịch vụ đám mây).
  • Sử dụng Configuration as Code – IaC để kiểm soát phiên bản và kiểm toán các cấu hình bảo mật.
  • Loại bỏ các cấu hình mặc định không an toàn, các tài khoản và mật khẩu mặc định.

3. Quản lý bí mật trong triển khai:

  • Đảm bảo rằng không có bí mật nào (mật khẩu, khóa API, chứng chỉ) được hardcode trong quá trình triển khai hoặc trong mã nguồn.
  • Sử dụng các dịch vụ quản lý bí mật để cung cấp bí mật động (dynamic secrets) cho ứng dụng tại thời điểm chạy.

4. Tăng cường bảo mật hạ tầng:

  • Áp dụng các hướng dẫn tăng cường bảo mật (hardening guidelines) cho server, hệ điều hành, container runtime (ví dụ: CIS Benchmarks).
  • Đóng các cổng không cần thiết, cấu hình tường lửa (firewall), và phân đoạn mạng (network segmentation) để giới hạn quyền truy cập.

5. Quản lý quyền truy cập và danh tính (IAM):

  • Thiết lập các vai trò và quyền hạn tối thiểu cần thiết cho ứng dụng và các tài khoản dịch vụ (service accounts) để tương tác với các tài nguyên.
  • Thực thi nguyên tắc ít đặc quyền nhất (Least Privilege).

6. Giám sát và ghi nhật ký bảo mật:

  • Đảm bảo rằng các bản ghi (logs) quan trọng liên quan đến bảo mật (audit logs, access logs, application logs) được thu thập, tập trung và gửi đến hệ thống giám sát.
  • Cấu hình cảnh báo (alerts) cho các sự kiện bảo mật đáng ngờ.

7. Triển khai theo từng giai đoạn:

Sử dụng các chiến lược triển khai như Canary Releases, Blue-Green Deployments để giảm thiểu rủi ro khi đưa thay đổi ra môi trường sản xuất. Điều này cho phép phát hiện sớm các vấn đề bảo mật trong một phần nhỏ người dùng trước khi triển khai rộng rãi.

Các phương pháp tốt nhất

  • Tự động hóa là ưu tiên hàng đầu;
  • Infrastructure as Code (IaC) và Policy as Code (PaC): Quản lý toàn bộ hạ tầng và các chính sách bảo mật dưới dạng mã nguồn.
  • Immutable Infrastructure: Triển khai các máy chủ hoặc container mới hoàn toàn thay vì cập nhật tại chỗ.
  • Least Privilege Principle: Chỉ cấp quyền truy cập và tài nguyên cần thiết cho ứng dụng, người dùng và dịch vụ.
  • Zero Trust Architecture: Triển khai các nguyên tắc Zero Trust, giả định rằng không có thực thể nào đáng tin cậy cho đến khi được xác minh rõ ràng.
  • Security Baselines: Thực thi các baseline bảo mật cho tất cả môi trường và thành phần hạ tầng.
  • Secrets Management tích hợp: Không bao giờ đưa thông tin nhạy cảm (secrets) vào hệ thống kiểm soát phiên bản hoặc môi trường phát triển, sử dụng giải pháp quản lý thông tin nhạy cảm chuyên biệt và tích hợp chúng vào pipeline triển khai.
  • Quản lý cấu hình tập trung: Đảm bảo rằng tất cả các máy chủ và dịch vụ được cấu hình an toàn và đồng nhất.
  • Đánh giá an toàn tự động trước triển khai: Trước khi triển khai, chạy các công cụ kiểm tra tự động để đảm bảo môi trường đích tuân thủ chính sách bảo mật và không có cấu hình sai sót.
  • GitOps: Một framework nổi lên gần đây, giúp tự động hóa hạ tầng bằng cách áp dụng các nguyên tắc DevOps như quản lý phiên bản, cộng tác, tuân thủ và CI/CD. Các nhóm vận hành áp dụng GitOps sẽ quản lý cấu hình hạ tầng dưới dạng mã nguồn (Infrastructure as Code). Các file cấu hình GitOps đảm bảo tạo ra môi trường hạ tầng giống nhau trong mỗi lần triển khai, giống như source code ứng dụng luôn tạo ra cùng một bản build khi biên dịch.

Công cụ

  • Công cụ CI/CD: Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps Pipelines, CircleCI.
  • Công cụ Infrastructure as Code (IaC): Terraform, AWS CloudFormation, Azure Resource Manager (ARM) Templates, Google Cloud Deployment Manager.
  • Công cụ quản lý cấu hình: Ansible, Puppet, Chef, SaltStack.
  • Công cụ quản lý thông tin nhạy cảm: HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, Google Cloud Secret Manager.
  • Công cụ quét lỗ hổng hạ tầng và tuân thủ: OpenSCAP , Aqua Security Trivy, Lynis, Clair, Anchore Engine, Prowler (cho AWS), ScoutSuite (cho Cloud Security
  • Công cụ quản lý danh tính và truy cập: Okta, Auth0, Ping Identity, AWS IAM, Azure Active Directory, Google Cloud IAM.
  • Công cụ giám sát và ghi nhật ký: ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Datadog, Prometheus/Grafana, Security Information and Event Management (SIEM) systems.
  • Công cụ GitOps: Spacelift, ArgoCD, FluxCD, Codefresh, GitLab, Terraform, OpenTofu, Werf.

DevSecOps workflow bước 6: Vận hành (Operate)

Khi vận hành, các bản vá và cập nhật bảo mật được tích hợp thường xuyên thông qua quy trình tự động, đảm bảo phần mềm luôn được bảo vệ trước các mối đe dọa ngày càng phát triển. Bước này cũng cần các giao thức ứng phó sự cố đảm bảo phản ứng nhanh chóng với các vi phạm bảo mật, giảm thiểu tác động và cho phép phục hồi nhanh chóng.

Nhiệm vụ chính

1. Giám sát bảo mật liên tục:

  • Thu thập nhật ký từ ứng dụng, hệ thống, mạng và các dịch vụ đám mây.
  • Sử dụng các công cụ giám sát hiệu suất ứng dụng (APM), giám sát cơ sở hạ tầng và giám sát bảo mật để phát hiện các hoạt động bất thường hoặc chỉ báo tấn công.
  • Theo dõi Security KPIs.

2. Quản lý sự kiện và thông tin bảo mật (SIEM):

  • Tập trung phân tích các sự kiện bảo mật từ nhiều nguồn khác nhau để phát hiện các mối đe dọa phức tạp.
  • Tạo cảnh báo tự động khi phát hiện vi phạm.

3. Phản ứng sự cố:

  • Thiết lập quy trình phản ứng sự cố rõ ràng để xử lý các vi phạm hoặc tấn công.
  • Phát hiện, phân tích, ngăn chặn, loại bỏ, phục hồi và học hỏi sau sự cố.

4. Quản lý lỗ hổng và vá lỗi:

  • Liên tục quét môi trường sản xuất và các thành phần (OS, thư viện, dịch vụ) để phát hiện lỗ hổng mới.
  • Theo dõi các security patch mới nhất và ưu tiên áp dụng kịp thời và có kiểm soát.
  • Quản lý vòng đời của các lỗ hổng đã biết, đảm bảo chúng được khắc phục hoặc giảm thiểu.

5. Bảo mật Runtime:

  • Sử dụng các giải pháp bảo mật runtime để bảo vệ ứng dụng khỏi các cuộc tấn công ngay tại thời điểm thực thi.
  • Triển khai Web Application Firewall (WAF) để bảo vệ ứng dụng khỏi các cuộc tấn công cấp độ web.

6. Quản lý thay đổi và cấu hình an toàn:

  • Đảm bảo rằng mọi thay đổi đối với môi trường sản xuất đều được kiểm soát, kiểm toán và tuân thủ chính sách bảo mật.
  • Thực hiện kiểm tra tính toàn vẹn để phát hiện các thay đổi không mong muốn hoặc trái phép.

7. Kiểm toán và tuân thủ liên tục:

  • Thu thập bằng chứng và báo cáo để chứng minh sự tuân thủ các quy định và tiêu chuẩn (ví dụ: GDPR, HIPAA, PCI DSS).
  • Thực hiện kiểm toán bảo mật định kỳ để đánh giá tư thế bảo mật tổng thể.

8. Đào tạo và nâng cao nhận thức cho đội ngũ vận hành về các mối đe dọa mới, các thực hành bảo mật tốt nhất và quy trình phản ứng sự cố.

Các phương pháp tốt nhất

  • Thiết lập hệ thống giám sát toàn diện và tập trung thu thập dữ liệu từ tất cả các layer (ứng dụng, hệ điều hành, mạng, đám mây). 
  • Xây dựng kế hoạch phản ứng sự cố chủ động và diễn tập thường xuyên để giảm thiểu tác động của một sự cố bảo mật.
  • Automated Patching và Vulnerability Management, áp dụng patching càng nhiều càng tốt để giảm thiểu “thời gian tiếp xúc” với các lỗ hổng đã biết.
  • Zero Trust Micro-segmentation: Micro-segmentation và áp dụng các chính sách Zero Trust để hạn chế lateral movement (di chuyển ngang) của hacker trong trường hợp bị xâm nhập.
  • Sử dụng SOAR (Security Orchestration, Automation & Response) để tăng tốc độ phản ứng.
  • Tăng cường bảo mật Runtime như không cho phép thực thi mã từ các vị trí không đáng tin cậy, giới hạn tài nguyên,…
  • Thu thập và phân tích nhật ký chuyên sâu để phục vụ cho việc điều tra và phân tích bảo mật.
  • Tích hợp Threat Intelligence để cập nhật các quy tắc phát hiện, nhận biết các kỹ thuật tấn công mới và chủ động phòng ngừa.
  • Sau mỗi sự cố, phân tích nguyên nhân gốc rễ và điều chỉnh quy trình, công cụ, hoặc thiết kế, ngăn ngừa tái diễn.

Công cụ

  • Hệ thống quản lý thông tin và sự kiện bảo mật (SIEM): Splunk Enterprise Security, Microsoft Sentinel (Azure), IBM QRadar, Exabeam, ELK Stack (Elasticsearch, Logstash, Kibana), Wazuh.
  • Nền tảng quản lý và phân tích nhật ký: Datadog, New Relic, Dynatrace, Sumo Logic.
  • Công cụ giám sát hiệu suất ứng dụng: Dynatrace Application Security, New Relic APM, Datadog APM.
  • WAF – Web Application Firewall: Cloudflare WAF, Akamai Kona Site Defender, ModSecurity (cho Apache/Nginx), AWS WAF, Azure Application Gateway WAF.
  • Bảo vệ ứng dụng Self-Protection trong runtime: Contrast Protect, Waratek, Hdiv.
  • Công cụ quét lỗ hổng và quản lý bản vá: Tenable Nessus, Qualys VMDR, Microsoft SCCM, Red Hat Satellite, Ansible Automation Platform.
  • Công cụ tự động hóa, điều phối và phản ứng bảo mật: Palo Alto Networks Cortex XSOAR (Demisto), Splunk SOAR (Phantom), Swimlane, Securonix.
  • Công cụ kiểm tra tuân thủ liên tục: Cloud Security Posture Management (CSPM) tools (Wiz, Lacework, Prisma Cloud), OpenSCAP, CIS-CAT Pro Assessor.

DevSecOps workflow bước 7: Giám sát

Trong DevSecOps, giám sát là quá trình theo dõi liên tục hiệu năng hệ thống và các mối đe dọa bảo mật bằng các công cụ chuyên dụng. Phân tích và cảnh báo theo thời gian thực cung cấp thông tin chi tiết về các lỗ hổng hoặc vi phạm tiềm ẩn, giúp các nhóm phản ứng nhanh chóng. 

Giám sát hiệu quả giúp nhận diện các hành vi bất thường có thể là dấu hiệu của rủi ro bảo mật, từ đó tạo cơ hội can thiệp sớm. Hệ thống giám sát cũng cần được cập nhật thường xuyên để thích ứng với các lỗ hổng mới, đảm bảo duy trì mức độ bảo vệ cao nhất.

Nhiệm vụ chính

1. Thu thập nhật ký và sự kiện:

  • Thu thập nhật ký từ mọi nguồn có thể: Application logs, system logs, network logs, firewall logs, database logs, cloud service logs, security tool logs.
  • Đảm bảo nhật ký chuẩn hóa, tập trung và có thể truy vấn dễ dàng.

2. Giám sát hiệu suất và tình trạng:

  • Giám sát các chỉ số hiệu suất của ứng dụng và hạ tầng (CPU, RAM, disk I/O, network traffic, response times).
  • Theo dõi tình trạng hoạt động của các dịch vụ và thành phần hệ thống.

3. Phân tích nhật ký bảo mật:

  • Sử dụng hệ thống SIEM hoặc một số nền tảng phân tích nhật ký để tương quan các sự kiện từ các nguồn khác nhau.
  • Phát hiện mẫu tấn công, hoạt động đáng ngờ, vi phạm chính sách hoặc lỗ hổng đang bị khai thác.

4. Giám sát tính toàn vẹn của file:

Theo dõi các thay đổi trái phép đối với các file hệ thống quan trọng, file cấu hình hoặc file ứng dụng.

5. Giám sát hành vi người dùng:

Sử dụng Machine Learning để phân tích hành vi của người dùng và các thực thể (applications, hosts) nhằm phát hiện hành vi lệch chuẩn, có thể chỉ ra sự thỏa hiệp hoặc tài khoản bị chiếm đoạt.

6. Quản lý lỗ hổng liên tục: 

  • Quét lỗ hổng định kỳ trên hạ tầng và ứng dụng đang chạy trong môi trường sản xuất.
  • Cập nhật cơ sở dữ liệu lỗ hổng và áp dụng các patch kịp thời.

7. Giám sát tuân thủ:

  • Liên tục kiểm tra và báo cáo về việc tuân thủ các quy định (GDPR, HIPAA, PCI DSS) và chính sách bảo mật nội bộ.
  • Đảm bảo rằng các cấu hình an toàn vẫn được duy trì.

8. Cảnh báo và thông báo:

  • Thiết lập các ngưỡng và quy tắc để tự động gửi cảnh báo cho các nhóm liên quan (On-call engineers, Security Operations Center – SOC) khi phát hiện các sự kiện hoặc chỉ số bất thường.
  • Đảm bảo thông báo được gửi qua các kênh phù hợp (email, Slack, PagerDuty).

9. Phản hồi tự động:

Trong một số trường hợp, cấu hình các hành động phản hồi tự động đối với các sự kiện bảo mật cụ thể như cô lập một máy chủ bị xâm nhập, chặn địa chỉ IP độc hại…

10. Phân tích nguyên nhân và cải tiến:

  • Sử dụng dữ liệu giám sát để phân tích nguyên nhân gốc rễ của các sự cố bảo mật.
  • Đưa ra đề xuất cải tiến cho các giai đoạn trước của quy trình DevSecOps (Lập kế hoạch, Phát triển, Xây dựng, Kiểm tra, Triển khai) để ngăn chặn các vấn đề tương tự trong tương lai.

Các phương pháp tốt nhất

  • Holistic Visibility: Đảm bảo có khả năng nhìn thấy mọi layer của stack (ứng dụng, hạ tầng, mạng, đám mây) thông qua các công cụ giám sát tập trung.
  • Giám sát chủ động để chủ động tìm kiếm các dấu hiệu bất thường có thể dẫn đến sự cố.
  • Sử dụng Security as Code để đảm bảo tính nhất quán và khả năng kiểm soát phiên bản.
  • Tích hợp sâu rộng bằng cách kết nối các công cụ giám sát bảo mật với các hệ thống CI/CD, quản lý sự cố và quản lý lỗ hổng để tạo luồng thông tin liền mạch.
  • Intelligent Analytics: Tận dụng Machine Learning và AI để phân tích lượng lớn dữ liệu nhật ký, phát hiện các mối đe dọa tinh vi mà các quy tắc tĩnh có thể bỏ sót.
  • Cảnh báo có ngữ cảnh để các nhóm phản ứng có thể hành động nhanh chóng.
  • Tích hợp Threat Intelligence (IP xấu, danh sách tên miền độc hại, IOCs) vào hệ thống giám sát để tăng cường khả năng phát hiện.
  • Diễn tập phản ứng sự cố để đảm bảo rằng các nhóm biết cách phản ứng hiệu quả khi có sự cố thực tế.
  • Feedback Loop với nhóm phát triển và bảo mật để học hỏi và cải thiện các phiên bản ứng dụng sau.

Công cụ

  • Hệ thống quản lý thông tin và sự kiện bảo mật (SIEM): Splunk Enterprise Security, Microsoft Sentinel, IBM QRadar, Exabeam, Wazuh.
  • Nền tảng giám sát và phân tích nhật ký: ELK Stack (Elasticsearch, Logstash, Kibana), Datadog, New Relic, Grafana Loki, Sumo Logic.
  • Giám sát hiệu suất ứng dụng (APM): Dynatrace, New Relic, Datadog.
  • Công cụ giám sát tính toàn vẹn của File (FIM): Wazuh (tích hợp), OSSEC (mã nguồn mở), SolarWinds Security Event Manager, Tripwire.
  • Phân tích hành vi người dùng và thực thể (UEBA – User and Entity Behavior Analytics): Splunk UBA, Microsoft Sentinel UEBA, Exabeam.
  • Công cụ giám sát tư thế bảo mật đám mây (CSPM – Cloud Security Posture Management): Wiz, Lacework, Palo Alto Networks Prisma Cloud, Orca Security.
  • Giải pháp EDR – Endpoint Detection and Response: CrowdStrike Falcon, Microsoft Defender for Endpoint, SentinelOne.
  • Nền tảng tự động hóa, điều phối và phản ứng bảo mật (SOAR): Palo Alto Networks Cortex XSOAR, Splunk SOAR, Swimlane. 
  • Công cụ quản lý lỗ hổng: Tenable Nessus, Qualys VMDR.

Câu hỏi thường gặp về DevSecOps Workflow

Tự động hóa đóng vai trò gì trong DevSecOps?

Tự động hóa giúp giảm thiểu lỗi do con người khi kiểm tra thủ công, đồng thời tăng tốc quy trình làm việc và tối ưu hóa các nguồn lực có sẵn. Các công cụ tự động hóa bảo mật đóng vai trò thiết yếu đối với CI/CD pipeline vì chúng cho phép hoạt động liền mạch xuyên suốt từng giai đoạn. 

Các công cụ tự động hóa có thể tích hợp trực tiếp vào IDE, hỗ trợ nhà phát triển phát hiện và ưu tiên xử lý lỗ hổng ngay trong giai đoạn phát triển. Chúng cũng có khả năng tùy chỉnh và mở rộng, phù hợp với quy trình làm việc đặc thù của từng doanh nghiệp. Việc lựa chọn và triển khai công cụ tự động hóa cần dựa trên phân tích rủi ro, nhu cầu bảo mật thực tế và ngân sách hiện có.

Sự khác biệt giữa DevSecOps và Cybersecurity là gì?

DevSecOps tích hợp bảo mật ngay trong vòng đời phát triển phần mềm (SDLC), đảm bảo xử lý sớm các lỗ hổng. Trong khi đó, Cybersecurity rộng hơn, bao gồm toàn bộ việc bảo vệ hệ thống, mạng và dữ liệu khỏi nhiều mối đe dọa trên khắp môi trường công nghệ thông tin.

Những sai lầm cần tránh khi áp dụng DevSecOps là gì?

Một số sai lầm phổ biến khi triển khai DevSecOps bao gồm:

  • Tự động hóa quá sớm: Tự động hóa là điều cần thiết, tuy nhiên, tự động hóa các quy trình còn đang lỗi chỉ làm vấn đề nghiêm trọng thêm. Hãy đảm bảo bạn đã chuẩn hóa và bảo mật các quy trình làm việc trước khi thực hiện tự động hóa.
  • Bỏ qua yếu tố văn hóa: Không có công cụ nào có thể giải quyết hoàn toàn được vấn đề về con người. Cần xây dựng sự liên kết, văn hóa giao tiếp và phối hợp chặt chẽ giữa các team Dev, Sec và Ops trước khi triển khai tự động hóa DevSecOps. 
  • Bỏ qua bảo mật: Không nên xem bảo mật là tùy chọn, mà nên ưu tiên tích hợp bảo mật sớm và liên tục, tránh tình trạng gây tắc nghẽn sau này trong pipeline.
  • Quá tải công cụ: Việc lựa chọn quá nhiều công cụ rời rạc sẽ gây khó khăn cho việc quản lý và tăng nguy cơ xuất hiện các điểm mù bảo mật. Giải pháp là lựa chọn công cụ một cách có chiến lược, tập trung vào khả năng tích hợp và hợp nhất. Mục tiêu cuối cùng là tinh gọn và đơn giản hóa mọi thứ.

Vai trò của các nhóm phát triển, bảo mật, cơ sở hạ tầng, QA là gì trong quy trình CI/CD?

CI/CD pipeline cho phép cập nhật mã nguồn thường xuyên, xây dựng lại và triển khai tự động các mô-đun đã cập nhật vào môi trường sản xuất. Nó được kích hoạt bởi công cụ CI và công cụ CD, bao gồm các tác vụ chuẩn bị và thực thi, như thiết lập kho lưu trữ mã nguồn, xây dựng quy trình, bảo mật quy trình, mô tả môi trường triển khai, tạo pipeline phân phối, kiểm tra mã và thực thi pipeline, kích hoạt công cụ runtime và bảng điều khiển.

Các nhóm phát triển, bảo mật, cơ sở hạ tầng, QA và triển khai đóng góp vào CI/CD pipeline bằng cách tùy chỉnh, cập nhật và nâng cao các công cụ được sử dụng.

Tổng kết

DevSecOps chính là “chìa khóa” hình thành văn hóa phát triển phần mềm mà bảo mật là trách nhiệm chung, xuyên suốt toàn bộ vòng đời sản phẩm. Hãy áp dụng một cách có hệ thống 7 bước ITviec vừa chia sẻ – từ việc nhúng bảo mật vào mã nguồn và tự động hóa kiểm thử, cho đến triển khai an toàn và giám sát liên tục. Từ đó bạn sẽ có được nền tảng vững chắc để phát triển các ứng dụng một cách nhanh chóng, mà vẫn chủ động phòng ngừa và ứng phó với các mối đe dọa bảo mật.

Đọc chi tiết: DevSecOps roadmap: Lộ trình học chi tiết 13 bước cho người mới

TÁC GIẢ
Hà My
Hà My

Senior Content Writer

Với hơn 2 năm làm việc trong lĩnh vực công nghệ thông tin, My dành nhiều thời gian nghiên cứu, phỏng vấn các chuyên gia IT trong các lĩnh vực Digital, Software Development, Game… Niềm đam mê của My không chỉ dừng lại ở việc tìm hiểu về những xu hướng mới như UX/UI Design hay các công nghệ tiên tiến như AI, ChatGPT, mà còn nghiên cứu những kiến thức nền tảng mà mọi kỹ sư công nghệ thông tin cần am hiểu. Bạn có thể tìm thấy ở các bài viết của My những thông tin đa dạng về Mobile app, Interface, Feature, Framework, Database… cũng như tìm hiểu công nghệ, công cụ nền tảng trong ngành IT.