วิธีติดตั้งและกำหนดค่า Trivy สแกนคอนเทนเนอร์อิมเมจใน GitHub Actions อย่างปลอดภัย

ที่มาภาพ: Unknown Source

วิธีติดตั้งและกำหนดค่า Trivy สแกนคอนเทนเนอร์อิมเมจใน GitHub Actions อย่างปลอดภัย

⚡ สรุป 30 วิ

การสแกนคอนเทนเนอร์อิมเมจในขั้นตอน CI/CD ช่วยให้เจอช่องโหว่ก่อนที่ซอฟต์แวร์จะไหลเข้าสู่ production Trivy เป็นเครื่องมือสแกนแบบโอเพ่นซอร์สที่ทำงานเร็วและรองรับหลายรูปแบบของ image registry. ในบทความนี้เร…

Overview — Overview

การสแกนคอนเทนเนอร์อิมเมจในขั้นตอน CI/CD ช่วยให้เจอช่องโหว่ก่อนที่ซอฟต์แวร์จะไหลเข้าสู่ production Trivy เป็นเครื่องมือสแกนแบบโอเพ่นซอร์สที่ทำงานเร็วและรองรับหลายรูปแบบของ image registry. ในบทความนี้เราจะมาดูวิธีติดตั้ง Trivy ภายใน GitHub Actions พร้อมการกำหนดค่าที่ปลอดภัย เพื่อให้ pipeline ของคุณตรวจจับช่องโหว่ได้อย่างต่อเนื่อง

Prerequisites — Prerequisites

ก่อนเริ่มต้องมีสิ่งต่อไปนี้พร้อมใช้งาน

  • Repository บน GitHub ที่เปิดใช้ GitHub Actions
  • Docker หรือ Podman ติดตั้งในเครื่องพัฒนา (เพื่อสร้าง image ก่อนอัพโหลด)
  • สิทธิ์ write หรือ admin ใน repository เพื่อเพิ่ม workflow file
**Tip: ควรแยก token สำหรับการดึง image ออกจาก token ของผู้ใช้ทั่วไป เพื่อลดความเสี่ยงจากการละเมิดสิทธิ์

Install Trivy — Install Trivy

ขั้นตอนแรกคือให้ GitHub Actions ดาวน์โหลดและติดตั้ง Trivy ก่อนทำงานสแกน

  • **ขัั้นที่ 1: ใช้ action `actions/setup-go` เพื่อติดตั้ง Go runtime (Trivy พัฒนาด้วย Go)
  • **ขัั้นที่ 2: ดึง binary ของ Trivy จาก GitHub releases ด้วย `curl -L` หรือใช้ Docker image `aquasec/trivy:latest`
  • **ขัั้นที่ 3: ตรวจสอบเวอร์ชันโดยรัน `trivy --version` เพื่อยืนยันการติดตั้งสำเร็จ
ข้อควรระวัง อย่าเรียกใช้ `curl` จากแหล่งที่ไม่เป็นทางการ เพราะอาจทำให้ binary ถูกดัดแปลงได้

Configure GitHub Action — Configure GitHub Action

สร้างไฟล์ workflow ที่สแกน image หลังขั้นตอน build

```yaml name: Scan Container Image

on: push: branches: [ main ] pull_request:

jobs: trivy-scan: runs-on: ubuntu-latest steps:

  • name: Checkout code

uses: actions/checkout@v3

  • name: Set up Go

uses: actions/setup-go@v4 with: go-version: '1.22'

  • name: Install Trivy

run: | curl -sSfL https://github.com/aquasecurity/trivy/releases/latest/download/trivy_$(uname -s)_$(uname -m).tar.gz | tar zx -C /usr/local/bin trivy

  • name: Build Docker image

run: docker build -t myapp:${{ github.sha }} .

  • name: Scan image with Trivy

env: TRIVY_DB_REPOSITORY: https://github.com/aquasecurity/trivy-db.git run: | trivy image --severity HIGH,CRITICAL --exit-code 1 myapp:${{ github.sha }} ```

Key Points — Key Points

  • ใช้ `--severity` กำหนดระดับความรุนแรงที่ต้องตรวจจับ เพื่อลด noise จากช่องโหว่ระดับต่ำ
  • `--exit-code 1` ทำให้ workflow ล้มเหลวเมื่อพบช่องโหว่ระดับที่กำหนด ช่วยบังคับทีมแก้ไขก่อน merge

Secure Settings — Secure Settings

การตั้งค่าอย่างปลอดภัยช่วยป้องกันข้อมูลรั่วไหลและลดความเสี่ยงจากอ attacker

  • เก็บ TRIVY_USERNAME และ TRIVY_PASSWORD ใน GitHub Secrets หากสแกน image ที่อยู่ใน private registry
  • ตั้งค่า `permissions: contents: read` ให้ workflow มีสิทธิ์อ่าน repository เท่านั้น ไม่ต้องการ write
  • ใช้ `actions/cache@v3` เพื่อแคชฐานข้อมูลของ Trivy ระหว่างรัน ลดจำนวนการดึง DB จากอินเทอร์เน็ต

```yaml

  • name: Cache Trivy DB

uses: actions/cache@v3 with: path: ~/.cache/trivy key: trivy-db-${{ runner.os }}-${{ hashFiles('/trivy.yaml') }} ```

Comparison Table — Comparison

คุณสมบัติTrivyClairAnchore Engine
การติดตั้งเพียง 1 คำสั่งต้องรันเซิร์ฟเวอร์หลายคอมโพเนนท์มี UI เพิ่มเติมแต่ซับซ้อน
รองรับ registryDocker, OCI, ECR, GCR, GHCRDocker Registry เท่านั้นรองรับหลายประเภท
เวลาสแกน10‑30 วินาทีต่อ image (ขนาดกลาง)1–2 นาทีขึ้นกับการตั้งค่า
การอัปเดต DBอัตโนมัติหรือด้วย `trivy db update`ใช้ ClairDB แยกต้องทำ cron job
**Tip: หากต้องสแกนหลายร้อย image ต่อวัน Trivy จะให้ประสิทธิภาพดีกว่า Clair เนื่องจากไม่มีการตั้งค่าเซิร์ฟเวอร์แยก

Best Practices — Best Practices

  • สแกน ก่อนและหลัง การทำขั้นตอน build เพื่อจับช่องโหว่ที่อาจถูกเพิ่มระหว่างขั้นตอนต่าง ๆ
  • กำหนด policy ที่ชัดเจน เช่น ไม่อนุญาตให้ผ่าน image ที่มี CVE ระดับ CRITICAL หรือ HIGH อย่างใดอย่างหนึ่ง
  • ตรวจสอบผลลัพธ์ของ Trivy เป็นไฟล์ JSON แล้วส่งต่อไปยังระบบจัดการข้อบกพร่อง (เช่น Jira) ด้วย webhook

Summary — Summary

สรุปขั้นตอนสำคัญที่ควรจำ

  • ติดตั้ง Trivy ภายใน workflow โดยใช้ `curl` หรือ Docker image อย่างปลอดภัย
  • กำหนดระดับ severity ที่ต้องตรวจจับและให้ workflow ล้มเหลวเมื่อพบช่องโหว่สำคัญ
  • เก็บ credential ของ registry ใน GitHub Secrets และกำหนดสิทธิ์ workflow ให้จำกัดเพียง read‑only
  • แคชฐานข้อมูล Trivy เพื่อเร่งความเร็วและลดการดาวน์โหลดจากอินเทอร์เน็ต

ด้วยการตั้งค่าเหล่านี้ คุณจะได้ pipeline ที่ตรวจจับช่องโหว่ของคอนเทนเนอร์อิมเมจอย่างต่อเนื่องและปลอดภัย ลดความเสี่ยงที่ซอฟต์แวร์ของคุณจะถูกโจมตีในสภาพแวดล้อม production.

แชร์บทความนี้:

ชอบบทความแบบนี้?

สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม

แหล่งข่าวต้นฉบับ

ชื่อต้นฉบับ
วิธีติดตั้งและกำหนดค่า Trivy สแกนคอนเทนเนอร์อิมเมจใน GitHub Actions อย่างปลอดภัย
ผู้เขียน
กองบรรณาธิการ Thai Tech News
แหล่ง
บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
วันที่เผยแพร่
8 สิงหาคม 2569 เวลา 17:50

Related

บทความที่เกี่ยวข้อง

วิธีตั้งค่าและใช้งาน Temporal.io เพื่อสร้าง Workflow แบบ Server‑less บน Kubernetes อย่างปลอดภัยGrowth
8 สิงหาคม 2569 เวลา 19:00

วิธีตั้งค่าและใช้งาน Temporal.io เพื่อสร้าง Workflow แบบ Server‑less บน Kubernetes อย่างปลอดภัย

Temporal.io เป็นแพลตฟอร์มจัดการ workflow ที่ให้ความสามารถด้าน **reliability**, **scalability** และ **visibility** โดยไม่ต้องเขียนโค้ดสำหรับ retry หรือ timeout เอง บน Kubernetes เราสามารถใช้ Temporal ใ…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ10 นาที
วิธีกำหนดค่าและใช้งาน AWS Lambda ในกระบวนการ CI/CD ผ่าน GitHub Actions อย่างปลอดภัยGrowth
8 สิงหาคม 2569 เวลา 11:30

วิธีกำหนดค่าและใช้งาน AWS Lambda ในกระบวนการ CI/CD ผ่าน GitHub Actions อย่างปลอดภัย

บทความนี้จะอธิบายวิธีตั้งค่า AWS Lambda ให้ทำงานร่วมกับกระบวนการ CI/CD ผ่าน GitHub Actions อย่างปลอดภัย เราจะครอบคลุมตั้งแต่การเตรียมสิ่งจำเป็น การสร้าง IAM Role ไปจนถึงขั้นตอนการเขียน workflow ในไฟล์…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ9 นาที
วิธีตั้งค่า Docker Desktop ให้รองรับ Multi‑arch บน Apple Silicon อย่างปลอดภัยGrowth
7 สิงหาคม 2569 เวลา 20:30

วิธีตั้งค่า Docker Desktop ให้รองรับ Multi‑arch บน Apple Silicon อย่างปลอดภัย

Docker Desktop บน Apple Silicon (M1/M2) ทำงานได้เร็วและประหยัดพลังงาน แต่โดยค่าเริ่มต้นรองรับสถาปัตยกรรม **arm64** เท่านั้น หากต้องการรันคอนเทนเนอร์ที่สร้างสำหรับ **amd64/x86_64** จำเป็นต้องเปิดใช้งาน…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีสร้างระบบตรวจจับฟิชชิงอีเมลด้วยโมเดล AI บนเซิร์ฟเวอร์ Linux อย่างปลอดภัยGrowth
7 สิงหาคม 2569 เวลา 19:00

วิธีสร้างระบบตรวจจับฟิชชิงอีเมลด้วยโมเดล AI บนเซิร์ฟเวอร์ Linux อย่างปลอดภัย

การตรวจจับฟิชชิงอีเมลด้วยโมเดล AI เป็นวิธีที่มีประสิทธิภาพในการปกป้ององค์กรจากการโจมตีแบบ Social Engineering ระบบนี้ต้องทำงานบนเซิร์ฟเวอร์ Linux ที่มั่นคงและปลอดภัย บทความนี้จะสรุปขั้นตอนตั้งแต่เตรียม…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
คัดลอกลิงก์แล้ว!