Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số, tốc độ phát hành tính năng phần mềm đóng vai trò then chốt trong việc duy trì năng lực cạnh tranh của doanh nghiệp. Theo khảo sát từ DORA (DevOps Research and Assessment), các tổ chức áp dụng mô hình phát triển và vận hành phần mềm (DevOps) có tần suất triển khai mã nguồn cao hơn gấp 208 lần và thời gian phục hồi sau sự cố nhanh hơn gấp 2604 lần so với các mô hình truyền thống. Tuy nhiên, việc tối ưu hóa tốc độ phân phối thông qua Tích hợp liên tục (Continuous Integration - CI) và Triển khai liên tục (Continuous Deployment - CD) thường bỏ qua các rào cản kiểm soát an ninh thông tin. Theo báo cáo từ HPE Security FortifyGartner, mặc dù 99% chuyên gia đồng ý rằng an toàn thông tin là thành phần cốt lõi, nhưng có tới hơn 70% các nhóm dự án coi kiểm thử bảo mật truyền thống là "nút thắt cổ chai" làm chậm trễ tiến độ phát hành.

Thực trạng này dẫn đến các lỗ hổng nghiêm trọng trong tầng ứng dụng như Tiêm mã SQL (SQL Injection - SQLi), Tấn công kịch bản liên trang (Cross-Site Scripting - XSS), và rò rỉ dữ liệu nhạy cảm thường chỉ được phát hiện ở giai đoạn tiền phát hành (Pre-production) hoặc sau khi đã bị tin tặc khai thác trên môi trường thực tế (Production). Chi phí khắc phục một lỗ hổng an ninh tại giai đoạn vận hành cao gấp 30 đến 100 lần so với khi được xử lý ngay tại giai đoạn thiết kế và viết mã nguồn (Source Code).

Đồ án khóa luận tốt nghiệp kỹ sư ngành An toàn Thông tin tại Trường Đại học Công nghệ Thông tin - ĐHQG-HCM (thực hiện bởi sinh viên Trần Gia Bảo và Trương Thảo Vy dưới sự hướng dẫn của ThS. Đặng Lê Bảo Chương và ThS. Bùi Thanh Bình) đã tập trung giải quyết bài toán cốt lõi: Xây dựng và thực nghiệm quy trình tích hợp an toàn thông tin toàn diện vào vòng đời phát triển và vận hành phần mềm (DevSecOps) dựa trên nền tảng container hóa Kubernetes/K3s, tự động hóa toàn bộ việc quét lỗ hổng mã nguồn tĩnh (SAST), phân tích động ứng dụng (DAST) và quản lý tập trung.

[Phát triển phần mềm (Dev)] ───► [Kiểm thử bảo mật tự động (Sec)] ───► [Vận hành liên tục (Ops)]
              ▲                                                                 │
              └──────────────── Feedback & Metrics Dashboard ───────────────────┘

Mục tiêu nghiên cứu cụ thể

  1. Nghiên cứu và chuẩn hóa quy trình DevSecOps: Xác định các điểm kiểm soát an toàn thông tin trọng yếu trên đường ống CI/CD tự động theo nguyên lý "Dịch chuyển về bên trái" (Shift-Left Security).
  2. Tích hợp bộ công cụ kiểm thử bảo mật mã nguồn mở: Kết hợp giải pháp kiểm thử tĩnh (Static Application Security Testing - SAST) với SonarQube và kiểm thử động (Dynamic Application Security Testing - DAST) với OWASP Zed Attack Proxy (ZAP).
  3. Thiết kế và xây dựng hệ thống quản lý an ninh tập trung: Phát triển ứng dụng Web Dashboard và hệ thống RESTful API nhằm thu thập, phân tích và trực quan hóa các lỗi an ninh theo từng lượt commit và bản build.
  4. Triển khai thực nghiệm trên ứng dụng Web đa tầng: Đánh giá hiệu năng, tỷ lệ phát hiện lỗ hổng và tính khả thi trên nền tảng container hóa K3s/Docker với ứng dụng web xây dựng bằng Node.js, Express và Angular.

Phạm vi và giới hạn của đề tài

  • Phạm vi nghiên cứu: Xây dựng hạ tầng CI/CD/CTD trên cụm máy chủ nội bộ (On-premises/Private Cloud) sử dụng K3s; tích hợp các công cụ GitLab, Jenkins, SonarQube, Nexus Repository, OWASP ZAP; kiểm thử trên ứng dụng web Node.js/Angular.
  • Giới hạn: Tập trung vào các lỗ hổng bảo mật phổ biến thuộc danh mục OWASP Top 10 Web Application Security Risks (đặc biệt là SQLi, XSS, Broken Authentication, Sensitive Data Exposure); chưa triển khai các module giám sát hành vi tại thời gian chạy thực (Runtime Application Self-Protection - RASP).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi thiết kế hệ thống, nhóm nghiên cứu đã phân tích và so sánh ba phương pháp tiếp cận phổ biến trong phát triển phần mềm:

Tiêu chí đánh giá Mô hình Thác nước (Waterfall) Mô hình DevOps truyền thống Mô hình DevSecOps đề xuất
Điểm tích hợp bảo mật Giai đoạn cuối trước khi bàn giao (Pen-test thủ công) Phụ thuộc vào kiểm thử chức năng, bảo mật rời rạc Tích hợp tự động tại mọi giai đoạn của CI/CD
Tần suất phát hành Hàng tháng / Hàng quý Nhiều lần trong ngày (High Velocity) Nhiều lần trong ngày nhưng có cổng bảo mật (Quality Gate)
Chi phí sửa lỗi an ninh Rất cao ($$$$) do phát hiện muộn Cao ($$$) khi phát sinh lỗi trên Production Thấp ($) do khắc phục ngay tại IDE/Commit
Mức độ tự động hóa Thấp (< 20%) Cao (> 80% CI/CD) Toàn diện (> 95% CI/CD/Sec Pipeline)
Khả năng phản hồi lỗi Vài tuần đến vài tháng Vài giờ (cho lỗi logic) Dưới 10 phút (tự động ngắt build khi vi phạm)

Phân loại yêu cầu hệ thống theo mô hình MoSCoW:

  • Must-have: Đường ống Jenkinsfile tự động; tích hợp SonarQube SAST; tích hợp OWASP ZAP DAST; tự động chặn (Break build) khi phát hiện lỗ hổng mức Critical/High; trang Dashboard quản lý báo cáo tập trung.
  • Should-have: Tự động thông báo trạng thái qua Webhook; lưu trữ Image an toàn trên Private Docker Registry (Nexus); triển khai ứng dụng bằng Helm Chart trên K3s Cluster.
  • Could-have: Quét phụ thuộc thư viện bên thứ ba (Software Composition Analysis - SCA); tự động sinh môi trường Staging tạm thời (Ephemeral Staging).
  • Won't-have: Tự động sinh mã vá lỗi (Auto-remediation AI); tích hợp phân tích an ninh mạng tầng vật lý.

Thiết kế hệ thống

Kiến trúc DevSecOps tổng thể được thiết kế theo mô hình phân tán, kết hợp giữa môi trường điều phối tự động hóa và cụm máy chủ container hóa K3s (Lightweight Kubernetes):

       +-------------------------------------------------------------------------------+
       |                               DEVELOPMENT CYCLE                               |
       |  [Developer] ---git push---> [GitLab SCM] ---Webhook---> [Jenkins CI/CD Engine]|
       +-----------------------------------------------------------------------+-------+
                                                                               |
       +-----------------------------------------------------------------------v-------+
       |                           SECURITY AUTOMATION GATES                           |
       |  +--------------------+   +-----------------------+   +--------------------+  |
       |  | SonarQube (SAST)   |-->| Quality Gate Decision |--->| Docker Build &     |  |
       |  | Static Code Engine |   | (Pass/Fail Threshold) |   | Nexus Registry     |  |
       |  +--------------------+   +-----------------------+   +---------+----------+  |
       +-----------------------------------------------------------------|-------------+
                                                                         |
       +-----------------------------------------------------------------v-------------+
       |                    CONTAINERIZED ORCHESTRATION (K3s CLUSTER)                  |
       |  +-------------------------------------+   +-------------------------------+  |
       |  | Staging Environment (Pods)          |   | Production Environment (Pods) |  |
       |  |   ^                                 |   |   ^                           |  |
       |  |   └── [OWASP ZAP DAST Scanner]      |   |   └── [Helm Rolling Update]   |  |
       |  +-------------------------------------+   +-------------------------------+  |
       +-----------------------------------------------------------------+-------------+
                                                                         |
       +-----------------------------------------------------------------v-------------+
       |                      CENTRAL MANAGEMENT & MONITORING                          |
       |      [Management Web App (Angular/NodeJS)] <--- REST APIs ---> [Database]     |
       +-------------------------------------------------------------------------------+

Ngăn xếp công nghệ (Technology Stack) với phiên bản cụ thể:

  • Hệ thống quản lý mã nguồn (SCM): GitLab CE v13.12.
  • Bộ điều phối CI/CD: Jenkins Core v2.289.2 LTS chạy trên hạ tầng Master/Agent.
  • Công cụ kiểm thử tĩnh (SAST): SonarQube Community Edition v8.9 LTS (với SonarScanner CLI v4.6).
  • Công cụ kiểm thử động (DAST): OWASP ZAP v2.10.0 (tích hợp qua ZAP API / Baseline Scan CLI).
  • Quản lý Artifacts & Container Registry: Sonatype Nexus OSS v3.30.1.
  • Nền tảng Container & Điều phối: Docker Engine v20.10.7, K3s v1.21.2+k3s1 (kèm Helm v3.5.4).
  • Ứng dụng quản lý bảo mật: Node.js v14.17.0 LTS, Express v4.17.1, Angular v11.2.14, SQLite3/MySQL v8.0.
  • Hệ thống lưu trữ chia sẻ: NFS Server v4 trên hệ điều hành Ubuntu Server 20.04 LTS.

Thiết kế Web API cho Trang quản lý tập trung:

Hệ thống cung cấp giao diện lập trình ứng dụng RESTful nhằm thu thập và phân tích kết quả bảo mật từ các giai đoạn trong pipeline:

Phương thức Đường dẫn Endpoint Tham số đầu vào (Payload / Query) Chức năng kỹ thuật
POST /api/commit commit_id, author, branch, timestamp Nhận dữ liệu webhook ghi nhận lượt commit mới từ GitLab
GET /detailreport commit_id (String), tool (SAST/DAST) Truy xuất chi tiết các lỗ hổng (Line number, CVE, Severity)
GET /search keyword (String), severity (High/Med/Low) Tìm kiếm và lọc các lỗ hổng theo từ khóa và mức độ rủi ro
POST /api/webhook/sonar projectKey, status, qualityGate Nhận thông báo tự động từ SonarQube để quyết định luồng pipeline

Methodology

Quy trình phát triển được triển khai theo mô hình Agile/Scrum thích ứng, chia thành 5 giai đoạn chính (Milestones) trong thời gian 16 tuần:

[Tuần 1-3: Nghiên cứu & Thiết kế] ──► [Tuần 4-7: Cài đặt Hạ tầng] ──► [Tuần 8-11: Tích hợp Pipeline] ──► [Tuần 12-14: Thử nghiệm] ──► [Tuần 15-16: Đánh giá]
  • Đánh giá rủi ro và biện pháp xử lý:
    • Rủi ro: Quét DAST toàn diện tốn nhiều thời gian, làm nghẽn tiến trình CI/CD.
    • Biện pháp: Thiết lập chiến lược quét đa tầng: Quét nhanh (Baseline Scan) tại mỗi lần commit; quét chuyên sâu (Active Full Scan) định kỳ vào ban đêm hoặc trước đợt phát hành lớn.
    • Rủi ro: Tỷ lệ cảnh báo giả (False Positives) cao trong SAST gây gián đoạn quy trình.
    • Biện pháp: Hiệu chỉnh tập luật (Ruleset Quality Profile) trên SonarQube để chỉ kích hoạt chặn build với các lỗi nghiêm trọng (Vulnerabilities & Security Hotspots - Severity High/Critical).

Implementation và kết quả

Development process

Trọng tâm của quy trình là tập tin kịch bản Jenkinsfile điều phối việc kiểm thử bảo mật tự động qua từng giai đoạn (Stages):

pipeline {
    agent any
    environment {
        NEXUS_REGISTRY = 'registry.local:8082'
        IMAGE_NAME = 'web-vulnerable-demo'
        APP_VERSION = "${env.BUILD_NUMBER}"
        SONAR_HOST = 'http://sonarqube.local:9000'
    }
    stages {
        stage('Checkout Source') {
            steps {
                git branch: 'main', credentialsId: 'gitlab-credentials', url: 'http://gitlab.local/devsecops/demo-web.git'
            }
        }
        stage('Static Application Security Testing (SAST)') {
            steps {
                withSonarQubeEnv('SonarQube-Server') {
                    sh """
                    sonar-scanner \
                      -Dsonar.projectKey=${IMAGE_NAME} \
                      -Dsonar.sources=. \
                      -Dsonar.host.url=${SONAR_HOST} \
                      -Dsonar.login=env.SONAR_AUTH_TOKEN
                    """
                }
            }
        }
        stage('Quality Gate Enforcement') {
            steps {
                timeout(time: 5, unit: 'MINUTES') {
                    waitForQualityGate abortPipeline: true
                }
            }
        }
        stage('Container Build & Push') {
            steps {
                sh """
                docker build -t ${NEXUS_REGISTRY}/${IMAGE_NAME}:${APP_VERSION} .
                docker push ${NEXUS_REGISTRY}/${IMAGE_NAME}:${APP_VERSION}
                """
            }
        }
        stage('Deploy to Staging (K3s)') {
            steps {
                sh "helm upgrade --install ${IMAGE_NAME}-staging ./helm-chart --set image.tag=${APP_VERSION} --namespace staging"
            }
        }
        stage('Dynamic Application Security Testing (DAST)') {
            steps {
                sh """
                docker run --rm -t owasp/zap2docker-stable zap-baseline.py \
                  -t http://staging-web.local -r zap-report.html -I
                """
            }
        }
        stage('Deploy to Production') {
            steps {
                sh "helm upgrade --install ${IMAGE_NAME}-prod ./helm-chart --set image.tag=${APP_VERSION} --namespace production"
            }
        }
    }
    post {
        failure {
            sh "curl -X POST -H 'Content-Type: application/json' -d '{\"status\":\"FAILED\", \"build\":\"${APP_VERSION}\"}' http://mgmt-dashboard.local/api/notify"
        }
    }
}

Khắc phục lỗ hổng an ninh trên ứng dụng Web thực nghiệm:

Nhóm nghiên cứu đã xây dựng một ứng dụng web thử nghiệm chứa các lỗi bảo mật điển hình và tiến hành cấu hình hệ thống phát hiện cũng như viết mã nguồn phòng chống:

Xử lý lỗ hổng SQL Injection bằng Parameterized Queries (Node.js/Express):

// Mã nguồn không an toàn (Vulnerable to SQLi)
app.post('/api/login', (req, res) => {
    const query = `SELECT * FROM users WHERE username = '${req.body.username}' AND password = '${req.body.password}'`;
    db.all(query, (err, rows) => { /* Xử lý kết quả */ });
});

// Mã nguồn an toàn đã sửa đổi (Secure Remediation)
app.post('/api/login', (req, res) => {
    const query = `SELECT id, username, role FROM users WHERE username = ? AND password = ?`;
    db.all(query, [req.body.username, req.body.password], (err, rows) => {
        if (err) return res.status(500).json({ error: 'Database query error' });
        if (rows.length === 0) return res.status(401).json({ message: 'Invalid credentials' });
        return res.status(200).json({ data: rows[0] });
    });
});

Xử lý lỗ hổng XSS trên giao diện người dùng (Angular/DOM Sanitizer):

import { Component } from '@angular/core';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';

@Component({
  selector: 'app-user-profile',
  template: `<div [innerHTML]="sanitizedContent"></div>`
})
export class UserProfileComponent {
  sanitizedContent: SafeHtml;
  constructor(private sanitizer: DomSanitizer) {}

  updateProfileComment(rawComment: string) {
    // Ngăn chặn các kịch bản thực thi độc hại (Script Tags, eval, payload injection)
    this.sanitizedContent = this.sanitizer.sanitize(1, rawComment) || '';
  }
}

Testing và validation

Hệ thống được kiểm thử thực tế với kịch bản liên tục commit mã nguồn có chủ ý chèn các đoạn mã độc hại để đo lường khả năng kích hoạt cơ chế bảo vệ:

+---------------------------------------------------------------------------------+
|                       KỊCH BẢN THỰC NGHIỆM VÀ ĐO LƯỜNG                          |
+--------------------------+--------------------+----------------+----------------+
| Loại kiểm thử            | Công cụ thực thi   | Số mẫu thử     | Tỷ lệ bắt lỗi  |
+--------------------------+--------------------+----------------+----------------+
| Static SQL Injection     | SonarQube SAST     | 15 test cases  | 100% (15/15)   |
| Static Reflected XSS     | SonarQube SAST     | 18 test cases  | 94.4% (17/18)  |
| Stored Sensitive Secrets | GitGuardian/Sonar  | 10 test cases  | 100% (10/10)   |
| Dynamic Active Attacks   | OWASP ZAP (DAST)   | 42 payloads    | 90.5% (38/42)  |
+--------------------------+--------------------+----------------+----------------+
           THỜI GIAN THỰC THI PIPELINE THEO TỪNG GIAI ĐOẠN (TỔNG: ~7.3 PHÚT)
  ┌─────────────────────────────────────────────────────────────────────────────┐
  │ Checkout Code (15s)                                                         │
  │ ███ SonarQube SAST Scan (1.8m)                                              │
  │ █ Quality Gate Wait (10s)                                                   │
  │ ████ Docker Build & Nexus Push (1.2m)                                       │
  │ █ Deploy to K3s Staging (45s)                                               │
  │ ████████ OWASP ZAP DAST Baseline (3.0m)                                     │
  │ █ Helm Deploy to Production (30s)                                           │
  └─────────────────────────────────────────────────────────────────────────────┘

Kết quả đạt được

  1. Hiệu năng và độ tin cậy: Thời gian hoàn thành một vòng lặp kiểm thử bảo mật tự động chỉ mất trung bình 7.3 phút cho 15,000 dòng mã nguồn (LOC), cho phép triển khai liên tục nhiều lần trong ngày.
  2. Kiểm soát rủi ro tức thì: 100% các bản build chứa lỗi nghiêm trọng (Critical) bị tự động ngắt (Pipeline Aborted) tại bước Quality Gate, ngăn chặn hoàn toàn việc đẩy mã nguồn chứa lỗ hổng sang môi trường Production.
  3. Quản trị trực quan hóa: Trang Web Dashboard hiển thị đầy đủ thông tin số lượng commit, mức độ rủi ro, phân loại lỗ hổng theo chuẩn CVE/CWE, giúp lập trình viên tra cứu và sửa lỗi ngay trong ca làm việc.

Đổi mới và đóng góp

  • Tích hợp sâu chuỗi công cụ hoàn toàn mở: Đề tài chứng minh việc xây dựng mô hình DevSecOps chuẩn doanh nghiệp không nhất thiết phải tốn chi phí bản quyền đắt đỏ từ các giải pháp đóng gói thương mại (như Veracode, Checkmarx), mà có thể vận hành ổn định trên các nền tảng mã nguồn mở phổ biến.
  • Tối ưu hóa tài nguyên với kiến trúc K3s: Việc ứng dụng K3s thay thế cụm Kubernetes tiêu chuẩn giúp giảm mức tiêu thụ RAM của Control Plane từ hơn 2GB xuống còn dưới 512MB, cho phép triển khai giải pháp linh hoạt ngay cả trên hạ tầng phần cứng giới hạn của các doanh nghiệp vừa và nhỏ (SMEs).
  • Cơ chế phản hồi đa kênh và Dashboard tự phát triển: Đóng góp ứng dụng quản lý tập trung tùy biến kết nối trực tiếp với API của SonarQube và Jenkins, rút ngắn thời gian trung bình để phát hiện lỗ hổng (Mean Time to Detect - MTTD) từ 4.5 ngày xuống dưới 10 phút.

Ứng dụng thực tế và triển khai

Tình huống ứng dụng thực tế

  • Doanh nghiệp phát triển phần mềm theo đơn đặt hàng (Software Outsourcing): Đảm bảo mã nguồn bàn giao cho khách hàng vượt qua các đợt kiểm tra an ninh nghiêm ngặt mà không phát sinh thêm chi phí thuê chuyên gia pen-test độc lập cho từng sprint.
  • Hệ thống thương mại điện tử & Fintech vừa và nhỏ: Tự động rà quét các lỗ hổng liên quan đến rò rỉ dữ liệu thẻ, SQLi, và xác thực phiên người dùng mỗi khi cập nhật tính năng thanh toán.

Yêu cầu phần cứng và hạ tầng triển khai

Node / Thành phần Cấu hình tối thiểu (Minimum Specs) Cấu hình đề xuất (Recommended) Hệ điều hành & Phần mềm
Jenkins Master & Toolchain 4 vCPU, 8 GB RAM, 80 GB SSD 8 vCPU, 16 GB RAM, 200 GB SSD Ubuntu 20.04 LTS, Docker, Java OpenJDK 11
K3s Server (Master Node) 2 vCPU, 4 GB RAM, 40 GB SSD 4 vCPU, 8 GB RAM, 100 GB SSD Ubuntu 20.04 LTS, K3s Binary, SQLite3
K3s Agent (Worker Node) 2 vCPU, 4 GB RAM, 40 GB SSD 4 vCPU, 8 GB RAM, 100 GB SSD Ubuntu 20.04 LTS, Containerd Runtime
NFS Server & Storage 1 vCPU, 2 GB RAM, 100 GB HDD 2 vCPU, 4 GB RAM, 500 GB SSD NFS Kernel Server v4

Lộ trình triển khai 4 giai đoạn cho doanh nghiệp (12 tuần):

  1. Giai đoạn 1 (Tuần 1-3): Chuẩn hóa quy trình Git Workflow, thiết lập hạ tầng GitLab và máy chủ Jenkins.
  2. Giai đoạn 2 (Tuần 4-6): Cài đặt cụm K3s, Private Nexus Registry, cấu hình các đường ống CI/CD cơ bản.
  3. Giai đoạn 3 (Tuần 7-9): Tích hợp cổng kiểm tra tĩnh SonarQube SAST và thiết lập bộ quy tắc Quality Gate.
  4. Giai đoạn 4 (Tuần 10-12): Đưa DAST OWASP ZAP vào môi trường Staging, đào tạo văn hóa bảo mật cho đội ngũ lập trình viên.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Độ bao phủ của DAST: Công cụ OWASP ZAP chạy theo kịch bản Baseline tự động khó có thể rà soát toàn bộ các luồng nghiệp vụ phức tạp đòi hỏi nhiều bước xác thực phiên đa yếu tố (MFA).
  • Hạ tầng K3s đơn điểm (Single Master): Mặc định sử dụng cơ sở dữ liệu SQLite nhúng, nếu máy chủ K3s Server gặp sự cố phần cứng thì khả năng điều phối cụm sẽ bị gián đoạn (mặc dù các container đang chạy vẫn hoạt động).

Hướng phát triển trong tương lai

  • Nâng cấp cụm K3s lên mô hình High Availability (HA) sử dụng cơ sở dữ liệu phân tán Etcd3 hoặc PostgreSQL.
  • Tích hợp thêm module quét lỗ hổng hình ảnh container (Container Image Scanning) như Trivy hoặc Clair trực tiếp tại tầng Nexus Registry.
  • Áp dụng trí tuệ nhân tạo (AI/ML) để tự động phân tích logs, giảm thiểu tỷ lệ báo cáo sai lệch (False Positives) và tự động tạo gợi ý mã sửa lỗi (Pull Request Suggestions).

Đối tượng hưởng lợi

+---------------------------------------------------------------------------------+
|                       GIÁ TRỊ MANG LẠI CHO CÁC NHÓM ĐỐI TƯỢNG                   |
+-------------------------+-------------------------------------------------------+
| Sinh viên & Người học   | Tiếp cận kiến trúc thực tế, nắm vững kỹ năng kỹ sư    |
|                         | DevSecOps, hiểu sâu về mô hình CAMS và Shift-Left.   |
+-------------------------+-------------------------------------------------------+
| Đội ngũ Lập trình viên  | Nhận phản hồi an ninh tức thì sau mỗi lần đẩy code,  |
|                         | nâng cao kỹ năng viết mã an toàn (Secure Coding).     |
+-------------------------+-------------------------------------------------------+
| Doanh nghiệp phần mềm   | Tiết kiệm 40-60% chi phí xử lý sự cố an ninh, rút    |
|                         | ngắn thời gian Time-to-Market, nâng cao uy tín.      |
+-------------------------+-------------------------------------------------------+
| Nhóm nghiên cứu & R&D   | Cung cấp bộ khung thực nghiệm đo lường hiệu quả các   |
|                         | công cụ mã nguồn mở trên hạ tầng Kubernetes thu nhỏ.  |
+-------------------------+-------------------------------------------------------+

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật phần cứng và môi trường tối thiểu để triển khai hệ thống DevSecOps này là gì?

Hệ thống yêu cầu tối thiểu 2 máy chủ vật lý hoặc máy ảo (VM) chạy Ubuntu Server 20.04 LTS: một máy chủ CI/CD & Security Tools (4 vCPU, 8GB RAM) và một máy chủ K3s Cluster Node (2 vCPU, 4GB RAM) có kết nối mạng nội bộ băng thông 1Gbps.

2. Giới hạn khả năng mở rộng (Scalability limits) của K3s và giải pháp nâng cấp khi hệ thống mở rộng quy mô lớn?

K3s với SQLite nhúng phù hợp cho cụm từ 1 đến 10 worker nodes. Khi mở rộng lên quy mô hàng chục ngàn pods cho doanh nghiệp lớn, hệ thống có thể chuyển đổi backend database của K3s sang cụm cơ sở dữ liệu phân tán (External MySQL / PostgreSQL HA) hoặc chuyển đổi liền mạch sang cụm Kubernetes tiêu chuẩn (K8s) mà không cần viết lại Helm Charts hay Jenkinsfile.

3. Làm thế nào để tích hợp mô hình này vào các hệ thống CI/CD hoặc hạ tầng sẵn có của doanh nghiệp?

Mô hình sử dụng kiến trúc chuẩn hóa Jenkinsfile dạng Declarative và cấu hình Kubernetes manifest/Helm tiêu chuẩn. Doanh nghiệp chỉ cần cài đặt thêm các plugin SonarQube Scanner và OWASP ZAP trên hệ thống Jenkins hiện hữu và gắn cấu hình Webhook từ kho mã nguồn (GitLab/GitHub) mà không làm xáo trộn quy trình phát triển sẵn có.

4. Nhu cầu bảo trì, cập nhật rule-set bảo mật và vận hành hệ thống định kỳ như thế nào?

Hệ thống cần được cập nhật định kỳ các phiên bản mới của SonarQube Quality Profiles (tối thiểu 1 lần/tháng) và cập nhật cơ sở dữ liệu các lỗ hổng mới từ OWASP ZAP/NVD CVE hàng tuần. Việc này có thể thiết lập tự động hóa thông qua các tác vụ cron-job trong K3s.

5. Bảng phân tích chi phí (Cost breakdown) và thời gian hoàn vốn (ROI timeline) khi triển khai giải pháp?

Do sử dụng hoàn toàn bộ công cụ mã nguồn mở (Jenkins, GitLab CE, SonarQube Community, OWASP ZAP, K3s, Nexus OSS), chi phí bản quyền phần mềm là 0 USD. Doanh nghiệp chỉ đầu tư chi phí hạ tầng máy chủ và nhân sự vận hành. Ước tính mô hình giúp hoàn vốn (ROI) trong vòng 3 đến 6 tháng nhờ loại bỏ chi phí kiểm thử an ninh thủ công ngoài luồng và ngăn chặn các sự cố rò rỉ dữ liệu có thể gây thiệt hại hàng chục nghìn USD.


Kết luận

Đồ án khóa luận tốt nghiệp kỹ sư ngành An toàn Thông tin đã giải quyết trọn vẹn bài toán tích hợp an ninh vào quy trình phát triển và vận hành phần mềm (DevSecOps). Thông qua việc xây dựng thành công đường ống CI/CD/Sec tự động hóa với Jenkins, SonarQube, OWASP ZAP và K3s, đề tài chứng minh tính khả thi vượt trội của phương pháp "Shift-Left Security" trong việc nâng cao chất lượng mã nguồn mà không làm suy giảm tốc độ bàn giao sản phẩm.

Hệ thống cung cấp một nền tảng thực nghiệm vững chắc, sẵn sàng áp dụng cho các doanh nghiệp vừa và nhỏ để bảo vệ các ứng dụng web trước các mối đe dọa an ninh mạng ngày càng phức tạp. Độc giả và các kỹ sư quan tâm có thể ứng dụng ngay bộ kịch bản kịch bản Jenkinsfile, kiến trúc K3s và các giải pháp phòng chống mã độc đã được chuẩn hóa trong đề tài để nâng cấp hạ tầng phát triển phần mềm của tổ chức mình.