ในยุคที่ข้อมูลส่วนบุคคล (PII - Personally Identifiable Information) กลายเป็นสินทรัพย์ที่มีค่ามากที่สุดขององค์กร การปกป้องข้อมูลเหล่านี้จึงไม่ใช่ทางเลือก แต่เป็นข้อบังคับทางกฎหมาย ไม่ว่าจะเป็น PDPA, GDPR หรือ CCPA บทความนี้จะพาคุณสร้าง Compliance Checklist สำหรับ PII Masking ที่ครอบคลุมและเหมาะกับการใช้งานจริงในปี 2026
ทำไมต้อง PII Masking?
PII Masking คือกระบวนการซ่อนหรือแทนที่ข้อมูลที่สามารถระบุตัวบุคคลได้ เช่น ชื่อ นามสกุล เลขบัตรประจำตัวประชาชน เบอร์โทรศัพท์ อีเมล หรือที่อยู่ ก่อนส่งข้อมูลเข้า AI API เพื่อป้องกันการรั่วไหลและลดความเสี่ยงทางกฎหมาย
- ปฏิบัติตามกฎหมาย: PDPA กำหนดให้องค์กรต้องมีมาตรการป้องกันการรั่วไหลของข้อมูลส่วนบุคคล
- ลดความเสี่ยง: ข้อมูล PII ที่ถูก Mask แล้วจะไม่สามารถนำไปใช้โดยมิชอบได้หากเกิดการรั่วไหล
- ประหยัดต้นทุน: การป้องกันตั้งแต่ต้นทางถูกกว่าการแก้ไขปัญหาหลังเกิดเหตุ
เปรียบเทียบต้นทุน AI API ปี 2026
ก่อนเริ่มต้นพัฒนา มาดูต้นทุนของ AI API หลักในปี 2026 เพื่อวางแผนงบประมาณได้อย่างเหมาะสม:
| โมเดล | ราคา Output ($/MTok) | ต้นทุน 10M Tokens/เดือน |
|---|---|---|
| GPT-4.1 | $8.00 | $80 |
| Claude Sonnet 4.5 | $15.00 | $150 |
| Gemini 2.5 Flash | $2.50 | $25 |
| DeepSeek V3.2 | $0.42 | $4.20 |
จะเห็นได้ว่า DeepSeek V3.2 มีต้นทุนต่ำที่สุดถึง 95% เมื่อเทียบกับ Claude Sonnet 4.5 ซึ่งเหมาะมากสำหรับงาน PII Masking ที่ต้องประมวลผลข้อมูลจำนวนมาก
Compliance Checklist: 5 ขั้นตอนสำคัญ
1. ระบุประเภท PII ที่ต้องปกป้อง
ก่อนเริ่ม Masking ต้องทำ Inventory ของข้อมูล PII ที่มีในระบบ:
- PII โดยตรง: ชื่อ-นามสกุล, เลขบัตรประจำตัวประชาชน (13 หลัก), เลข passport
- PII อ้อม: เบอร์โทรศัพท์, อีเมล, ที่อยู่, วันเกิด
- PII อ่อนไหว: ข้อมูลสุขภาพ, ข้อมูลธนาคาร, ข้อมูลเชื้อชาติ ศาสนา
- Derived PII: ข้อมูลที่สามารถรวมกันแล้วระบุตัวบุคคลได้
2. เลือกรูปแบบ Masking ที่เหมาะสม
แต่ละ Use Case ต้องการระดับการ Masking ที่ต่างกัน:
- Full Mask: แทนที่ด้วย *** ใช้เมื่อไม่ต้องการข้อมูลนั้นเลย
- Partial Mask: แสดงบางส่วน เช่น 081-***-7890
- Format Preserving: รักษา Format เดิม เหมาะกับ Testing
- Tokenization: แทนที่ด้วย Token ที่ Map กลับได้ (ต้องเก็บ Mapping อย่างปลอดภัย)
3. สร้าง Pipeline สำหรับ AI API Integration
# ตัวอย่าง: PII Masking Pipeline สำหรับ AI API
import re
import requests
class PIIMasker:
def __init__(self, api_key):
self.base_url = "https://api.holysheep.ai/v1"
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
# Regex patterns สำหรับ PII ภาษาไทย
THAI_ID_PATTERN = r'\b[0-9]{13}\b'
PHONE_PATTERN = r'\b0[0-9]{9}\b'
EMAIL_PATTERN = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
def mask_thai_id(self, text):
"""Mask เลขบัตรประจำตัวประชาชน 13 หลัก"""
return re.sub(self.THAI_ID_PATTERN, '[THAI_ID_REDACTED]', text)
def mask_phone(self, text):
"""Mask เบอร์โทรศัพท์ไทย"""
def replace_phone(match):
num = match.group()
return f"{num[:3]}-XXX-{num[-4:]}"
return re.sub(self.PHONE_PATTERN, replace_phone, text)
def mask_email(self, text):
"""Mask อีเมล"""
def replace_email(match):
email = match.group()
local, domain = email.split('@')
return f"{local[:2]}***@{domain}"
return re.sub(self.EMAIL_PATTERN, replace_email, text)
def mask_all(self, text):
"""Mask PII ทั้งหมดในข้อความ"""
masked = self.mask_thai_id(text)
masked = self.mask_phone(masked)
masked = self.mask_email(masked)
return masked
def send_to_ai(self, masked_text, model="deepseek-chat"):
"""ส่งข้อความที่ Mask แล้วไปยัง AI API"""
payload = {
"model": model,
"messages": [{"role": "user", "content": masked_text}]
}
response = requests.post(
f"{self.base_url}/chat/completions",
headers=self.headers,
json=payload
)
return response.json()
การใช้งาน
masker = PIIMasker(api_key="YOUR_HOLYSHEEP_API_KEY")
raw_text = "ลูกค้าชื่อ สมชาย ใช้บัตรประชาชน 1234567890123 ติดต่อได้ที่ 0812345678"
masked_text = masker.mask_all(raw_text)
print(masked_text)
Output: ลูกค้าชื่อ สมชาย ใช้บัตรประชาชน [THAI_ID_REDACTED] ติดต่อได้ที่ 081-XXX-5678
4. กำหนด Data Retention Policy
เอกสารนโยบายการเก็บรักษาข้อมูลต้องระบุชัดเจน:
- ระยะเวลาเก็บ: ไม่เก็บ PII ที่ถูก Mask เกินกว่า 30 วัน
- สิทธิ์การเข้าถึง: กำหนด Role-based access สำหรับผู้ดูแลระบบ
- Audit Log: บันทึกทุกครั้งที่มีการ Mask/Unmask
- การทำลาย: Schedule สำหรับลบข้อมูลที่หมดอายุ
5. ทดสอบและ Validate อย่างสม่ำเสมอ
# ตัวอย่าง: Unit Test สำหรับ PII Masker
import unittest
from pii_masker import PIIMasker
class TestPIIMasker(unittest.TestCase):
def setUp(self):
self.masker = PIIMasker(api_key="test_key")
def test_thai_id_masking(self):
text = "บัตรประชาชน: 1234567890123"
result = self.masker.mask_thai_id(text)
self.assertEqual(result, "บัตรประชาชน: [THAI_ID_REDACTED]")
def test_phone_masking(self):
text = "โทร 0812345678"
result = self.masker.mask_phone(text)
self.assertEqual(result, "โทร 081-XXX-5678")
def test_multiple_pii(self):
text = "นาย A เลขบัตร 1234567890123 เบอร์ 0812345678 อีเมล [email protected]"
result = self.masker.mask_all(text)
self.assertNotIn("123456789
แหล่งข้อมูลที่เกี่ยวข้อง
บทความที่เกี่ยวข้อง