Bảo mật Pipeline DevOps năm 2026: SAST, DAST, Supply Chain và Câu hỏi Phỏng vấn

Hướng dẫn toàn diện về bảo mật pipeline DevOps 2026: triển khai SAST, DAST, SCA, phát hiện secrets, SBOM và các câu hỏi phỏng vấn DevSecOps phổ biến.

Bảo mật Pipeline DevOps năm 2026: SAST, DAST, Supply Chain và Câu hỏi Phỏng vấn

Bảo mật pipeline DevOps đòi hỏi việc tích hợp các kiểm tra bảo mật ở mọi giai đoạn của quy trình CI/CD, từ pre-commit hooks đến giám sát production. Báo cáo State of DevSecOps 2026 của Datadog cho thấy 87% tổ chức đang vận hành các dịch vụ có ít nhất một lỗ hổng có thể khai thác, trong khi các cuộc tấn công supply chain phần mềm hiện gây thiệt hại cho nền kinh tế toàn cầu hơn 80 tỷ USD mỗi năm.

Thứ tự Ưu tiên Security Tooling

Bắt đầu với phát hiện secrets (tác động cao nhất, tỷ lệ false-positive thấp nhất), sau đó thêm SCA cho các CVE đã biết, SAST có điều chỉnh, IaC scanning, và cuối cùng là DAST. Mỗi công cụ phải chứng minh giá trị trước khi thêm công cụ tiếp theo.

SAST: Phân tích Tĩnh Phát hiện Lỗ hổng Trước khi Merge

Static Application Security Testing (SAST) phân tích source code mà không cần thực thi. Công cụ này phân tích codebase, xây dựng abstract syntax tree, và so khớp các pattern với các signature lỗ hổng đã biết. Chạy SAST trên mỗi pull request có thể phát hiện SQL injection, XSS, và credentials được hardcode trước khi code đến branch chính.

Semgrep đã trở thành công cụ SAST open-source de facto vào năm 2026. Khác với các scanner dựa trên regex, Semgrep hiểu cấu trúc code và hỗ trợ custom rules bằng YAML.

yaml
# .github/workflows/sast.yml
name: SAST Scan

on:
  pull_request:
    branches: [main, develop]

jobs:
  semgrep:
    runs-on: ubuntu-latest
    container:
      image: semgrep/semgrep:latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Run Semgrep
        run: semgrep scan --config=auto --sarif --output=semgrep.sarif
        
      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: semgrep.sarif

Flag --config=auto tải các community rules phù hợp với ngôn ngữ được phát hiện. Output SARIF tích hợp với tab Security của GitHub để theo dõi các phát hiện theo thời gian.

DAST: Kiểm thử Runtime Tìm ra những gì Phân tích Tĩnh Bỏ lỡ

Dynamic Application Security Testing (DAST) tấn công ứng dụng đang chạy để tìm các lỗ hổng chỉ xuất hiện khi runtime. Broken authentication, authorization flaws, và các lỗi business logic yêu cầu các HTTP request thực tế để phát hiện. SAST không thể tìm ra endpoint admin thiếu access control phù hợp, nhưng DAST sẽ cố truy cập mà không có credentials và đánh dấu sự lộ lọt.

OWASP ZAP vẫn là công cụ DAST open-source được triển khai rộng rãi nhất. ZAP 3.0, được phát hành đầu năm 2026, đã thêm hỗ trợ native cho scanning GraphQL và gRPC.

yaml
# .github/workflows/dast.yml
name: DAST Scan

on:
  deployment:
    types: [created]

jobs:
  zap-scan:
    runs-on: ubuntu-latest
    steps:
      - name: ZAP Full Scan
        uses: zaproxy/action-full-scan@v0.12.0
        with:
          target: ${{ secrets.STAGING_URL }}
          rules_file_name: '.zap/rules.tsv'
          cmd_options: '-a -j -l WARN -z "-config api.disablekey=true"'
          
      - name: Upload Report
        uses: actions/upload-artifact@v4
        with:
          name: zap-report
          path: report_html.html

DAST chạy sau deployment vì cần một target đang hoạt động. Môi trường staging đóng vai trò là bề mặt kiểm thử, giữ cho production cách ly khỏi traffic scanning.

DAST trong Production

Chạy scan DAST chủ động trên production có nguy cơ kích hoạt rate limits, làm hỏng dữ liệu, hoặc kích hoạt cảnh báo security monitoring. Sử dụng môi trường staging phản ánh cấu hình production.

SCA: Dependency Scanning cho các Lỗ hổng Đã biết

Software Composition Analysis (SCA) quét các dependencies dựa trên cơ sở dữ liệu lỗ hổng như National Vulnerability Database và GitHub Advisory Database. Một transitive dependency có lỗ hổng có thể làm lộ toàn bộ ứng dụng. Báo cáo Datadog 2026 cho thấy 42% dịch vụ phụ thuộc vào các thư viện không còn được bảo trì tích cực.

Trivy quét containers, filesystems, và git repositories để tìm lỗ hổng trong một binary duy nhất. Công cụ này tạo output SBOM ở định dạng CycloneDX và SPDX.

yaml
# .github/workflows/sca.yml
name: Dependency Scan

on:
  push:
    branches: [main]
  schedule:
    - cron: '0 6 * * *'  # Daily at 6 AM

jobs:
  trivy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/trivy-action@0.28.0
        with:
          scan-type: 'fs'
          scan-ref: '.'
          format: 'sarif'
          output: 'trivy-results.sarif'
          severity: 'CRITICAL,HIGH'
          
      - name: Upload Trivy scan results
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: 'trivy-results.sarif'

Scan theo lịch hàng ngày phát hiện các CVE mới được công bố ngay cả khi không có thay đổi code. Lọc theo severity CRITICAL và HIGH ngăn ngừa alert fatigue từ các phát hiện rủi ro thấp.

Sẵn sàng chinh phục phỏng vấn DevOps?

Luyện tập với mô phỏng tương tác, flashcards và bài kiểm tra kỹ thuật.

Bảo mật Supply Chain: SBOM và SLSA Provenance

EU Cyber Resilience Act, với các nghĩa vụ báo cáo có hiệu lực từ tháng 9 năm 2026, yêu cầu tạo Software Bill of Materials (SBOM) cho các sản phẩm bán tại EU. SBOM liệt kê mọi thành phần trong phần mềm, bao gồm direct dependencies, transitive dependencies, và phiên bản của chúng.

SLSA (Supply-chain Levels for Software Artifacts) bổ sung SBOM bằng cách xác minh cách phần mềm được xây dựng. SBOM trả lời "những thành phần nào có trong phần mềm này?" trong khi SLSA trả lời "quy trình build có đáng tin cậy không?"

yaml
# .github/workflows/supply-chain.yml
name: Supply Chain Security

on:
  push:
    tags:
      - 'v*'

jobs:
  build-with-provenance:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
      attestations: write
    steps:
      - uses: actions/checkout@v4
      
      - name: Build container image
        run: docker build -t myapp:${{ github.ref_name }} .
        
      - name: Generate SBOM
        uses: anchore/sbom-action@v0.17.0
        with:
          image: myapp:${{ github.ref_name }}
          format: cyclonedx-json
          output-file: sbom.json
          
      - name: Sign with Cosign
        uses: sigstore/cosign-installer@v3.7.0
        
      - name: Sign image and attach SBOM
        run: |
          cosign sign --yes myapp:${{ github.ref_name }}
          cosign attach sbom --sbom sbom.json myapp:${{ github.ref_name }}
          cosign sign --yes --attachment sbom myapp:${{ github.ref_name }}

Cosign của Sigstore ký các artifact sử dụng keyless signing được hỗ trợ bởi Fulcio certificate authority. Chữ ký liên kết artifact với CI workflow đã tạo ra nó, cho phép xác minh rằng image đến từ pipeline đáng tin cậy.

Phát hiện Secrets: Tuyến Phòng thủ Đầu tiên

Hardcoded secrets vẫn là phát hiện bảo mật phổ biến nhất trong các codebase. AWS access keys, database passwords, và API tokens được commit vào version control đã gây ra các vụ breach ở mọi quy mô. Phát hiện secrets chạy pre-commit để chặn credentials trước khi chúng vào repository.

Gitleaks phát hiện secrets sử dụng regex patterns và phân tích entropy. Pre-commit hook ngăn secrets không bao giờ được commit.

yaml
# .pre-commit-config.yaml
repos:
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.21.2
    hooks:
      - id: gitleaks
        args: ['--verbose']
yaml
# .github/workflows/secrets.yml
name: Secrets Detection

on:
  pull_request:

jobs:
  gitleaks:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
          
      - name: Gitleaks scan
        uses: gitleaks/gitleaks-action@v2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Tùy chọn fetch-depth: 0 clone toàn bộ history, cho phép Gitleaks quét tất cả commits trong PR, không chỉ commit mới nhất.

Câu hỏi Phỏng vấn DevSecOps: Recruiter Hỏi những gì

Phỏng vấn DevSecOps đánh giá cả kiến thức bảo mật và kinh nghiệm CI/CD thực tế. Các câu hỏi dưới đây thường xuất hiện trong các cuộc phỏng vấn năm 2026 cho các vị trí DevOps senior và platform engineering. Xem thêm các câu hỏi bảo mật pipeline tại module phỏng vấn CI/CD Pipeline Security.

"Làm thế nào để triển khai shift-left security trong một pipeline hiện có?"

Shift-left security di chuyển việc kiểm thử sớm hơn trong vòng đời phát triển. Triển khai thực tế bao gồm thêm pre-commit hooks cho phát hiện secrets, SAST scans trên pull requests, và kiểm tra SCA trong giai đoạn build. Chìa khóa là áp dụng từng bước: bắt đầu với phát hiện secrets vì có tỷ lệ false-positive thấp nhất và tín hiệu cao nhất, sau đó thêm SCA cho các CVE đã biết, rồi điều chỉnh các rules SAST để giảm nhiễu trước khi kích hoạt nó như một blocking check.

"Giải thích sự khác biệt giữa SAST và DAST. Khi nào sử dụng từng loại?"

SAST phân tích source code mà không thực thi. Công cụ này tìm SQL injection, XSS, và mật mã không an toàn bằng cách so khớp pattern với cấu trúc code. SAST chạy sớm, trên mỗi PR, vì chỉ cần code.

DAST tấn công ứng dụng đang chạy. Công cụ này tìm authentication bypasses, broken access control, và các lỗ hổng injection chỉ xuất hiện khi runtime. DAST chạy sau deployment đối với môi trường staging.

Hai công cụ bổ sung cho nhau. SAST phát hiện lỗi coding trước merge; DAST xác minh rằng ứng dụng đã deploy hoạt động an toàn. Pipeline trưởng thành chạy cả hai.

"SBOM là gì và tại sao cần thiết?"

Software Bill of Materials liệt kê mọi thành phần trong phần mềm, bao gồm direct và transitive dependencies với phiên bản chính xác. Các yêu cầu quy định như EU Cyber Resilience Act bắt buộc tạo SBOM cho các sản phẩm vào thị trường EU từ tháng 9 năm 2026.

Về mặt thực tế, SBOM cho phép phản hồi sự cố nhanh chóng. Khi một CVE mới được phát hành, đội bảo mật có thể truy vấn cơ sở dữ liệu SBOM để xác định mọi dịch vụ đang chạy thành phần có lỗ hổng thay vì quét tất cả repositories thủ công.

"Làm thế nào để ngăn ngừa alert fatigue trong security tooling?"

Alert fatigue xảy ra khi developers bỏ qua các phát hiện bảo mật vì tỷ lệ signal-to-noise quá thấp. Ngăn ngừa đòi hỏi điều chỉnh mỗi công cụ trước khi kích hoạt blocking gates. Đối với SAST, vô hiệu hóa các rules tạo false positive trong codebase và kích hoạt dần sau khi làm sạch. Đối với SCA, tập trung vào các phát hiện severity CRITICAL và HIGH với các exploit đã biết. Đối với DAST, cấu hình baseline scans để loại trừ false positives khỏi các lần chạy tiếp theo.

Metric cần theo dõi là time-to-fix cho các lỗ hổng thực sự. Nếu con số đó tăng, developers đang bỏ qua alerts.

Chuẩn bị Phỏng vấn

Những câu hỏi này kiểm tra kinh nghiệm thực tế. Chuẩn bị các ví dụ từ pipelines thực tế, bao gồm các công cụ cụ thể, quyết định cấu hình, và metrics trước và sau khi triển khai.

Bảo mật Container và Runtime

Container image scanning phát hiện lỗ hổng trước deployment. Runtime security giám sát containers trong production cho hành vi bất thường. Sự kết hợp này giải quyết cả các lỗ hổng đã biết (CVE trong base images) và các mối đe dọa chưa biết (containers bị xâm phạm, cryptominers).

Trivy quét images như một phần của build pipeline. Falco giám sát hành vi runtime sử dụng eBPF.

yaml
# .github/workflows/container-security.yml
name: Container Security

on:
  push:
    branches: [main]

jobs:
  scan-image:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Build image
        run: docker build -t myapp:${{ github.sha }} .
        
      - name: Scan image
        uses: aquasecurity/trivy-action@0.28.0
        with:
          image-ref: myapp:${{ github.sha }}
          format: 'table'
          exit-code: '1'
          severity: 'CRITICAL'
          ignore-unfixed: true

Flag ignore-unfixed: true bỏ qua các lỗ hổng không có patch khả dụng. Điều này ngăn việc chặn deployments cho các CVE hiện không thể khắc phục.

Đối với runtime security, các rules Falco phát hiện hoạt động đáng ngờ trong containers đang chạy. Module container supply chain security đề cập chi tiết về image signing và admission control.

IaC Security: Scanning Terraform và Kubernetes Manifests

Infrastructure as Code đưa ra các rủi ro bảo mật ở lớp cấu hình. IAM policies quá permissive, S3 buckets có thể truy cập công khai, và databases không mã hóa đến từ các default không an toàn trong các IaC templates.

Checkov quét Terraform, CloudFormation, Kubernetes, Helm, và Dockerfiles để tìm misconfigurations.

yaml
# .github/workflows/iac-scan.yml
name: IaC Security Scan

on:
  pull_request:
    paths:
      - 'terraform/**'
      - 'k8s/**'
      - 'helm/**'

jobs:
  checkov:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Run Checkov
        uses: bridgecrewio/checkov-action@v12
        with:
          directory: .
          framework: terraform,kubernetes,helm
          output_format: sarif
          output_file_path: checkov.sarif
          soft_fail: false
          
      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: checkov.sarif

Path filter đảm bảo IaC scans chỉ chạy khi các file infrastructure thay đổi, giảm thời gian CI cho các thay đổi chỉ application.

Bắt đầu luyện tập!

Kiểm tra kiến thức với mô phỏng phỏng vấn và bài kiểm tra kỹ thuật.

Pipeline DevSecOps Hoàn chỉnh cho 2026

Một pipeline DevSecOps sẵn sàng production năm 2026 tích hợp các công cụ này ở mỗi giai đoạn:

  • Pre-commit: Gitleaks (secrets), SAST local tùy chọn
  • Pull request: Semgrep (SAST), Trivy (SCA), Checkov (IaC)
  • Build: Container image scanning, tạo SBOM
  • Pre-deploy: Image signing với Cosign, admission control với Kyverno
  • Post-deploy: DAST với ZAP đối với staging
  • Runtime: Falco cho container monitoring, cloud security posture management

Stack miễn phí (Semgrep, Trivy, ZAP, Gitleaks, Checkov, Falco) bao phủ mọi danh mục. Các công cụ thương mại thêm dashboards tập trung, quản lý policy, và giảm công sức điều chỉnh, nhưng phạm vi bảo mật có thể đạt được mà không cần chi phí license.

Các tổ chức chuẩn bị cho vai trò DevSecOps nên thực hành xây dựng các pipelines này trong các dự án cá nhân. Module cloud identity và secrets management đề cập phía quản lý secrets của phương trình này.

Thử thách hôm nay

Bạn có tìm ra lỗi trong DevOps không?

Một đoạn mã thật, một lỗi ẩn, mỗi ngày một lượt. Không cần tài khoản để thử.

Anthony Fillion-Maillet

Viết bởi

Anthony Fillion-Maillet

Người sáng lập SharpSkill

Lập trình viên fullstack hơn 10 năm. Anh điều hành SharpSkill và chịu trách nhiệm về mọi nội dung đăng tại đây.

Cập nhật ngày 15 tháng 9, 2026

Chia sẻ

Bài viết liên quan