แผนการเรียนรู้
/

วันที่ 3

Security, Governance & Deployment

ช่วงที่ 1: การจัดการความปลอดภัยและกฎเหล็กควบคุมคุณภาพ AI (09:00 - 10:30)

ภารกิจเช้านี้

  • วิเคราะห์ความเสี่ยงความปลอดภัยในโค้ดที่ AI สร้างขึ้น
  • Deep Dive การใช้ไฟล์ .clinerules เพื่อคุมมาตรฐานทีม
  • Security Gate Workflow: ตรวจสอบความปลอดภัยก่อนออนไลน์
  • กิจกรรม: ปรับปรุงกฎเพื่อรองรับนโยบาย PDPA ของ SolarCorp

Security Paradox ในยุค AI

"AI ช่วยให้เราเขียนโค้ดเร็วขึ้น 10 เท่า แต่ก็สามารถสร้างช่องโหว่ได้เร็วขึ้น 10 เท่าเช่นกัน"

หนี้สะสม (Technical Debt)

สถิติพบว่า 89.1% ของโค้ด AI มี Code Smells ที่อาจนำไปสู่ช่องโหว่

ความเสี่ยงจริง

ประมาณ 5.1% ของโค้ด AI แฝงปัญหาด้านความปลอดภัยที่รุนแรง

จุดเสี่ยงที่พบบ่อยในโค้ด AI

🚨

SQL Injection:

AI มักเขียน Query แบบ String Concatenation หากไม่ระบุให้ใช้ ORM

🚨

Insecure Subprocess:

การเรียกใช้คำสั่งระบบ (Shell) ที่รับค่าจาก User โดยตรง

🚨

Broad Exceptions:

การใช้ try-except แบบกว้างเกินไป ทำให้ช่องโหว่ถูกซ่อนไว้

ความเสี่ยงในโครงการ SolarCorp

จาก SRS.md ระบบของเรามีจุดที่ต้องระวังเป็นพิเศษดังนี้:

1. Lead Data (FR-1.1)

- ข้อมูลลูกค้าคือทรัพย์สิน

- หากถูก SQLi ข้อมูลเบอร์โทร/ค่าไฟจะหลุดทั้งหมด

2. PDPA (FR-1.4)

- หาก AI ลืมเก็บ Consent

- บริษัทจะมีความเสี่ยงทางกฎหมายทันที

AI Governance คืออะไร?

คือการกำหนด "กรอบพฤติกรรม" และ "กฎเหล็ก" เพื่อให้ AI Agent ทำงานอยู่ภายใต้มาตรฐานความปลอดภัยที่ทีมกำหนด

"เราไม่ได้ห้าม AI เขียนโค้ด แต่เราเขียน 'รัฐธรรมนูญ' ให้ AI ทำตาม"

อาวุธหลัก: ไฟล์ .clinerules

ไฟล์ที่บรรจุกฎเฉพาะของโปรเจกต์ ซึ่ง Antigravity จะอ่านทุกครั้งก่อนเริ่มงาน

# System Context Rules

- สถาปัตยกรรม: Django + React เท่านั้น

- มาตรฐาน: ต้องมี Type Hints และ Docstrings เสมอ

- ความปลอดภัย: ห้ามใช้ SQL ธรรมดา ต้องใช้ Django ORM

วงจรการคุมคุณภาพ (Governance Workflow)

1. Define Rules

เขียนกฎลงใน .clinerules

➡️

2. Execute Agent

AI ทำงานตามกฎ

➡️

3. Quality Gate

ตรวจสอบด้วย /verify

ป้องกัน SQL Injection (NFR-3)

กฎที่ต้องใส่ใน .clinerules:

"ห้ามใช้ฟังก์ชัน execute() กับ String Formatting ในการดึงข้อมูล Lead ให้ใช้ Django Filter หรือ Get เสมอ"

"การบังคับใช้กฎในระดับ Governance จะช่วยลดการ Review ซ้ำซ้อนได้ถึง 40%"

PDPA Compliance (FR-1.4)

เราจะสอนให้ AI "เข้าใจกฎหมาย" ผ่านกฎเทคนิค

กฎในฐานข้อมูล:

"ทุก Lead Model ต้องมีฟิลด์ pdpa_accepted (Boolean) และประทับเวลาที่กดยอมรับ"

กฎในหน้า UI:

"หน้าลงทะเบียน SolarCorp ต้องมี Link นโยบายความเป็นส่วนตัวและ Checkbox ที่บังคับติ๊ก"

คำสั่งลับ: /security-scan

เรียกใช้ Security Subagent ใน Antigravity เพื่อสแกนโค้ดทั้งโปรเจกต์

> /security-scan SolarCorp/backend/
...Scanning for SQLi, XSS, Secret Leaks...
🛡️

คุณคือด่านสุดท้าย!

"อย่ากด Accept ถ้ายังไม่ได้อ่านโค้ดความปลอดภัย"

  • 🧐 AI แอบใส่ API Keys ลงในโค้ดหรือเปล่า?
  • 🧐 ฟังก์ชัน PDPA Consent ทำงานได้จริงตามกฎไหม?
  • 🧐 มีการดัก Error ที่กว้างเกินไป (Broad Exception) ไหม?

ความปลอดภัยระดับ Runtime

Antigravity มีระบบ Sandbox เพื่อแยกส่วนการรันโค้ดที่อันตราย

Terminal Sandbox:

จำกัดสิทธิ์การเข้าถึงไฟล์ระบบเมื่อ AI รันคำสั่ง

Skill Permissions:

บังคับให้ Agent ต้องขออนุญาตก่อนรันโค้ดที่แก้ไขระบบสำคัญ

การจัดการความลับ (Secret Management)

❌ ห้าม:

SECRET_KEY = "solar-corp-super-secret" (ใน settings.py)

✅ ถูกต้อง:

SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY")

"เราจะใช้ .env และ .gitignore เพื่อป้องกันความลับรั่วไหลสู่ GitHub"

กิจกรรม: วางกฎเหล็ก SolarCorp

ลงมือปฏิบัติการทำ Team Governance

1. เปิดไฟล์ .clinerules ในโปรเจกต์ของคุณ

2. เพิ่มกฎ **Security Rule** เพื่อป้องกัน SQL Injection

3. เพิ่มกฎ **Compliance Rule** สำหรับ PDPA Consent (FR-1.4)

4. สั่ง AI: "ช่วยสแกนโค้ดปัจจุบันว่าขัดต่อกฎใหม่ที่เราเพิ่งเขียนไหม?"

ระวัง! AI Slop (ขยะดิจิทัล)

โค้ดที่ "รันผ่าน" แต่แฝงความไร้ระเบียบที่จะเป็นภาระในอนาคต

Unused Variables
Prop Drilling (React)
Shadowed outer variables

"Governance ไม่ใช่แค่เรื่อง Security แต่คือเรื่อง Maintainability ด้วย"

สร้างวัฒนธรรม Retrospective

ใช้ AI ช่วยวิเคราะห์ว่าเราสั่งงานพลาดตรงไหน

"สรุปความผิดพลาดที่เกิดขึ้นในการพัฒนาเมื่อวาน และเสนอวิธีปรับปรุงกฎใน .clinerules เพื่อไม่ให้เกิดซ้ำ"

"การเรียนรู้จากความผิดพลาดคือหัวใจของ Orchestrator"

หน้าจอแสดงผลความปลอดภัย

SolarCorp Security Audit Status: Passing
  • ✅ SQL Injection Check: 0 issues
  • ✅ Secret Leak Check: No keys found
  • ⚠️ Broad Exception found in views.py:L45
  • ✅ PDPA Logic Check (FR-1.4): Verified

ขยายขอบเขต Governance สู่ระดับทีม

เมื่อมีคนทำงานร่วมกันมากขึ้น กฎต้องชัดเจนขึ้น

🎯 **Shared Rules:** ทุกคนในทีมใช้ไฟล์ .clinerules ชุดเดียวกัน

🎯 **Automated PR Review:** ใช้ AI สแกน Pull Request ตามกฎที่ตั้งไว้

🎯 **Continuous Audit:** ตรวจสอบประวัติการอนุมัติโค้ด (Audit Trail)

Checkpoint ความเข้าใจ!

✅ รู้จัก 3 จุดเสี่ยงหลัก SQLi, XSS, Broad Exception
✅ รู้วิธีเขียนกฎใน .clinerules เพื่อคุม Agent
✅ เข้าใจความสัมพันธ์ระหว่าง SRS และ Governance
✅ สามารถเรียกใช้ /security-scan ใน Antigravity

การแปลง "ภาษาไทย/กฎหมาย" เป็น "ตรรกะโค้ด"

โจทย์ PDPA SolarCorp:

"ข้อมูลลูกค้าต้องถูกเก็บเป็นความลับและเข้าถึงได้เฉพาะทีมขายระดับ Admin เท่านั้น"

กฎที่ AI ต้องทำตาม:

"Only classes inheriting from IsAuthenticatedAdmin can access lead-detail API"

สรุปบทบาท Security Gate

เราใช้ 3 ชั้นการป้องกันเพื่อความปลอดภัยสูงสุด:

1

Prevent: ตั้งกฎใน .clinerules

2

Scan: ใช้คำสั่ง /security-scan

3

Review: มนุษย์รีวิวโค้ดก่อน Accept

ถอดบทเรียนจากความล้มเหลว (Case Study)

เคส: AI เขียนโค้ดเรียกใช้ subprocess โดยไม่มีการทำ Sanitization ทำให้ระบบถูกรีโมทสั่งการได้

วิธีแก้ไขผ่าน Governance:

"เพิ่มกฎใน .clinerules ว่า 'ห้ามใช้ shell=True ใน subprocess.run() โดยเด็ดขาด'"

ช่วงถาม-ตอบ (Q&A)

"มีข้อสงสัยเรื่องการเขียนกฎควบคุม AI หรือประเด็น PDPA ไหมครับ?"

🧘‍♂️❔

การพัฒนาอย่างมีจริยธรรม (Responsible AI)

ซอฟต์แวร์ที่ดีต้องไม่เพียงแต่รันได้ แต่ต้องไม่สร้างอคติหรือละเมิดสิทธิผู้ใช้

  • ตรวจสอบความโปร่งใสของข้อมูล (Transparency)
  • ป้องกันการเลือกปฏิบัติในระบบคำแนะนำ
  • SolarCorp: ไม่แบ่งแยกการให้บริการตามฐานะการเงินของผู้ลงทะเบียน

ลำดับชั้นของกฎ (Rule Hierarchy)

Global Rules

กฎพื้นฐานขององค์กร

Workspace Rules (.clinerules)

กฎเฉพาะของโครงการ SolarCorp

Session Rules

กฎชั่วคราวสำหรับงานชิ้นปัจจุบัน

โจทย์ท้าทาย Orchestrator

"ลองจงใจเขียนกฎที่ขัดแย้งกันใน .clinerules และรัน Agent ดูว่า Antigravity จะมีปฏิกิริยาอย่างไร?"

"นี่คือการฝึกฝน Conflict Detection เพื่อเข้าใจขีดจำกัดของระบบ"

จบช่วงที่ 1: รากฐานที่แข็งแกร่ง

เมื่อมีกฎเหล็กแล้ว ช่วงถัดไปเราจะใช้ AI สร้างเกราะป้องกันด้วย
**Defensive Coding & Automated Testing**

เตรียมตัวพบกับความเข้มข้นของการ Test ในเวลา 10:45 น.

พักเบรกเช้า

"พักสายตาให้พร้อม สำหรับการสร้างระบบทดสอบอัตโนมัติ"

กลับมาพบกันเวลา 10:45 น.