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



