วิธีใช้ CodeQL วิเคราะห์ช่องโหว่ในโค้ดด้วย GitHub Actions อย่างปลอดภัย

ที่มาภาพ: 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

Related

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

วิธีตั้งค่า Sandboxed Python Environment ด้วย pyenv‑virtualenv บน Windows เพื่อความปลอดภัยGrowth
21 สิงหาคม 2569 เวลา 18:30

วิธีตั้งค่า Sandboxed Python Environment ด้วย pyenv‑virtualenv บน Windows เพื่อความปลอดภัย

การสร้างสภาพแวดล้อม Python ที่ทำงานแบบ sandboxed ช่วยให้คุณรันโค้ดจากแหล่งที่ไม่เชื่อถือได้โดยไม่เสี่ยงต่อระบบหลักของ Windows ​คอมพิวเตอร์ ​บทความนี้จะแนะนำวิธีตั้งค่า **pyenv‑virtualenv** บน Windows…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีตั้งค่า Git Hook เพื่อตรวจสอบคุณภาพโค้ดก่อน Commit อย่างปลอดภัยGrowth
21 สิงหาคม 2569 เวลา 12:30

วิธีตั้งค่า Git Hook เพื่อตรวจสอบคุณภาพโค้ดก่อน Commit อย่างปลอดภัย

Git Hook คือสคริปต์ที่ทำงานอัตโนมัติเมื่อเกิดเหตุการณ์บางอย่างในระบบเวอร์ชันคอนโทรล เช่น `pre‑commit` หรือ `post‑merge` การใช้ Hook ช่วยให้เราตรวจสอบคุณภาพโค้ดก่อนที่การเปลี่ยนแปลงจะถูกบันทึกเข้าสู่ r…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีตั้งค่า Windows Terminal พร้อมโปรไฟล์ PowerShell เพื่อเพิ่มประสิทธิภาพการทำงานGrowth
21 สิงหาคม 2569 เวลา 11:00

วิธีตั้งค่า Windows Terminal พร้อมโปรไฟล์ PowerShell เพื่อเพิ่มประสิทธิภาพการทำงาน

การใช้ Windows Terminal ร่วมกับ PowerShell เป็นวิธีที่ทำให้การทำงานบนคอมพิวเตอร์เร็วขึ้นและเป็นระเบียบมากยิ่งขึ้น บทความนี้จะแนะนำขั้นตอนตั้งค่าโปรไฟล์ PowerShell อย่างละเอียด เพื่อเพิ่มประสิทธิภาพในก…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีเชื่อมต่อ Google Cloud BigQuery กับ Power BI โดยใช้ Direct Query อย่างปลอดภัยGrowth
20 สิงหาคม 2569 เวลา 18:30

วิธีเชื่อมต่อ Google Cloud BigQuery กับ Power BI โดยใช้ Direct Query อย่างปลอดภัย

การเชื่อมต่อ Google Cloud BigQuery กับ Power BI ด้วยโหมด **Direct Query** ช่วยให้ผู้ใช้สามารถดึงข้อมูลสดจากคลังข้อมูลขนาดใหญ่ได้โดยไม่ต้องทำการนำเข้าข้อมูลลงเครื่องมือ BI อีกครั้ง ทำให้งานรายงานเป็นแบ…

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