วิธีติดตั้งและกำหนดค่า GitHub Actions Runner แบบ Self‑hosted บน Windows Server พร้อม Zero‑Trust Security

ที่มาภาพ: Unknown Source

วิธีติดตั้งและกำหนดค่า GitHub Actions Runner แบบ Self‑hosted บน Windows Server พร้อม Zero‑Trust Security

⚡ สรุป 30 วิ

การใช้ **GitHub Actions Runner แบบ Self‑hosted** บน Windows Server ให้คุณควบคุมสภาพแวดล้อมการทำงานได้เต็มที่ พร้อมเพิ่มระดับความปลอดภัยด้วยแนวคิด *Zero‑Trust* Security จะช่วยลดความเสี่ยงจากการเข้าถึงโ…

ภาพรวม (Overview)

การใช้ GitHub Actions Runner แบบ Self‑hosted บน Windows Server ให้คุณควบคุมสภาพแวดล้อมการทำงานได้เต็มที่ พร้อมเพิ่มระดับความปลอดภัยด้วยแนวคิด *Zero‑Trust* Security จะช่วยลดความเสี่ยงจากการเข้าถึงโดยไม่ได้รับอนุญาตและป้องกันข้อมูลสำคัญจากการรั่วไหล

บทความนี้จะอธิบายขั้นตอนตั้งแต่เตรียมระบบ ลงโปรแกรม Runner ตั้งค่า Zero‑Trust จนถึงการทดสอบและบำรุงรักษาอย่างเป็นระบบ


ความต้องการเบื้องต้น (Prerequisites)

ก่อนเริ่มติดตั้ง ควรตรวจสอบว่าระบบของคุณพร้อมรับมือกับงาน CI/CD แล้ว

  • ระบบปฏิบัติการ Windows Server 2019/2022 (64‑bit)
  • มี PowerShell 5.1 หรือใหม่กว่า
  • ติดตั้ง .NET Framework 4.8** (หากยังไม่มี)
  • เปิดพอร์ต TCP 443 และ 5986 สำหรับการสื่อสารกับ GitHub API
  • สร้าง **Personal Access Token (PAT) ที่มีสิทธิ `repo`, `admin:org`, `workflow`
**Tip: ใช้ PAT ที่หมดอายุเร็วที่สุดและเก็บไว้ใน Azure Key Vault หรือเครื่องมือจัดการ Secrets เพื่อป้องกันการรั่วไหล

การเตรียม Zero‑Trust Network (Zero‑Trust Network Preparation)

Zero‑Trust มุ่งเน้น “ไม่เชื่อใคร” ทั้งภายในและภายนอกระบบ

  • **Network Segmentation: แยก Runner ออกจากแอปพลิเคชันอื่น ๆ ด้วย VLAN หรือ Subnet เฉพาะ
  • **Firewall Rules: จำกัดการออกไปยัง `api.github.com` และ `github.com` เท่านั้นบนพอร์ต 443
  • **DNS Filtering: ใช้ DNS ที่รองรับการบล็อกโดเมนที่ไม่เป็นที่ต้องการ เช่น `*.githubusercontent.com` (ยกเว้นที่จำเป็น)
ข้อควรทำรายละเอียด
Isolationแยก Runner ใน DMZ หรือ Subnet เฉพาะ
Least‑privilegeให้สิทธิ์ผู้ใช้ระดับ Service Account เท่านั้น
Continuous Monitoringเปิด Logging ของ Windows Firewall + Azure Sentinel

การดาวน์โหลดและติดตั้ง Runner (Download & Install)

ขั้นตอนนี้ทำบนเครื่อง Windows Server ที่เตรียมไว้

  • **ขั้​นที่ 1: ดาวน์โหลดไฟล์ ZIP ล่าสุดจาก <https://github.com/actions/runner/releases>
  • **ขั​นที่ 2: แตกไฟล์ไปยังโฟลเดอร์ `C:\actions-runner` (หรือที่ต้องการ)
  • **ขั​นที่ 3: เปิด PowerShell ด้วยสิทธิ Administrator

```powershell cd C:\actions-runner .\config.cmd --url https://github.com/ORG/REPO --token YOUR_PAT ```

  • **ขั​นที่ 4: ตั้งค่าให้ Runner เริ่มทำงานอัตโนมัติเมื่อบูตเครื่อง

```powershell .\svcinstall.cmd .\svcstart.cmd ```

**Tip: ใช้ `--replace` หากต้องการแทนที่ Runner ที่เคยลงไว้แล้ว

การกำหนดค่า Zero‑Trust สำหรับ Runner (Zero‑Trust Configuration for Runner)

เพิ่มระดับความปลอดภัยให้กับ Runner โดยทำตามแนวทางต่อไปนี้

  • **Credential Isolation: สร้าง Service Account แยกสำหรับ Runner ไม่ใช้บัญชีผู้ดูแลระบบ
  • **Secret Management: เชื่อมต่อ Runner กับ Azure Key Vault หรือ HashiCorp Vault เพื่อนำ Secrets เข้าสู่ Workflow ด้วย `secrets:`
  • **Certificate Pinning: ตั้งค่า GitHub CLI ให้ตรวจสอบใบรับรองของ `github.com` เท่านั้น

```powershell [Net.ServicePointManager]::ServerCertificateValidationCallback = { param($sender,$certificate,$chain,$sslPolicyErrors) $expectedThumbprint = "‎ABCD1234EF567890..." return $certificate.Thumbprint -eq $expectedThumbprint } ```

  • **Endpoint Whitelisting: กำหนดให้ Runner ติดต่อเฉพาะ API endpoint ที่จำเป็น (`/repos`, `/actions/runs`)
**Warning: หากปิดการตรวจสอบใบรับรองอาจทำให้ระบบเสี่ยงต่อการโจมตีแบบ Man‑in‑the‑Middle

การลงทะเบียน Runner กับ Repository (Register Runner to Repo)

หลังจากตั้งค่าแล้ว ให้เชื่อมต่อ Runner เข้ากับ GitHub Repository หรือ Organization

  • **ขั้นตอนที่ 1: ไปที่หน้า Settings Actions Runners ของ Repository/Org
  • **ขั้นตอนที่ 2: คัดลอกคำสั่ง `./config.sh` (Windows ใช้ `config.cmd`) พร้อม PAT ที่สร้างไว้
  • **ขั้นตอนที่ 3: รันคำสั่งใน PowerShell ตามที่อธิบายด้านบน

หลังจากสำเร็จ คุณจะเห็น Runner ปรากฏในรายการพร้อมสถานะ Idle


การทดสอบการทำงาน (Test the Runner)

ตรวจสอบว่ารันเนอร์ทำงานตามคาดด้วย Workflow ตัวอย่าง

```yaml name: CI Test on: [push] jobs: build: runs-on: self-hosted steps:

  • uses: actions/checkout@v3
  • name: Verify OS

run: systeminfo | findstr /i "OS Name" ```

  • **ขั้นตอนที่ 1: Commit ไฟล์ `.github/workflows/test.yml` ไปยัง Repository
  • **ขั้นตอนที่ 2: ตรวจสอบหน้า Actions ว่า Job ทำงานบน Runner ของคุณ
**Tip: เปิด Logging ระดับ `debug` ด้วยการตั้งค่า `ACTIONS_RUNNER_DEBUG=true` เพื่อดูรายละเอียดเพิ่มเติมหากเกิดข้อผิดพลาด

การบำรุงรักษาและอัพเดต (Maintenance & Updates)

เพื่อให้ระบบทำงานต่อเนื่อง ควรจัดทำแผนบำรุงรักษาตามลำดับ

  • **Update Runner: รัน `.\runsvc.cmd update` ทุกสัปดาห์หรือเมื่อมีเวอร์ชันใหม่
  • **Patch OS: ติดตั้งอัพเดต Windows Security Monthly Rollup อย่างต่อเนื่อง
  • **Log Rotation: กำหนดขนาดไฟล์ log สูงสุด 100 MB แล้วให้ระบบลบเก่าโดยอัตโนมัติ
งานความถี่
ตรวจสอบการเชื่อมต่อ APIรายวัน
อัพเดต Runnerรายสัปดาห์
สแกน Vulnerabilityรายเดือน

แนวทางปฏิบัติด้านความปลอดภัยเพิ่มเติม (Additional Security Practices)

  • **Multi‑Factor Authentication (MFA): บังคับ MFA สำหรับผู้ใช้ที่มีสิทธิ์จัดการ Runner
  • **Audit Trail: เปิด GitHub Audit Log และ Windows Event Viewer เพื่อติดตามกิจกรรมสำคัญ
  • **Immutable Infrastructure: ใช้ Image (เช่น Azure VM Image) สร้าง Runner ใหม่แทนการแก้ไขบนเครื่องเดิม
**Warning: อย่าให้ Runner มีสิทธิ์ `Administrator` บนระบบ ปรับเป็นระดับ Service Account อย่างเคร่งครัด

สรุป (Summary)

  • ตั้งค่า Zero‑Trust Network ก่อนติดตั้ง Runner เพื่อลดพื้นฐานการโจมตี
  • ดาวน์โหลดและกำหนดค่า Runner ผ่าน PowerShell ด้วย PAT ที่มีขอบเขตจำกัด
  • ใช้ Service Account, Secret Vault, และ Certificate Pinning เพื่อแยกความเสี่ยงของข้อมูลสำคัญ
  • ทดสอบ Workflow อย่างเป็นขั้นตอน แล้วบำรุงรักษาอัพเดต Runner และระบบปฏิบัติการอย่างสม่ำเสมอ

สิ่งที่ควรจำ

  • ตรวจสอบ Firewall / DNS ให้เปิดเฉพาะ GitHub API เท่านั้น
  • เก็บ PAT ใน Vault อย่าเก็บในไฟล์หรือสคริปต์โดยตรง
  • เปิด MFA และ Audit Log เพื่อเพิ่มระดับการตรวจจับเหตุการณ์ผิดปกติ
  • ปรับ Runner Permission ให้เป็น Least‑privilege เสมอ

ทำตามขั้นตอนเหล่านี้ คุณจะได้ Self‑hosted Runner บน Windows Server ที่ทำงานราบรื่นพร้อมรักษาความปลอดภัยแบบ Zero‑Trust อย่างเต็มที่.

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

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

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

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

ชื่อต้นฉบับ
วิธีติดตั้งและกำหนดค่า GitHub Actions Runner แบบ Self‑hosted บน Windows Server พร้อม Zero‑Trust Security
ผู้เขียน
กองบรรณาธิการ Thai Tech News
แหล่ง
บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
วันที่เผยแพร่
4 สิงหาคม 2569 เวลา 17:51

Related

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

วิธีใช้งาน Ollama รันโมเดล LLM บน macOS เพื่อสรุปเนื้อหาเอกสารอัตโนมัติอย่างปลอดภัยGrowth
4 สิงหาคม 2569 เวลา 19:00

วิธีใช้งาน Ollama รันโมเดล LLM บน macOS เพื่อสรุปเนื้อหาเอกสารอัตโนมัติอย่างปลอดภัย

การใช้ Ollama บน macOS เพื่อรันโมเดล LLM (Large Language Model) ช่วยให้คุณสร้างเนื้อหาเอกสารอัตโนมัติได้โดยไม่ต้องพึ่งบริการคลาวด์ภายนอก ความปลอดภัยจึงเพิ่มขึ้นเพราะข้อมูลทั้งหมดอยู่ในเครื่องของคุณเอง

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีใช้ Git Sparse Checkout เพื่อโคลนเฉพาะไฟล์ที่ต้องการอย่างมีประสิทธิภาพGrowth
4 สิงหาคม 2569 เวลา 11:30

วิธีใช้ Git Sparse Checkout เพื่อโคลนเฉพาะไฟล์ที่ต้องการอย่างมีประสิทธิภาพ

Sparse checkout เป็นฟีเจอร์ของ Git ที่ให้คุณเลือกดึงเฉพาะไฟล์หรือโฟลเดอร์ที่ต้องการจากรีโพโดยไม่ต้องคัดลอกทั้งหมด ช่วยลดเวลาและพื้นที่จัดเก็บอย่างมีนัยสำคัญ

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ5 นาที
วิธีตั้งค่า Anomaly‑Detection สำหรับพฤติกรรมผู้ใช้ด้วย OpenTelemetry + Machine Learning บน Kubernetes อย่างปลอดภัยGrowth
3 สิงหาคม 2569 เวลา 20:30

วิธีตั้งค่า Anomaly‑Detection สำหรับพฤติกรรมผู้ใช้ด้วย OpenTelemetry + Machine Learning บน Kubernetes อย่างปลอดภัย

วางระบบตรวจจับพฤติกรรมผู้ใช้แบบอัตโนมัติบน Kubernetes ไม่ต้องเขียนโค้ดซับซ้อน เพียงเชื่อม OpenTelemetry กับโมเดล Machine Learning คุณจะได้ **Anomaly‑Detection** ที่รันในคลัสเตอร์เดียวกัน ปลอดภัย และปร…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ9 นาที
วิธีตั้งค่า Cloudflare Tunnel (Argo Tunnel) สร้าง VPN แบบ Zero‑Trust บน Linux อย่างปลอดภัยGrowth
3 สิงหาคม 2569 เวลา 19:00

วิธีตั้งค่า Cloudflare Tunnel (Argo Tunnel) สร้าง VPN แบบ Zero‑Trust บน Linux อย่างปลอดภัย

Cloudflare Tunnel (หรือ Argo Tunnel) ช่วยให้เราสร้างการเชื่อมต่อแบบ **VPN Zero‑Trust** บน Linux โดยไม่ต้องเปิดพอร์ตสาธารณะบนไฟร์วอลล์ การใช้ Tunnel ทำให้ทราฟฟิกทั้งหมดผ่านเครือข่ายของ Cloudflare ซึ่งม…

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