วิธีใช้ 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

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

วิธีสร้าง Data Pipeline แบบ Real time ด้วย Apache Kafka บน Kubernetes อย่างปลอดภัยGrowth
14 สิงหาคม 2569 เวลา 20:30

วิธีสร้าง Data Pipeline แบบ Real time ด้วย Apache Kafka บน Kubernetes อย่างปลอดภัย

การสร้าง Data Pipeline แบบ Real‑time บนคลาวด์ต้องอาศัยเครื่องมือที่ทำงานได้อย่างต่อเนื่องและปลอดภัย **Apache Kafka** ร่วมกับ **Kubernetes** เป็นสถาปัตยกรรมที่ตอบโจทย์นี้ได้ดี ในบทความนี้เราจะพาคุณผ่าน…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีตั้งค่า Cloudflare Pages พร้อม Functions เพื่อสร้างเว็บไซต์สเตติกแบบ Server‑less อย่างปลอดภัยGrowth
14 สิงหาคม 2569 เวลา 19:00

วิธีตั้งค่า Cloudflare Pages พร้อม Functions เพื่อสร้างเว็บไซต์สเตติกแบบ Server‑less อย่างปลอดภัย

Cloudflare Pages เป็นแพลตฟอร์มที่ให้บริการโฮสต์เว็บไซต์สเตติกได้อย่างเร็วและปลอดภัย การเพิ่ม **Functions** เข้าไปทำให้เราสามารถรันโค้ดฝั่งเซิร์ฟเวอร์แบบ Server‑less ได้โดยไม่ต้องจัดการเครื่องเซิร์ฟเวอ…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีย้ายแอปพลิเคชันจาก Docker Compose ไปใช้ Kubernetes ด้วย Kustomize อย่างปลอดภัยGrowth
14 สิงหาคม 2569 เวลา 11:30

วิธีย้ายแอปพลิเคชันจาก Docker Compose ไปใช้ Kubernetes ด้วย Kustomize อย่างปลอดภัย

การย้ายแอปพลิเคชันจาก Docker Compose ไปยัง Kubernetes ไม่ใช่เรื่องยาก ถ้าจัดระเบียบไฟล์และตั้งค่าให้เป็นระบบ วิธีนี้ช่วยเพิ่มความทนทานต่อข้อผิดพลาดและทำให้การขยายตัว (scaling) ง่ายขึ้น **Kustomize** เ…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีย้ายและซิงค์ฐานข้อมูล MySQL ไปยัง Cloud Spanner ด้วย Terraform อย่างปลอดภัยGrowth
13 สิงหาคม 2569 เวลา 20:30

วิธีย้ายและซิงค์ฐานข้อมูล MySQL ไปยัง Cloud Spanner ด้วย Terraform อย่างปลอดภัย

การย้ายฐานข้อมูลจาก MySQL ไปยัง Cloud Spanner ต้องคำนึงถึงความถูกต้องของข้อมูลและขั้นตอนอัตโนมัติที่ทำซ้ำได้ **Terraform** จะช่วยสร้างโครงสร้างพื้นฐานแบบโค้ด (IaC) ส่วนเครื่องมือ Dataflow/Datastream จ…

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