Hướng dẫn tích hợp Snyk trong CI/CD: Jenkins, GitHub Actions và các nền tảng phổ biến
Việc tích hợp Snyk vào pipeline CI/CD giúp tự động phát hiện lỗ hổng bảo mật mọi lúc mọi nơi trong quá trình phát triển phần mềm. Bài viết hướng dẫn chi tiết cách setup Snyk trên các nền tảng CI/CD phổ biến như GitHub Actions, Jenkins, GitLab CI và Azure Pipelines, đồng thời giải thích cách sử dụng các lệnh snyk test và snyk monitor, cũng như xử lý sự cố thường gặp.

Hướng dẫn tích hợp Snyk trong CI/CD: Jenkins, GitHub Actions và các nền tảng phổ biến
Tích hợp công cụ Snyk vào pipeline CI/CD là cách hiệu quả nhất để phát hiện và ngăn chặn các lỗ hổng bảo mật sớm trong quá trình phát triển và triển khai phần mềm. Việc thực hiện thủ công những bước quét bảo mật thường không đảm bảo, dễ bị bỏ sót do con người hoặc giới hạn thời gian. Với Snyk, các bước quét được chạy tự động mỗi khi có pull request, build hoặc deployment, đảm bảo mọi thay đổi mã nguồn đều được kiểm tra kỹ lưỡng.
Bài viết này sẽ hướng dẫn cách tích hợp Snyk vào các nền tảng CI/CD phổ biến hiện nay như GitHub Actions, Jenkins, GitLab CI, Azure Pipelines, đồng thời giải thích khi nào sử dụng lệnh snyk test để kiểm tra và snyk monitor để theo dõi trạng thái bảo mật dự án. Ngoài ra, còn có hướng dẫn quét ảnh container và xử lý sự cố thường gặp khi dùng Snyk trong CI/CD.
Những chuẩn bị cơ bản trước khi tích hợp Snyk vào pipeline CI/CD
Trước khi bắt đầu, bạn cần chuẩn bị:
- Tài khoản và API token của Snyk: Đăng ký tài khoản tại app.snyk.io và tạo API token trong phần cài đặt tài khoản. Token này dùng để xác thực CLI của Snyk trong môi trường CI/CD.
- Snyk CLI đã được cài đặt trong môi trường CI: Bạn có thể cài qua npm (
npm install -g snyk), tải bản binary độc lập hoặc dùng image Docker chính thức của Snyk đã gắn sẵn CLI. - Biến môi trường SNYK_TOKEN trong CI: Mỗi nền tảng CI có cách lưu trữ biến bí mật riêng. Hãy lưu API token làm biến bí mật và gọi nó thông qua biến môi trường
SNYK_TOKENtrong pipeline.
Nếu bạn đã dùng Snyk bản local hoặc qua tích hợp GitHub, token hiện tại có thể dùng cho pipeline CI/CD.
Hiểu về hai lệnh snyk test và snyk monitor
snyk test – Bước chốt bảo mật trên pipeline
Lệnh này quét nhanh và trả về mã thoát (exit code):
- 0: Không phát hiện lỗ hổng ở mức độ nghiêm trọng đã định, pipeline tiếp tục chạy.
- 1: Có lỗ hổng phát hiện, pipeline dừng và block merge hoặc deploy.
- 2: Quá trình quét lỗi do vấn đề xác thực, mạng hoặc cấu hình.
Đây chính là cánh cổng kiểm soát, dùng để chặn các pull request mang lỗ hổng bảo mật.
snyk monitor – Theo dõi trạng thái bảo mật trong thực tế
Lệnh này không trả về pass/fail, thay vào đó nó upload snapshot cấu trúc phụ thuộc dự án lên dashboard Snyk. Snyk theo dõi liên tục các lỗ hổng mới được công bố ảnh hưởng đến dự án và gửi cảnh báo cho bạn dù khi chạy snyk test trước đó chưa phát hiện.
Dùng lệnh này sau khi deploy thành công để theo dõi đúng trạng thái bảo mật của môi trường production.
Mô hình tích hợp được khuyên dùng
- Với mỗi pull request: chạy
snyk testđể chặn mã không an toàn. - Khi merge vào nhánh chính (main): chạy
snyk testxác nhận lại, rồi chạysnyk monitorđể cập nhật dashboard.
Hướng dẫn tích hợp Snyk trên các nền tảng CI/CD phổ biến
GitHub Actions
GitHub Actions là nền tảng CI phổ biến, Snyk cung cấp nhiều action chính thức hỗ trợ nhanh chóng:
- Tạo file workflow
.github/workflows/snyk.yml.
name: Snyk Security Scan
on:
pull_request:
branches: [main, develop]
push:
branches: [main]
jobs:
snyk-test:
name: Snyk Open Source
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=high
- Thay action tương ứng với ngôn ngữ bạn dùng (Node.js, Python, Java, Docker...).
- Thêm job cho SAST scan với Snyk Code nếu muốn quét mã nguồn.
Jenkins
Jenkins hỗ trợ qua plugin Snyk Security hoặc chạy trực tiếp CLI:
- Với plugin: cài plugin từ quản lý plugin, thêm credential API token, cấu hình tool CLI tự động.
- Jenkinsfile mẫu dùng plugin:
pipeline {
agent any
tools { snyk 'snyk-latest' }
environment {
SNYK_TOKEN = credentials('snyk-api-token')
}
stages {
stage('Checkout') { steps { checkout scm } }
stage('Install Dependencies') { steps { sh 'npm ci' } }
stage('Snyk Security Scan') {
steps {
snykSecurity(
snykInstallation: 'snyk-latest',
snykTokenId: 'snyk-api-token',
severity: 'high',
failOnIssues: true
)
}
}
stage('Snyk Monitor') {
when { branch 'main' }
steps { sh 'snyk monitor' }
}
}
post { always { archiveArtifacts artifacts: '**/snyk_report.html', allowEmptyArchive: true } }
}
- Với CLI: cài trực tiếp CLI qua npm trong pipeline rồi chạy các câu lệnh
snyk test,snyk code test, vàsnyk monitor.
GitLab CI
- Lưu token vào biến CI/CD
SNYK_TOKEN. .gitlab-ci.ymlmẫu:
stages:
- test
- security
- monitor
snyk-dependency-scan:
stage: security
image: snyk/snyk-cli:npm
script:
- snyk test --severity-threshold=high
only:
- merge_requests
- main
allow_failure: false
snyk-code-scan:
stage: security
image: snyk/snyk-cli:npm
script:
- snyk code test --severity-threshold=high
only:
- merge_requests
- main
allow_failure: false
snyk-monitor:
stage: monitor
image: snyk/snyk-cli:npm
script:
- snyk monitor
only:
- main
- Với GitLab Ultimate, có thể xuất kết quả Snyk ra định dạng báo cáo bảo mật của GitLab để hiển thị trong merge request.
Azure Pipelines
- Cài đặt extension Snyk Security Scan hoặc chạy CLI trực tiếp.
- Mẫu pipeline YAML:
trigger:
branches:
include: [main]
pr:
branches:
include: [main]
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '20.x'
- script: npm ci
displayName: 'Install dependencies'
- task: SnykSecurityScan@1
inputs:
serviceConnectionEndpoint: 'SnykConnection'
testType: 'app'
severityThreshold: 'high'
failOnIssues: true
monitorWhen: 'always'
Tinh chỉnh khi pipeline fail do phát hiện lỗ hổng
- Dùng flag
--severity-thresholdđể chỉ fail pipeline khi phát hiện lỗ hổng có mức nghiêm trọng từ mức đã định (ví dụ:high,critical). - Áp dụng file
.snykđể bỏ qua những lỗ hổng không ảnh hưởng hoặc không thể khai thác với lý do rõ ràng và ngày hết hạn. - Với dự án tồn đọng nhiều lỗ hổng, áp dụng triển khai dần dần: giai đoạn đầu chỉ xem báo cáo, sau đó mới siết chặt fail pipeline.
Quét ảnh container trong CI/CD
- Xây dựng ảnh Docker trong bước trước.
- Quét ảnh bằng lệnh:
snyk container test myapp:tag --file=Dockerfile --severity-threshold=high
- Cờ
--file=Dockerfilecho phép Snyk gợi ý nâng cấp base image. - Có thể theo dõi ảnh đã deploy bằng
snyk container monitor. - Github Actions, Jenkins, GitLab đều có ví dụ cấu hình cho quét container.
Các mẫu nâng cao và tối ưu
- Chạy song song các job quét khác nhau (dependency, SAST, Infrastructure as Code) để giảm thời gian pipeline.
- Cache gói npm khi cài Snyk CLI qua npm để tăng tốc.
- Hỗ trợ quét đa dự án trong monorepo với biến môi trường
--project-name.
Lựa chọn thay thế cho Snyk trong CI/CD
Ngoài Snyk, bạn cũng có thể cân nhắc các công cụ như:
- Trivy: mã nguồn mở, hỗ trợ quét container lẫn dependency.
- Semgrep: SAST với tier miễn phí lớn, dễ tích hợp CI.
- GitHub Advanced Security: CodeQL và Dependabot tích hợp sẵn.
- CodeAnt AI: kết hợp SAST và đánh giá code bằng AI trong một bước pipeline.
Xử lý sự cố phổ biến khi dùng Snyk trong CI/CD
- Lỗi xác thực: kiểm tra đúng biến môi trường token, không bị thiếu hoặc sai tên.
- Không tìm thấy file manifest: đảm bảo checkout mã nguồn và đúng thư mục.
- Kết quả quét khác nhau giữa local và CI: kiểm tra cài đặt lock file và cách cài dependencies.
- Upload SARIF thất bại: do thiếu GitHub Advanced Security cho repo riêng tư, có thể tạm bỏ bước upload.
Tổng kết
Việc tích hợp Snyk trong CI/CD giúp tự động hóa kiểm tra lỗ hổng bảo mật ngay từ khâu phát triển, giảm rủi ro bị lỗi bảo mật “lọt” vào môi trường production. Quy trình chung là cài Snyk CLI, cấu hình biến SNYK_TOKEN, dùng snyk test để chặn build khi có lỗ hổng nghiêm trọng và dùng snyk monitor theo dõi trạng thái bảo mật dự án trong thời gian thực.
Bắt đầu với mức độ nghiêm trọng cao (--severity-threshold=high) là hợp lý để cân bằng an toàn và không gây quá tải cho developer. Ngoài dependency scan, nên bổ sung SAST qua Snyk Code và quét container nếu bạn sử dụng Docker. Quản lý ngoại lệ bằng file .snyk rõ ràng, có lý do và thời hạn để duy trì an toàn về lâu dài.
Phần lớn đội phát triển trong nước hiện có thể áp dụng dễ dàng với các hướng dẫn trên, giúp nâng cao bảo mật phần mềm và tuân thủ tốt hơn các chuẩn mực an toàn.
Ảnh minh họa giao diện Snyk trên CI/CD
Bài viết liên quan

AI & Machine Learning
Câu chuyện về người đàn ông Philippines xây dựng "AI bất tử" bằng cách khai thác miễn phí 11 nền tảng công nghệ
18 tháng 4, 2026

Phần mềm
Chuyển nhà từ DigitalOcean sang Hetzner: Giảm chi phí từ $1,432 xuống $233 với Zero Downtime
18 tháng 4, 2026

Phần mềm
AI Agents Cần "Bàn Làm Việc" Riêng: Giải Pháp Từ Git Worktrees
18 tháng 4, 2026
