ใช้ AI อย่างปลอดภัย — กันข้อมูลหลุด & สิ่งที่ต้องระวัง
AI ช่วยงานได้เยอะ แต่มี “จุดตาย” ที่ dev พลาดกันบ่อยที่สุด — เผลอส่งข้อมูลที่ไม่ควรส่งออกไป ทั้งความลับบริษัท ข้อมูลลูกค้า หรือ secret ในโค้ด บทนี้ไม่ได้ขู่ให้กลัว AI แต่จะให้ “กติกาใช้งาน” ที่ทำให้คุณใช้ AI เต็มที่โดยไม่เผลอทำข้อมูลหลุด
หลักคิดเดียวที่ต้องจำ: ทุกอย่างที่คุณพิมพ์/แปะ/ให้ AI อ่าน ถือว่า “ออกไปนอกเครื่องคุณแล้ว” — มันวิ่งไปประมวลผลที่เซิร์ฟเวอร์ผู้ให้บริการ ถ้าข้อมูลนั้นหลุดออกนอกองค์กรไม่ได้ ก็อย่าเพิ่งส่ง
ข้อมูลเดินทางไปไหนบ้าง
เข้าใจเส้นทางข้อมูลก่อน แล้วจะรู้ว่าต้อง “กัน” ตรงไหน
ห้ามส่งอะไรเข้า AI (โดยไม่คิดก่อน)
กฎง่ายๆ: ถ้าเป็น PII (ข้อมูลส่วนบุคคล), ความลับ, หรือทรัพย์สินขององค์กร — ให้ถือว่า “ต้องคิดก่อนส่ง”
| ประเภท | ตัวอย่าง | ทำแทน |
|---|---|---|
| Secret | API key, password, token, connection string, private key | ไม่ต้องส่ง — ใช้ตัวแปรจำลอง <API_KEY> |
| PII ลูกค้า | ชื่อ-เบอร์-อีเมล-เลขบัตร ปชช.-ที่อยู่ ของผู้ใช้จริง | ปิดบัง (mask) หรือใช้ข้อมูลปลอม |
| ข้อมูลอ่อนไหว | ข้อมูลสุขภาพ การเงิน กฎหมาย ที่มีข้อผูกพัน | ตรวจนโยบาย/สัญญาก่อน (PDPA) |
| โค้ด/ความลับบริษัท | ซอร์สโค้ด production, สูตรธุรกิจ, schema DB ภายใน | ตัดเป็นชิ้นเล็ก/ทำ minimal example |
เคสที่เจ็บบ่อยสุด: แปะ error log ทั้งก้อน ให้ AI ช่วยดู แล้วในนั้นมี token / connection string / อีเมลลูกค้าติดไปด้วยโดยไม่ทันเห็น — สแกนก่อนแปะเสมอ
การตั้งค่าฝั่งผู้ให้บริการ (data retention & training)
“ผู้ให้บริการเก็บข้อมูลเราไหม / เอาไปเทรนต่อไหม” ต่างกันตามช่องทางและแพ็กเกจ — ต้องรู้ก่อนใช้งานจริง
- API / Console (งาน dev): โดยทั่วไป Anthropic ไม่เอา input/output จาก API ไปเทรนโมเดล โดยอัตโนมัติ แต่ยังมี data retention (เก็บชั่วคราวเพื่อความปลอดภัย/กฎหมาย)
- Zero Data Retention (ZDR): องค์กรที่เข้าเงื่อนไขขอเปิด ZDR ได้ — เหมาะกับข้อมูลอ่อนไหว (หมายเหตุ: บางโมเดลรุ่นใหม่บังคับ retention ขั้นต่ำ จึงใช้ร่วมกับ ZDR ไม่ได้)
- แอปผู้บริโภค (เช่นแชตทั่วไป): นโยบายต่างจาก API — บางที่อาจใช้บทสนทนาไปปรับปรุงบริการ ถ้าไม่ตั้งค่า opt-out → อย่าใช้ช่องทางผู้บริโภคกับข้อมูลบริษัท
สิ่งที่ต้องทำจริง: (1) แยกใช้ API/Console สำหรับงานที่มีข้อมูลองค์กร (2) เปิด ZDR ถ้าองค์กรมีสิทธิ์และงานอ่อนไหว (3) ยืนยันนโยบายปัจจุบันในเอกสารผู้ให้บริการเสมอ เพราะนโยบายเปลี่ยนได้
ตั้งค่า Claude Code ให้ “กันหลุด”
ตอนใช้ Claude Code (หรือ agent ที่อ่านไฟล์ได้) จุดเสี่ยงคือมันอาจ อ่านไฟล์ที่ไม่ควรอ่าน
(เช่น .env) แล้วเนื้อหานั้นถูกส่งขึ้น cloud คุมได้ด้วย settings.json
// .claude/settings.json — ปฏิเสธการอ่านไฟล์ลับ + คุมสิทธิ์คำสั่ง
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Read(./**/*.pem)"
],
"ask": [
"Bash(git push:*)",
"Bash(rm:*)"
]
}
}
deny: บล็อกไม่ให้อ่านไฟล์ลับเด็ดขาด (secret ไม่ถูกส่งขึ้น cloud)ask: คำสั่งเสี่ยง (push, ลบไฟล์) ต้องขออนุมัติก่อนทำ — กัน “agent ทำเกิน”.gitignoreให้ครบ:.env, key, dump ข้อมูล — กันทั้ง commit หลุดและ AI อ่านโดยบังเอิญ- MCP / tool: ต่อเฉพาะเท่าที่จำเป็น จำกัดขอบเขต (least privilege) — ยิ่งต่อเยอะ ยิ่งมีทางข้อมูลรั่ว
เวลาต่อ AI เข้ากับโค้ด (LLM API)
1) เก็บ API key ให้ถูก
// ❌ ห้าม hardcode
const client = new Anthropic({ apiKey: "sk-ant-xxxxx" });
// ✅ อ่านจาก environment variable เสมอ (อย่า commit .env)
const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
2) Redact / mask PII ก่อนยิงเข้าโมเดล
ถ้าต้องประมวลผลข้อมูลผู้ใช้ ให้แทนที่ค่าจริงด้วย placeholder ก่อน แล้วค่อยแมปกลับหลังได้คำตอบ
// ตัวอย่างแนวคิด (NestJS/TS)
function redact(text: string): string {
return text
.replace(/[\w.+-]+@[\w-]+\.[\w.-]+/g, "<EMAIL>") // อีเมล
.replace(/\b0\d{8,9}\b/g, "<PHONE>"); // เบอร์ไทย
}
const safePrompt = redact(userMessage);
regex เป็นแค่ด่านแรก ไม่ครอบคลุม 100% — สำหรับข้อมูลอ่อนไหวจริงจัง ควรใช้ไลบรารี PII detection และตรวจซ้ำ อย่าพึ่ง regex อย่างเดียว
3) Logging hygiene
- อย่า log prompt/response แบบเต็ม ลง log ที่ทีมอื่นเห็นได้ — เพราะข้อมูลอ่อนไหวจะไปนอนอยู่ใน log
- ถ้าต้อง log ให้ log แบบ redact แล้ว หรือเก็บแค่ metadata (จำนวน token, latency, สถานะ)
- ระวัง 3rd-party observability/APM ที่ดูด payload อัตโนมัติ
4) อย่าเชื่อ output ตาบอด
ข้อมูลรั่วไม่ได้มาทาง input อย่างเดียว — prompt injection อาจหลอกให้ AI “เผยข้อมูล” หรือสั่ง tool ให้ส่งข้อมูลออกไป (data exfiltration) — validate output, แยก user input ออกจาก instruction, และจำกัดสิทธิ์ tool (เจาะลึกใน Lv7 · Production)
เช็กลิสต์ก่อนใช้ AI กับงานจริง
| # | เช็ก |
|---|---|
| 1 | ในสิ่งที่จะส่ง มี secret / PII / ข้อมูลลูกค้า หลุดติดไปไหม? (สแกนก่อน) |
| 2 | ใช้ช่องทางที่นโยบายข้อมูลถูกต้องไหม (API/Console สำหรับงานองค์กร)? |
| 3 | API key อยู่ใน env และ .env อยู่ใน .gitignore แล้ว? |
| 4 | settings.json deny ไฟล์ลับ + ask คำสั่งเสี่ยง แล้ว? |
| 5 | มี redact PII ก่อนส่ง และไม่ log prompt เต็ม? |
| 6 | ต่อ tool/MCP เท่าที่จำเป็น (least privilege) และ validate output? |
- เปิดโปรเจกต์จริงของคุณ แล้วเช็ก:
.envอยู่ใน.gitignoreไหม? ถ้ายัง เพิ่มเลย - เขียน
denyrule ในsettings.jsonสำหรับไฟล์ลับอย่างน้อย 2 pattern ในโปรเจกต์คุณ - ยกสถานการณ์งานจริงที่คุณ “เกือบ” แปะข้อมูลลูกค้าให้ AI — ถ้าเกิดขึ้น จะ redact ยังไงให้ยังใช้งานได้
ลองตอบในแชท แล้วพิมพ์ /quiz security เพื่อทดสอบความเข้าใจ