Home > Blog > tech

Docker Security Scanning สอนใช้ Trivy หา Vulnerability ใน Container Image 2026

docker security scanning trivy guide
Docker Security Scanning สอนใช้ Trivy หา Vulnerability ใน Container Image 2026
2026-04-16 | tech | 1065 words


Docker Security Scanning 2026: คู่มือใช้งาน Trivy หาช่องโหว่ใน Container Image อย่างมืออาชีพ

ในยุคที่การพัฒนาแอปพลิเคชันแบบ Microservices และ Containerization กลายเป็นมาตรฐานใหม่ การจัดการความปลอดภัยของ Container Images ถือเป็นหนึ่งในหัวใจสำคัญของ DevOps และ DevSecOps อย่างไม่อาจหลีกเลี่ยงได้ Docker Security Scanning คือกระบวนการตรวจสอบและวิเคราะห์ Container Images เพื่อค้นหา vulnerabilities, misconfigurations, และความเสี่ยงด้านความปลอดภัยต่าง ๆ ก่อนที่จะนำไป deploy ใช้งานจริง ในบทความคู่มือฉบับสมบูรณ์นี้ เราจะพาคุณเจาะลึกเครื่องมือที่ทรงพลังและได้รับความนิยมสูงสุดอย่าง Trivy ในการทำ Security Scanning สำหรับปี 2026 พร้อมด้วยขั้นตอนปฏิบัติและเทคนิคขั้นสูงที่คุณต้องรู้

ทำไม Docker Security Scanning ถึงสำคัญในยุค 2026?

ภาพลักษณ์ของ Container ที่เป็น "ปลอดภัยโดยกำเนิด" นั้นเป็นความเข้าใจที่คลาดเคลื่อน Container เป็นเพียงการแยกกระบวนการทำงาน (process isolation) ไม่ใช่การแยกแบบสมบูรณ์ (full virtualization) หาก Image ที่คุณใช้มีช่องโหว่หรือการตั้งค่าที่ไม่ปลอดภัย ความเสี่ยงนั้นจะถูกส่งต่อมายัง Container ทุกตัวที่รันจาก Image นั้นโดยตรง ในปี 2026 ด้วยความซับซ้อนของซอฟต์แวร์และความถี่ของการโจมตีที่เพิ่มสูงขึ้น การปล่อย Container ที่ไม่ผ่านการตรวจสอบความปลอดภัยก็เหมือนกับการเปิดประตูบ้านทิ้งไว้ โดยเฉพาะอย่างยิ่งสำหรับธุรกิจที่ต้องจัดการข้อมูลสำคัญ เช่น การทำ Forex Trading Platforms ที่ต้องการความมั่นใจในระดับสูง

รู้จักกับ Trivy: Swiss Army Knife สำหรับ Security Scanning

Trivy เป็นเครื่องมือ Open-source จาก Aqua Security ที่ออกแบบมาเพื่อการ Scanning ที่ครอบคลุม รวดเร็ว และใช้ง่าย มันไม่เพียงแต่สแกนหา vulnerabilities (CVEs) ใน OS packages (เช่น apt, yum, apk) และ application dependencies (เช่น npm, pip, Maven, Bundler) แต่ยังสามารถตรวจสอบ misconfigurations ใน Dockerfile, Kubernetes manifests, Infrastructure as Code (Terraform) และตรวจหา secrets ที่อาจจะถูก hard-code ไว้โดยไม่ตั้งใจ ความสามารถที่หลากหลายนี้ทำให้ Trivy เป็นเครื่องมือที่เหมาะกับทั้ง Developer, DevOps Engineer และ Security Personnel

เริ่มต้นใช้งาน Trivy: ติดตั้งและคำสั่งพื้นฐาน

การติดตั้ง Trivy ทำได้ง่ายมาก มีหลายวิธีให้เลือกตามระบบปฏิบัติการของคุณ

การติดตั้ง Trivy

# ติดตั้งบน macOS ด้วย Homebrew
brew install aquasecurity/trivy/trivy

# ติดตั้งบน Linux (Debian/Ubuntu)
sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy

# ดาวน์โหลด binary โดยตรง (ใช้ได้ทุกระบบ)
wget https://github.com/aquasecurity/trivy/releases/download/v0.58.1/trivy_0.58.1_Linux-64bit.tar.gz
tar -xzf trivy_0.58.1_Linux-64bit.tar.gz
sudo mv trivy /usr/local/bin/

# ตรวจสอบการติดตั้ง
trivy --version

การสแกน Container Image พื้นฐาน

คำสั่งที่ตรงไปตรงมาที่สุดคือการสแกน Image ที่มีอยู่แล้วในเครื่องหรือดึงจาก registry โดยอัตโนมัติ

# สแกน public image จาก Docker Hub
trivy image nginx:latest

# สแกน local image
trivy image your-app:1.0.0

# สแกนและแสดงผลเฉพาะ vulnerability ที่มีความรุนแรงระดับ CRITICAL หรือ HIGH
trivy image --severity CRITICAL,HIGH your-app:1.0.0

# สแกนและออกผลลัพธ์เป็น JSON (เหมาะสำหรับนำไปประมวลผลต่อ)
trivy image -f json -o results.json your-app:1.0.0

# สแกนและ ignore vulnerability ที่รู้จักและยอมรับความเสี่ยงแล้ว ผ่านไฟล์ .trivyignore
trivy image --ignorefile .trivyignore your-app:1.0.0

เทคนิคการใช้งาน Trivy ขั้นสูงสำหรับปี 2026

เพื่อให้ได้ประโยชน์สูงสุดและ integrate เข้ากับ workflow ได้อย่างลื่นไหล มาดูเทคนิคที่ควรรู้

1. การสแกน Dockerfile และ Infrastructure as Code

ป้องกันปัญหาตั้งแต่ในขั้นตอนการ build โดยตรวจสอบ Dockerfile และคอนฟิกรูเลียมนโยบาย (เช่น Kubernetes)

# สแกน Dockerfile เพื่อหาการตั้งค่าที่ไม่ปลอดภัย
trivy config ./Dockerfile

# สแกนทั้ง directory ที่มีไฟล์คอนฟิกรูเลียมนโยบาย (Kubernetes YAMLs, Terraform)
trivy config ./k8s/
trivy config --policy ./policies/ --namespaces user ./terraform/

2. การ Integrate กับ CI/CD Pipeline (GitHub Actions Example)

นี่คือหัวใจของ DevSecOps ทำให้การตรวจสอบความปลอดภัยเกิดขึ้นอัตโนมัติทุกครั้งที่มีการ push code

# .github/workflows/trivy-scan.yml
name: Security Scan with Trivy
on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Build Docker image
        run: docker build -t your-app:${{ github.sha }} .

      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'your-app:${{ github.sha }}'
          format: 'sarif'
          output: 'trivy-results.sarif'
          severity: 'CRITICAL,HIGH'

      - name: Upload Trivy scan results to GitHub Security tab
        uses: github/codeql-action/upload-sarif@v2
        if: always()
        with:
          sarif_file: 'trivy-results.sarif'

3. การใช้ Trivy เป็น Kubernetes Operator

สำหรับการ monitor ความปลอดภัยของ workloads ที่รันอยู่บนคลัสเตอร์ Kubernetes แบบเรียลไทม์ Trivy มีโหมด operator ที่ชื่อว่า trivy-operator ซึ่งจะทำการสแกน workloads, nodes, และรายงานความเสี่ยงกลับมาให้คุณอย่างต่อเนื่อง เหมาะกับระบบที่ต้องการการตรวจสอบอย่างต่อเนื่อง เช่น ระบบจัดการสมาชิกหรือ Loyalty Card Platforms

# ติดตั้ง Trivy Operator ด้วย Helm
helm repo add aqua https://aquasecurity.github.io/helm-charts/
helm repo update
helm install trivy-operator aqua/trivy-operator \
  --namespace trivy-system \
  --create-namespace \
  --set="trivy.ignoreUnfixed=true"

4. การจัดการกับ False Positive และการกำหนด Policy

การ ignore vulnerability ที่ยอมรับได้หรือเป็น false positive เป็นสิ่งสำคัญ ใช้ไฟล์ .trivyignore

# .trivyignore
# Ignore specific CVE in all images
CVE-2021-12345

# Ignore a CVE in a specific package up to a version
CVE-2022-6789 in libssl before 1.1.1k

# Ignore by vulnerability type (เฉพาะการสแกน config)
AVD-ABC-1234 in Dockerfile

# ใช้ comment ได้
# เรายอมรับความเสี่ยงนี้เนื่องจากต้องใช้ legacy library สำหรับเชื่อมต่อกับระบบเก่า

ตารางเปรียบเทียบ Docker Security Scanning Tools ปี 2026

เครื่องมือ ประเภท จุดเด่น จุดด้อย เหมาะสำหรับ
Trivy Open-source เร็วมาก, ครอบคลุม (Vuln, Config, Secrets), ใช้ง่าย, Integrate ง่าย รายงานอาจละเอียดน้อยกว่าเครื่องมือเชิงพาณิชย์บางตัว ทีม DevOps ทั่วไป, CI/CD, การเริ่มต้น
Clair Open-source ออกแบบสำหรับ Container Registry (Quay), API-based ตั้งค่าและดูแลซับซ้อนกว่า, สแกนช้ากว่า องค์กรที่มี Private Registry เป็นของตัวเอง
Anchore Engine / Grype Open-source (Grype) Policy-based scanning แบบละเอียด, Customizable สูง ความซับซ้อนในการกำหนด policy องค์กรที่มี requirement ด้าน compliance เฉพาะ
Snyk Container Commercial (มีฟรี tier) ฐานข้อมูล vulnerability คุณภาพสูง, ให้คำแนะนำการแก้ไข, Integrate กับ IDE มีข้อจำกัดในการสแกนฟรี ทีมพัฒนาที่ใช้ Snyk อยู่แล้ว, ต้องการ integration แบบ end-to-end
Amazon ECR / Azure ACR Scanning Managed Service ไม่ต้องจัดการ infrastructure, ผสานกับ ecosystem ของ cloud นั้นๆ ลงตัว Lock-in กับ cloud provider นั้น, ความสามารถอาจจำกัด องค์กรที่ใช้ cloud นั้นๆ เป็นหลักและต้องการความสะดวก

การเลือกเครื่องมือที่เหมาะสมอาจขึ้นกับปัจจัยหลายอย่าง เช่น ขนาดทีม งบประมาณ และสภาพแวดล้อมการทำงาน ตัวอย่างเช่น การพัฒนาระบบวิเคราะห์ข้อมูลสำหรับ Trading Signals ที่ต้องการความรวดเร็วและความน่าเชื่อถือสูง อาจจะพิจารณาการใช้ Trivy ใน CI/CD ร่วมกับ Snyk สำหรับการตรวจสอบแบบ deeper analysis

Best Practices สำหรับ Docker Security Scanning ด้วย Trivy

FAQ (คำถามที่พบบ่อย)

Trivy ต่างจาก "docker scan" (ที่ใช้ Snyk) อย่างไร?

docker scan เป็นคำสั่งที่ Docker Desktop บริการร่วมกับ Snyk เพื่อให้การสแกนทำได้ง่ายสำหรับ developers โดยทั่วไปจะใช้ engine ของ Snyk ในการตรวจหา vulnerabilities ส่วน Trivy เป็นเครื่องมือ standalone ที่สามารถรันได้ทุกที่ (เซิร์ฟเวอร์, CI runner) โดยไม่ต้องพึ่ง Docker Desktop และมีความสามารถที่กว้างขวางกว่าในด้านการสแกน misconfigurations และ secrets การเลือกใช้ขึ้นกับ workflow: ใช้ docker scan สำหรับการตรวจสอบแบบเร็วๆ ใน local, ใช้ Trivy สำหรับ automation และการตรวจสอบที่ครอบคลุมกว่า

ควรสแกน Image บ่อยแค่ไหน?

ควรสแกนทุกครั้งที่มีการ build image ใหม่ (ใน CI pipeline) และควรมีกระบวนการสแกนภาพที่รันอยู่ใน production ใหม่เป็นระยะ (เช่น ทุกสัปดาห์) เพราะฐานข้อมูล vulnerability ถูกอัปเดตตลอดเวลา ภาพที่ปลอดภัยเมื่อวานอาจไม่ปลอดภัยในวันนี้หากมีการค้นพบ CVE ใหม่ๆ ออกมา ระบบอัตโนมัติเช่น Trivy Operator บน Kubernetes จะช่วยจัดการในส่วนนี้ได้

หากพบ vulnerability ควรทำอย่างไร?

ขั้นตอนแรกคือการประเมินความรุนแรงและ context: 1) ช่องโหว่นี้ถูก exploit ได้ง่ายแค่ไหน 2) ฟังก์ชันที่มีช่องโหว่ถูกเรียกใช้ในระบบของคุณหรือไม่ 3) มี patch ออกมาแล้วหรือยัง หากมี patch ให้อัปเดต package หรือ base image ไปยังเวอร์ชันที่ปลอดภัยทันที หากยังไม่มี patch หรือไม่สามารถอัปเดตได้ ให้พิจารณาใช้ compensating controls (เช่น กำหนด network policy ใน Kubernetes เพื่อจำกัดการเข้าถึง) และบันทึกการยอมรับความเสี่ยง (risk acceptance) ลงใน .trivyignore พร้อมเหตุผลอย่างชัดเจน

Trivy ใช้ฐานข้อมูล vulnerability จากไหน และอัปเดตอย่างไร?

Trivy ใช้ฐานข้อมูลจากหลายแหล่งรวมกัน ได้แก่ NVD (National Vulnerability Database), แหล่งข้อมูลของ distribution ต่างๆ (เช่น Alpine SecDB, Red Hat OVAL) และฐานข้อมูลของ vulnerability ในภาษาโปรแกรม (เช่น GitHub Security Advisories) Trivy จะดาวน์โหลดฐานข้อมูลนี้มาเก็บไว้ในเครื่อง (~/.cache/trivy/db/) และอัปเดตโดยอัตโนมัติเมื่อคุณรันคำสั่งสแกน (หากฐานข้อมูลเก่ากว่า 12 ชั่วโมง) คุณสามารถบังคับอัปเดตด้วยคำสั่ง trivy image --download-db-only

สามารถใช้ Trivy สแกน Private Container Registry ได้หรือไม่?

ได้แน่นอน Trivy รองรับการสแกนภาพจาก private registry ต่างๆ เช่น AWS ECR, GCR, Azure ACR, Harbor, และ Docker Registry ทั่วไป โดยคุณต้อง login เข้าไปยัง registry นั้นด้วยเครื่องมือที่เหมาะสม (เช่น docker login, aws ecr get-login-password) ก่อนรันคำสั่ง trivy image Trivy จะใช้ credential จาก Docker daemon หรือจาก config file โดยอัตโนมัติ ซึ่งทำให้เหมาะกับองค์กรที่พัฒนาแพลตฟอร์มเฉพาะทางเช่น Online Marketplaces ที่ต้องเก็บ image ไว้ใน registry ส่วนตัว

Back to Blog | iCafe Forex | SiamLanCard | Siam2R