Chuyển đến nội dung chính
VulnScan có thể chạy bằng CLI trong quy trình CI/CD để phát hiện sớm lỗ hổng trước khi ứng dụng được đưa ra môi trường sản xuất. Cách triển khai phổ biến là quét môi trường thử nghiệm hoặc bản triển khai xem trước sau khi ứng dụng đã được dựng và triển khai tạm thời.

Khi nào nên tích hợp CI/CD

Nên tích hợp VulnScan vào CI/CD khi:
  • Ứng dụng có môi trường thử nghiệm hoặc bản triển khai xem trước ổn định.
  • Đội phát triển muốn phát hiện lỗi web/API trước khi phát hành.
  • Quy trình phát hành cần bằng chứng kiểm tra bảo mật.
  • Bạn muốn tạo báo cáo JSON/CSV để đưa vào hệ thống quản lý lỗi.
  • Bạn muốn quét định kỳ các điểm truy cập quan trọng sau mỗi bản dựng.
Không nên quét trực tiếp môi trường sản xuất trong mỗi commit nếu chưa có kiểm soát tải, phạm vi và thời gian chạy phù hợp.

Mô hình tích hợp khuyến nghị

  1. Build ứng dụng.
  2. Triển khai lên môi trường thử nghiệm hoặc môi trường xem trước.
  3. Chạy smoke test để đảm bảo ứng dụng hoạt động.
  4. Chạy VulnScan CLI trên URL của môi trường thử nghiệm.
  5. Xuất kết quả JSON/CSV vào thư mục artifacts.
  6. Đẩy kết quả sang hệ thống quản lý lỗi hoặc kho lưu trữ báo cáo.
  7. Tùy chính sách, chặn phát hành nếu có phát hiện Critical hoặc High.

Ví dụ lệnh CLI

vulnscan scan --target https://staging.acme.com --output ./security-reports --format json,csv --lang en
Với API cần token:
vulnscan scan --target https://api-staging.acme.com -H "Authorization: Bearer $VULNSCAN_API_TOKEN" --output ./security-reports --format json,csv
Với danh sách nhiều mục tiêu:
vulnscan scan --target-file ./ci-targets.txt --output ./security-reports --format json,csv

GitHub Actions

name: Security Scan

on:
  workflow_dispatch:
  push:
    branches: [main]

jobs:
  vulnscan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Run VulnScan
        env:
          VULNSCAN_TOKEN: ${{ secrets.VULNSCAN_TOKEN }}
        run: |
          ./vulnscan scan \
            --target https://staging.acme.com \
            -H "Authorization: Bearer $VULNSCAN_TOKEN" \
            --output ./security-reports \
            --format json,csv \
            --lang en

      - name: Upload reports
        uses: actions/upload-artifact@v4
        with:
          name: vulnscan-reports
          path: security-reports/

GitLab CI

vulnscan:
  stage: test
  script:
    - ./vulnscan scan --target https://staging.acme.com --output ./security-reports --format json,csv --lang en
  artifacts:
    when: always
    paths:
      - security-reports/

Jenkins Pipeline

pipeline {
  agent any
  stages {
    stage('VulnScan') {
      steps {
        sh './vulnscan scan --target https://staging.acme.com --output ./security-reports --format json,csv --lang en'
      }
    }
  }
  post {
    always {
      archiveArtifacts artifacts: 'security-reports/**', fingerprint: true
    }
  }
}

Chính sách chặn phát hành

Mỗi tổ chức có ngưỡng khác nhau. Một chính sách thực tế có thể là:
  • Chặn phát hành nếu có phát hiện Critical.
  • Yêu cầu phê duyệt bảo mật nếu có phát hiện High mới.
  • Cho phép Medium/Low đi tiếp nếu đã có kế hoạch xử lý.
  • Luôn lưu JSON/CSV để phục vụ truy vết.
Nếu dùng chính sách chặn tự động, hãy bắt đầu ở chế độ chỉ cảnh báo trong vài sprint đầu để giảm rủi ro làm gián đoạn phát hành vì cấu hình chưa ổn định.

Bảo mật bí mật truy cập

  • Lưu token trong secret store của hệ thống CI/CD.
  • Không in token ra log.
  • Dùng token riêng cho môi trường thử nghiệm.
  • Thu hồi token khi quy trình CI/CD không còn dùng.
  • Giới hạn quyền của token ở mức chỉ đủ cho kiểm thử.

Kết nối với Web UI

Khi CLI dùng cùng cấu hình không gian làm việc với Web UI, kết quả quét có thể được lưu vào cùng cơ sở dữ liệu để đội bảo mật xem lại trong giao diện. Cách này giúp kết quả từ quy trình CI/CD, lượt quét thủ công và lịch quét định kỳ nằm trong cùng lịch sử kiểm tra.