
ที่มาภาพ: Unknown Source
วิธีใช้ CodeQL วิเคราะห์ช่องโหว่ในโค้ดด้วย GitHub Actions อย่างปลอดภัย
⚡ สรุป 30 วิ
การใช้ **CodeQL** ร่วมกับ **GitHub Actions** ช่วยให้คุณตรวจสอบช่องโหว่ในโค้ดอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลง แต่อย่างปลอดภัยต้องตั้งค่าอย่างระมัดระวังเพื่อไม่ให้ข้อมูลลับรั่วไหล บทความนี้จะแสดงขั้…
ภาพรวม — Overview
การใช้ CodeQL ร่วมกับ GitHub Actions ช่วยให้คุณตรวจสอบช่องโหว่ในโค้ดอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลง แต่อย่างปลอดภัยต้องตั้งค่าอย่างระมัดระวังเพื่อไม่ให้ข้อมูลลับรั่วไหล บทความนี้จะแสดงขั้นตอนครบวงจรจากการเตรียมเครื่องมือจนถึงการตรวจสอบผลลัพธ์
สิ่งที่ต้องเตรียม — Prerequisites
ก่อนเริ่มคุณควรมีสิ่งต่อไปนี้พร้อมใช้งาน
- GitHub Repository ที่เปิดใช้ GitHub Actions
- บัญชีผู้ใช้ GitHub ที่มี Permission เป็น `admin` หรือ `maintain` ของ repository
- CodeQL CLI (ไม่จำเป็นต้องติดตั้งแยก หากใช้ Action)
- ความเข้าใจพื้นฐานเกี่ยวกับไฟล์ YAML
**Tip: ตรวจสอบว่าโครงการของคุณไม่มีไฟล์ที่อาจเปิดเผยคีย์ส่วนตัวใน `.gitignore` ก่อนทำ CI/CD
สร้าง Workflow เบื้องต้น — Create Basic Workflow
สร้างไฟล์ workflow ที่จะเรียกใช้ CodeQL ทุกครั้งที่มีการ push หรือ pull request
- ไปที่ `/.github/workflows/` ใน repository ของคุณ
- สร้างไฟล์ใหม่ชื่อ `codeql-analysis.yml`
- ใส่โครงสร้างพื้นฐานตามตัวอย่างด้านล่าง
```yaml name: "CodeQL Analysis" on: push: branches: [ main ] pull_request: branches: [ main ]
jobs: analyze: name: Analyze code with CodeQL runs-on: ubuntu-latest ```
เพิ่มขั้นตอนการสแกน CodeQL — Add CodeQL Steps
ต่อจากโครงสร้างพื้นฐานให้เพิ่มขั้นตอนสำคัญเพื่อทำการสแกน
- **ขั้นตอนที่ 1: ตรวจสอบ checkout ของโค้ด
```yaml steps:
- name: Checkout repository
uses: actions/checkout@v4 ```
- **ขั้นตอนที่ 2: ตั้งค่า CodeQL CLI (GitHub จะดาวน์โหลดอัตโนมัติ)
```yaml
- name: Initialize CodeQL
uses: github/codeql-action/init@v2 with: languages: javascript, python # ปรับตามภาษาที่ใช้ ```
- **ขั้นตอนที่ 3: สร้างฐานข้อมูลการวิเคราะห์ (Database Generation)
```yaml
- name: Build database
uses: github/codeql-action/autobuild@v2 ```
- **ขั้นตอนที่ 4: เรียกสแกนและอัปโหลดผลลัพธ์ไปยัง GitHub Security Dashboard
```yaml
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2 with: category: "/language:${{ matrix.language }}" ```
การจัดการ Secrets อย่างปลอดภัย — Secure Secrets Management
เพื่อป้องกันข้อมูลลับไม่ให้ถูกเปิดเผยใน workflow
- ใช้ GitHub Encrypted Secrets เก็บค่าเช่น `ACTIONS_RUNNER_DEBUG` หรือโทเค็นพิเศษ
- ตั้งค่าการเข้าถึง secrets ให้จำกัดเฉพาะ workflow ที่ต้องการเท่านั้น
- หลีกเลี่ยงการ echo ค่า secret ลง console
**Caution: อย่าเขียนค่า secret โดยตรงในไฟล์ YAML แม้ว่าจะเป็น comment ก็ตาม
การตรวจสอบผลลัพธ์ — Review Findings
หลังจาก workflow รันเสร็จ คุณจะพบข้อมูลช่องโหว่ในหลายที่
- ไปที่หน้า Security > Code scanning alerts ของ repository
- รายการแต่ละอาการแสดงตำแหน่งไฟล์, คำอธิบายและลิงก์ไปยังเอกสารแนวทางแก้ไข
- สามารถตั้งค่า auto‑merge หรือ block merge ตามระดับความรุนแรง
| ระดับความรุนแรง | การกระทำที่แนะนำ |
|---|---|
| Critical | ปิดบั๊กทันทีและบล็อกการ merge |
| High | ตรวจสอบโดยทีม security ก่อน merge |
| Medium | แก้ไขในสัปดาห์ต่อไป, ไม่บล็อก |
| Low | พิจารณาแก้ไขตามแผนงานทั่วไป |
แนวปฏิบัติด้านความปลอดภัยเพิ่มเติม — Additional Security Practices
- เปิดใช้ง Branch protection rules ให้ workflow ต้องผ่านก่อน merge
- ใช้ CodeQL packs ที่เป็นเวอร์ชันล่าสุดเพื่อรับการอัปเดตลายเซ็นใหม่ ๆ อย่างต่อเนื่อง
- กำหนด Retention period ของผลลัพธ์ไม่ให้เก็บนานเกิน 30 วัน เพื่อลดความเสี่ยงข้อมูลเก่า
Tip: หากทีมใช้หลาย repository ควรสร้าง Reusable workflow** ที่รวมการตั้งค่า CodeQL ไว้ในที่เดียวแล้วเรียกใช้จากแต่ละ repo
การแก้ไขปัญหาที่พบบ่อย — Common Troubleshooting
บางครั้ง workflow อาจล้มเหลวโดยไม่มีข้อมูลชัดเจน
- ตรวจสอบว่าไฟล์ `codeql.yml` มีการกำหนด `languages` ตรงกับโค้ดจริงหรือไม่
- หากพบข้อความ “No database found” ให้แน่ใจว่าขั้นตอน autobuild ทำงานสำเร็จ (ตรวจดู log ของขั้นตอนนั้น)
- ปัญหาเรื่อง permission: ตรวจสอบว่า GitHub Actions มี write access ไปยัง security alerts
สรุป — Summary
การใช้ CodeQL ผ่าน GitHub Actions ให้คุณสแกนช่องโหว่อัตโนมัติและเพิ่มความปลอดภัยของซอฟต์แวร์ได้อย่างมีประสิทธิภาพ เพียงตั้งค่า workflow อย่างถูกต้องและจัดการ secrets อย่างรัดกุม
- เตรียม environment: repository, permission, CodeQL CLI
- สร้าง workflow ด้วยขั้นตอน checkout init build analyze
- ป้องกันข้อมูลลับ ด้วย GitHub Encrypted Secrets
- ตรวจสอบผลลัพธ์ ใน Security Dashboard และตั้งค่า protection rule
ทำตามขั้นตอนเหล่านี้ คุณจะได้ระบบสแกนโค้ดที่ปลอดภัยและเชื่อถือได้สำหรับทุกการเปลี่ยนแปลงในโปรเจคของคุณ.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีใช้ CodeQL วิเคราะห์ช่องโหว่ในโค้ดด้วย GitHub Actions อย่างปลอดภัย
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 14 สิงหาคม 2569 เวลา 19:50



