-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSecurityDocs
More file actions
43 lines (34 loc) · 4.49 KB
/
Copy pathSecurityDocs
File metadata and controls
43 lines (34 loc) · 4.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<div>
เพื่อความปลอดภัยของโปรเจกต์บน GitHub ทำได้หลายชั้น (ตั้งแต่โค้ดไปจนถึงสิทธิ์และ CI) ลองใช้เช็กลิสต์นี้:
## 1) ตั้งค่าพื้นที่เก็บ (repo) ให้ปลอดภัย
- เปิดใช้ **branch protection**: บังคับให้ PR ผ่านการตรวจ, ห้าม push ตรงไปที่ main/master, บังคับ require status checks
- ปิด **Allow fork pull requests** (ถ้าไม่จำเป็น) หรือทำให้รัน CI แบบปลอดภัยสำหรับ fork
- เปิดใช้ **Dependabot alerts** และ/หรือ **security updates** (อัปเดตแพ็กเกจอัตโนมัติเมื่อมีช่องโหว่)
## 2) จัดการ “secrets” ให้ถูกทาง (สำคัญมาก)
- ห้ามใส่รหัสผ่าน/คีย์/โทเคนใน repo หรือ commit
- เก็บความลับด้วย **GitHub Secrets/Actions secrets** (หรือ secret manager ของคุณ)
- เปิดใช้ **Secret scanning** และ **Push protection** (ให้ระบบบล็อก/แจ้งเตือนเมื่อมีการใส่ secret)
- ถ้าเคยรั่วไปแล้ว: ต้อง **หมุน/ยกเลิกคีย์เดิม** ทันที ไม่พอแค่ลบออกจากประวัติ
## 3) ลดความเสี่ยงจากการรันโค้ดใน CI/CD
- ใช้ **permissions แบบจำกัด** ใน GitHub Actions (principle of least privilege)
- ใช้ **pin action versions** (ระบุ tag/commit แทน @latest)
- ตรวจว่า workflow ไม่พิมพ์ค่า secret ออก log (เช่น echo ตัวแปร)
- ถ้าใช้การ deploy: ทำ **environment approvals** หรือเงื่อนไขอนุมัติก่อนขึ้น production
## 4) ทำให้โค้ด “ทนช่องโหว่” มากขึ้น
- เปิด **Code scanning** (เช่น CodeQL/Static analysis ถ้าเข้ากับ stack ของคุณ)
- เพิ่ม lint/format + test ใน CI เพื่อกันบั๊กที่มักนำไปสู่ช่องโหว่
- ใช้ dependency update เป็นรอบ และบังคับให้ build ล้มเหลวเมื่อมี CVE ระดับสูง (ถ้าทำได้)
## 5) ตรวจประวัติและการเปลี่ยนแปลงอย่างเป็นระบบ
- กำหนด **required reviewers** (อย่างน้อย 1–2 คน โดยเฉพาะไฟล์ security-critical)
- เปิดใช้ **signed commits/tags** (ถ้าทีมใช้)
- ใช้ **audit logs** สำหรับการเปลี่ยนแปลงสำคัญ (เช่น เปลี่ยนสิทธิ์, ปรับ settings, เพิ่ม integration)
## 6) ตั้งนโยบายความปลอดภัยของโปรเจกต์
- เพิ่มไฟล์ **SECURITY.md**: บอกช่องทางแจ้งช่องโหว่ + ขั้นตอนตอบกลับ
- เขียน guideline การใช้สิทธิ์/การจัดการ secret สำหรับสมาชิกใหม่
---
ถ้าคุณบอกเพิ่มได้อีกนิด ผมจะจัดเป็น “แผนที่ทำได้ทันที” ให้เข้ากับคุณ:
1) โปรเจกต์ใช้ภาษา/เฟรมเวิร์กอะไร (Node/Python/Java/…)?
2) ใช้ GitHub Actions ใน CI/CD ไหม และมี workflow deploy ไหม?
3) Repo เป็น public หรือ private? และทีมประมาณกี่คน?
ตอนนั้นผมจะยกตัวอย่างการตั้งค่า branch protection + workflow permissions + การสแกน/อัปเดตที่เหมาะกับสแต็กคุณให้ครับ
</div>