PlusMagi's Blog By Pitt Phunsanit Cybersecurity ความรู้พื้นฐานกฎหมาย PDPA (บทบาทบุคคล, Data Subject, Data Controller, Data Processor, DPO)

ความรู้พื้นฐานกฎหมาย PDPA (บทบาทบุคคล, Data Subject, Data Controller, Data Processor, DPO)

ในยุคที่ข้อมูลส่วนบุคคล (Personal Data) กลายเป็นสินทรัพย์ที่มีมูลค่าสูงสุด การกำกับดูแลข้อมูลจึงเป็นเรื่องเร่งด่วน กฎหมายคุ้มครองข้อมูลส่วนบุคคล (PDPA) จึงเข้ามาเป็นกรอบการทำงานสำคัญสำหรับทุกองค์กร ไม่ว่าจะเป็นธุรกิจขนาดเล็กหรือระบบเทคโนโลยีขนาดใหญ่

ในฐานะ System Specialist เราไม่ได้มอง PDPA เป็นเพียงข้อบังคับทางกฎหมาย แต่คือหลักการออกแบบสถาปัตยกรรมข้อมูล (Data Architecture) ที่ต้องคำนึงถึงความเป็นส่วนตัวตั้งแต่ต้นทาง (Privacy by Design) การทำความเข้าใจบทบาทหน้าที่ของแต่ละฝ่ายจึงเป็นสิ่งสำคัญอย่างยิ่ง

🔑 บทบาทหลักใน PDPA: ใครควบคุม? ใครประมวลผล?

การแยกแยะบทบาทเหล่านี้ช่วยให้เรากำหนดขอบเขตความรับผิดชอบทางเทคนิคได้อย่างชัดเจน:

  • Data Subject (เจ้าของข้อมูล): คือบุคคลที่เป็นเจ้าของสิทธิในข้อมูลส่วนบุคคลนั้น ๆ
  • Data Controller (ผู้ควบคุมข้อมูล): คือองค์กรที่มีอำนาจตัดสินใจว่าจะเก็บรวบรวม ใช้ หรือเปิดเผยข้อมูลใดบ้าง (เช่น บริษัทที่ออกแบบระบบ)
  • Data Processor (ผู้ประมวลผลข้อมูล): คือองค์กรที่ได้รับมอบหมายให้ดำเนินการตามคำสั่งของ Controller เท่านั้น โดยไม่มีสิทธิ์ในการกำหนดวัตถุประสงค์เอง (เช่น Outsource Service Provider)

การทำความเข้าใจขอบเขตนี้จะนำเราไปสู่การออกแบบระบบฐานข้อมูลที่ต้องมีการจำกัดสิทธิ์ (Role-Based Access Control – RBAC) อย่างเข้มงวด

⚙️ การประยุกต์ใช้ PDPA ด้วย PostgreSQL: การควบคุมสิทธิ์และการติดตามข้อมูล

ในทางเทคนิค เราสามารถใช้คุณสมบัติขั้นสูงของ PostgreSQL เพื่อจำลองการแยกบทบาทและความรับผิดชอบตามหลัก PDPA ได้ โดยเฉพาะการใช้ jsonb สำหรับเก็บ Metadata ของความยินยอม และ Recursive CTEs ในการตรวจสอบเส้นทางการไหลของข้อมูล (Data Lineage):

1. การจัดเก็บ Consent Metadata ด้วย JSONB

แทนที่จะมีตารางแยกสำหรับทุกวัตถุประสงค์ เราสามารถใช้ jsonb เพื่อเก็บรายละเอียดความยินยอมที่ยืดหยุ่นและตรวจสอบได้:

SQL

SQL

-- ตารางผู้ใช้งาน (Data Subject) และ Metadata ความยินยอม
CREATE TABLE user_consent (
    user_id INT PRIMARY KEY,
    data_subject_name TEXT NOT NULL,
    consent_metadata JSONB
);

INSERT INTO user_consent (user_id, data_subject_name, consent_metadata) VALUES
(101, 'สมชาย ใจดี', '{ 
  "purpose": "marketing", 
  "granted": true, 
  "timestamp": NOW()
}');

2. การจำลอง Data Lineage ด้วย Recursive CTE

ในฐานะ Controller เราต้องรู้ว่าข้อมูลถูกส่งต่อไปที่ใดบ้าง (Data Flow) ซึ่งสามารถใช้ Recursive Common Table Expression (CTE) เพื่อติดตามการประมวลผล:

SQL

SQL

-- ตารางบันทึกการไหลของข้อมูล
CREATE TABLE data_flow_log (
    source_id INT, 
    target_system TEXT,
    data_type TEXT,
    PRIMARY KEY (source_id, target_system)
);

WITH RECURSIVE data_lineage AS (
    SELECT source_id, target_system, data_type FROM data_flow_log WHERE source_id = 101
    UNION ALL
    SELECT dfl.source_id, t2.target_system, dfl.data_type || ' -> ' || t2.data_type 
    FROM data_flow_log dfl JOIN (SELECT * FROM data_flow_log WHERE source_id = 101) t2 ON TRUE
)
SELECT DISTINCT source_id, target_system, data_type FROM data_lineage;
-- ผลลัพธ์นี้ช่วยให้ Controller ทราบว่าข้อมูลถูกส่งไปที่ไหนบ้าง

✅ สรุป: การกำกับดูแลคือการออกแบบระบบ

PDPA ไม่ใช่แค่เอกสาร แต่คือแนวคิดในการออกแบบสถาปัตยกรรมฐานข้อมูล (Database Architecture) ที่ต้องคำนึงถึงหลักการจำกัดสิทธิ์ (Least Privilege) และความสามารถในการตรวจสอบย้อนกลับ (Auditability) เสมอ การใช้เครื่องมืออย่าง PostgreSQL ให้เกิดประโยชน์สูงสุด ทั้งในด้านการจัดการโครงสร้างข้อมูลที่ซับซ้อนและการติดตามเส้นทางของข้อมูล จะช่วยให้องค์กรของคุณไม่เพียงแต่ปฏิบัติตามกฎหมาย แต่ยังสร้างรากฐานความเชื่อมั่นให้กับผู้ใช้งานได้อย่างยั่งยืน