สารบัญ
ตอนคุยเรื่อง control ใน Domain 1 ตอน 05 เราจัดหมวด control เป็น 5 ประเภท preventive, detective, corrective, deterrent, compensating และ 3 method administrative, technical, physical
บทนี้ลงไปลึกในระดับ application และจะเห็นว่า control แต่ละประเภทพวกนั้นจริงๆ ฝังอยู่ใน process ของ application ทุกตัวที่ touch ข้อมูลธุรกิจ
Mental model หลักของบทนี้: ทุก application ที่จับข้อมูลธุรกิจมี 3 ด่าน ที่ control ต้องครอบคลุม
Input → Processing → Output
ด่านแรก — กันข้อมูลผิดเข้ามา ด่านสอง — ระหว่างประมวลผล ข้อมูลไม่ถูกเปลี่ยนแปลงอย่างไม่ได้รับอนุญาต ด่านสาม — ผลลัพธ์ไปถึงคนที่ควรได้ ในรูปแบบที่ปลอดภัย
ขาด control ที่ด่านไหน “garbage in, garbage out” จากคำพังเพยกลายเป็น audit finding ที่บันทึกในรายงานทันที
ทำไม Section 3.4 เป็น “the heart” ของ D3
ในมุม auditor Section 3.4 มีค่าที่สุดเพราะ control ใน 3.4 ทดสอบได้จริง
จำที่คุยใน Domain 1 ได้ไหมครับ control ที่ “design effective” ไม่จำเป็นต้อง “operating effective” เสมอไป auditor ทดสอบทั้ง 2 อย่าง
ใน 3.4 เราทดสอบได้แบบนี้:
- Edit control — ส่ง test transaction ที่ผิดรูปแบบเข้าระบบ ดูว่า reject ถูกไหม
- Batch total — ใส่ batch ที่ total ไม่ตรง ดูว่าระบบจับได้ไหม
- Output distribution — ลอง trigger report ที่มี sensitive data ดูว่าถูกส่งให้คนที่ ไม่ได้ authorize ไหม
นี่คือเรื่องที่ทำให้ application controls = exam-heavy section ของ D3
ด่านที่ 1: Input / Origination Controls
หลักการ
กันบาดเจ็บก่อนเข้าโรงพยาบาล ดีกว่ารักษาในห้อง ER
ข้อมูลที่ผิดเข้าระบบไปแล้ว แก้ยากกว่าและ trail หาย ป้องกันที่ด่านแรกคือต้นทุนต่ำที่สุด
Input controls มี 4 หมวดหลัก:
- Source document / authorization — ทุก transaction ต้องมี authorization ก่อนเข้าระบบ มี source document ที่ระบุได้ว่าใครอนุมัติ
- Batch controls — ถ้าข้อมูลเข้าเป็น batch (กลุ่ม) → มีกลไกตรวจว่าทุก record ใน batch ถูกประมวลผลครบ
- Edit / validation controls — ระบบตรวจรูปแบบของข้อมูลก่อนรับเข้า reject ที่ผิดรูป
- Data conversion controls — ถ้าข้อมูลมาจากระบบอื่น ตรวจ integrity ระหว่างการ convert
Batch Controls — 4 แบบที่ทำงานคนละหน้าที่
ลองนึกถึงการรับเช็ค 100 ใบเข้าธนาคาร มี 4 มิติของคำว่า “ครบไหม”:
| Batch control type | ตอบคำถามว่า | ตัวอย่าง |
|---|---|---|
| Monetary total | ยอดเงินรวมตรงไหม | รวมยอดเช็คทุกใบใน batch = 1,250,000 บาท |
| Item count | จำนวน item ตรงไหม | นับเช็คได้ 100 ใบ |
| Document count | จำนวนเอกสารตรงไหม | มี deposit slip 1 ใบประกอบ batch |
| Hash total | เลขที่ “ไม่มีความหมายธุรกิจ” รวมแล้วตรงไหม | รวมเลขบัญชีของเช็คทุกใบ |
กับดัก ⚠️: Hash total = ตัวเลขทางธุรกิจ
ผิดครับ Hash total ตั้งใจให้เป็นตัวเลขที่ ไม่มีความหมายในตัวเอง รวมยอด account number, รวม customer ID, รวม invoice number การที่มันไม่มีความหมายธุรกิจคือ feature ไม่ใช่ bug ใครที่พยายาม manipulate ตัวเลขจะไม่รู้ว่า hash total ที่คาดหวังคือเท่าไหร่
กับดัก: ใช้ batch control ประเภทเดียวพอ
ผิด แต่ละประเภทตรวจคนละมิติ:
- Monetary total ผ่าน + item count ตก = มีคนเปลี่ยนยอดเช็คใบเดียวให้ใหญ่ขึ้น และลบเช็คใบอื่นออก
- Item count ผ่าน + monetary total ตก = มีคนเปลี่ยนยอดของเช็คบางใบ
- ทั้งคู่ผ่าน + hash total ตก = มีคนเปลี่ยน account number ของเช็คใบใดใบหนึ่ง
ระบบที่ใช้ หลายประเภทร่วมกัน จับ fraud ได้ละเอียดกว่ามาก
Edit Controls — ระบบ reject ข้อมูลผิดรูป
ลองนึกถึงฟอร์มขอสินเชื่อออนไลน์ของธนาคาร ระบบจะไม่ยอมให้กดส่งถ้า:
- เลขประจำตัว 13 หลักของไทยรวม checksum ไม่ถูก (check digit verification)
- รายได้ระบุติดลบหรือเกินขอบเขตที่กำหนด (limit / range check)
- ID นี้ยื่นขอสินเชื่อในรอบ 30 วันแล้ว (duplicate check)
- กรอกอีเมลผิดรูปแบบ (validity check ต่อ format)
- เลือก “ผู้กู้ร่วม” แต่ไม่กรอกข้อมูลผู้กู้ร่วม (completeness check)
- รายได้ 100,000 แต่อายุ 18 ปีและเป็นนักศึกษา (reasonableness check)
- ระบุจังหวัด “เชียงใหม่” แต่รหัสไปรษณีย์ขึ้นต้นด้วย “10” (logical relationship check)
edit controls มีหลายแบบที่ผม distill จากที่อ่าน แต่ละแบบตรวจคนละสิ่ง:
- Sequence check — ลำดับเลขเอกสารต่อเนื่องไหม ขาดหายไหม
- Limit check — ค่าเกินขอบเขตที่ตั้งไหม
- Range check — ค่าอยู่ในช่วงที่ valid ไหม (เช่น เดือน 1-12)
- Validity check — ค่าตรงกับ list ของค่าที่อนุญาตไหม (เช่น country code)
- Reasonableness check — ค่าสมเหตุสมผลในบริบทไหม
- Table lookup — ค่ามีใน reference table ไหม
- Existence check — field ที่บังคับมีค่าไหม
- Key verification — keying ผิดไหม (key 2 ครั้งแล้วเทียบ)
- Check digit — ตัวเลขเช็ค checksum ตรงไหม
- Completeness check — record ครบทุก field ที่ต้องมีไหม
- Duplicate check — เป็น record ที่มีอยู่แล้วไหม
- Logical relationship check — ความสัมพันธ์ระหว่าง field สมเหตุสมผลไหม
มุม IS auditor: ไม่ใช่แค่ถามว่า “มี edit check ไหม” แต่ทดสอบจริง ส่ง test transaction ที่ผิดรูปเข้าไป ดูว่าระบบ reject หรือไม่ และ reject ถูกประเภทไหม
ด่านที่ 2: Processing Controls
หลักการ
ข้อมูลผ่านด่าน input แล้ว เข้าระบบมา ตอนนี้ control ต้องตอบคำถาม:
“ระหว่างที่ระบบประมวลผล — ข้อมูลถูกเปลี่ยนแปลงโดยไม่ได้รับอนุญาตไหม”
Processing controls มีหลายประเภท:
Run-to-Run Totals
ระหว่าง process ระบบเก็บ total ก่อน-หลังของแต่ละ step → เปรียบเทียบ → ถ้าไม่ตรง = มีปัญหา
ลองนึกถึงระบบเงินเดือน:
- เริ่มต้น: 1,000 พนักงาน, total gross = 50,000,000 บาท
- หลังคำนวณภาษี: 1,000 พนักงาน, total tax = 7,500,000, total net = 42,500,000
- หลังโอนเข้าบัญชี: 1,000 transactions, total transferred = 42,500,000
ถ้าจำนวนพนักงานหลัง process ใดๆ ไม่ใช่ 1,000 = มี integrity break ที่ไหนสักจุด
Exception Reports
ระบบบันทึก transaction ที่ “ผิดปกติ” ไว้ใน exception report ให้คนตรวจสอบทีหลัง
กับดัก: Exception report = control ที่เพียงพอ
ไม่ใช่ครับ exception report เป็น detective control ตรวจหลังเหตุ ต้องคู่กับ:
- กระบวนการ review exception report เป็นระยะ
- ผู้รับผิดชอบที่ชัดเจน
- Timeline สำหรับแก้ไข
- Escalation เมื่อแก้ไม่ทัน
ถ้า exception report ออกทุกวัน แต่ไม่มีใครเปิด control นี้ = 0
Reasonableness Verification
นอกจาก validate ตอน input ระหว่าง process ก็ verify ได้ว่าผลลัพธ์ “สมเหตุสมผล” ไหม
เช่น ระบบคำนวณยอด commission เกิน 200% ของยอดขาย → flag ให้ supervisor approve ก่อน post
Manual Recalculation
สำหรับ transaction ใหญ่ๆ ใช้คนคำนวณซ้ำเปรียบเทียบกับระบบ ไม่ใช่เพราะไม่เชื่อระบบ แต่เพื่อ catch programming bug + manipulation
มุมที่ผู้บริหารต้องเข้าใจ: processing controls ที่ดีไม่ได้ทำงานเงียบๆ ต้องมีคนอ่าน คนตอบสนอง คนรับผิดชอบ ระบบ alert 1,000 ครั้ง/วันที่ไม่มีใครดู = control ที่อยู่บนกระดาษเท่านั้น
File Controls — ปกป้องข้อมูลที่อยู่ในระบบ
นอกจากข้อมูลที่ไหลผ่าน ข้อมูลที่ เก็บอยู่ในไฟล์ / ฐานข้อมูล ก็ต้อง control เหมือนกัน:
Before/After Image
บันทึก snapshot ของ record ก่อนแก้ และ หลังแก้ เพื่อ:
- Rollback transaction ที่ผิดพลาด
- Audit trail — รู้ว่าใครเปลี่ยนอะไรเป็นอะไร
- Forensic — สืบสวนเมื่อมีปัญหา
ลองนึกถึงร้านซ่อมรถที่ดีครับ ถ่ายรูปก่อนซ่อมและหลังซ่อม ถ้ามีข้อพิพาท = มีหลักฐาน
Transaction Logs
บันทึก transaction ทุกตัวที่เข้าระบบ ใคร เมื่อไหร่ ทำอะไร จาก IP ไหน ผลเป็นอย่างไร
สำคัญสุด: transaction log ต้องบันทึก การเปลี่ยน system control parameters ด้วย ไม่ใช่แค่ business transaction การที่ admin เปลี่ยน threshold ของ control = ต้อง log
Internal / External Labels
ในระบบที่มี media (เช่น tape backup) มี:
- Internal label — metadata ที่ระบบอ่านเพื่อ verify ว่ามี media ที่ถูก
- External label — ป้ายที่คนอ่าน เพื่อระบุ media เมื่อจะใช้
ป้องกันการใช้ wrong media (เช่น overwrite backup ของเดือนผิด)
Parity Checking
ตรวจ integrity ของข้อมูลในการ transmission ตรวจ bit-level error
กับดัก: Parity = security control
ผิดครับ parity เป็น transmission integrity control ตรวจว่าข้อมูลขนส่งถึงปลายทางครบถ้วนหรือไม่ ไม่ได้ป้องกัน unauthorized access เลย
ถ้าเอกสารส่งทางไปรษณีย์ parity check = ตรวจว่ากระดาษที่ได้รับครบทุกแผ่น มันไม่ได้ตรวจว่า คนที่ส่งคือคนที่ควรส่งหรือเปล่า
ด่านที่ 3: Output Controls
หลักการ
ข้อมูลออกจากระบบ ไปไหน ใครเห็น เก็บอย่างไร
Output controls ครอบคลุม:
Report Distribution
ใครได้รับ report อะไร ต้องระบุชัดเจน
ระบบที่ดี:
- มี distribution list ที่ approve โดยเจ้าของข้อมูล
- Sensitive report ส่งผ่าน secure channel (encrypted email, secure portal) ไม่ใช่ email ปกติ
- มี access control บน print queue ป้องกันคนอื่นแอบดู report ที่ค้างใน printer
Balancing / Reconciling
Output ของระบบหนึ่ง = input ของอีกระบบ → ต้อง reconcile ให้ตรง
เช่น ระบบ payroll output ยอดรวม = ระบบ accounting input ยอดเงินเดือน ต้องเท่ากัน ถ้าไม่เท่า = มีปัญหาที่ต้องสืบ
Output Retention
นานแค่ไหนเก็บ output, นานแค่ไหนทำลาย ตามกฎหมาย + business need
ผูกกับ Domain 5: sensitive output retention ต้องมี encryption + access controls เดี๋ยว Domain 5 จะลง data protection ลึกกว่านี้
Receipt Verification
ผู้รับ acknowledge ว่าได้รับ output แล้ว โดยเฉพาะสำหรับ output ที่ critical (เช่น report ส่งให้ regulator)
กับดัก: Output controls = report formatting
ผิดครับ output controls ครอบคลุมตั้งแต่ generation → distribution → access → retention → destruction การจัดรูปแบบสวยๆ ไม่ใช่ control
DBA Bypass — Application Controls’ Achilles Heel
ปัญหาใหญ่ที่ application controls ไม่ครอบคลุม
ผมเกริ่นเรื่องนี้มาตั้งแต่ตอน 23 ขอย้ำอีกครั้งเพราะเป็นเรื่องที่สำคัญที่สุดของบทนี้
กับดัก ⚠️ ใหญ่สุดของบทนี้: Application controls ครอบคลุม เส้นทางผ่าน application เท่านั้น
ถ้า DBA (Database Administrator) เข้า database ตรง application controls ทุกตัว ถูก bypass
ลองนึกถึงร้านอาหาร:
- Application control = “ลูกค้าต้องสั่งอาหารผ่าน waiter เท่านั้น” waiter ตรวจ menu ตรวจ allergy ส่งให้ chef
- DBA bypass = chef เปิดประตูครัวไปคุยกับลูกค้าเอง รับ order ปรุง ส่ง ไม่ผ่าน waiter
ทุก control ที่ออกแบบให้ “ผ่าน waiter” หายไปเหมือน control ไม่เคยมี
มุม IS Auditor
ตรวจทั้ง 2 layer:
Application layer:
- Edit controls ทำงานไหม
- Batch totals balance ไหม
- Output distribution ผ่าน controlled list ไหม
Database layer:
- ใครมี direct database access (DBA, system administrator)
- DBA access ถูก log ไหม
- DBA log ถูก review โดยคนนอกทีม DBA ไหม (SoD!)
- มี emergency change procedure สำหรับ DBA action ที่ต้อง bypass application ไหม
มุมที่ผู้บริหารต้องเข้าใจ: องค์กรที่บอกว่า “ระบบเรามี edit check ครบแล้ว ข้อมูลต้องถูกต้อง” ขาดมิติของ database access ไป ถ้า DBA ไม่ผ่าน SoD → control assurance ใกล้ศูนย์
เรื่อง IAM + privileged access ลึกๆ เดี๋ยว Domain 5 จะลง access control ลึกขึ้น
ACID — รากฐานของ Database Integrity
ผมยกเรื่องนี้มาเพราะมันเป็น foundation ของ processing + file controls ในระบบที่ใช้ database (ซึ่งก็คือเกือบทุกระบบ)
ACID = 4 คุณสมบัติของ transaction ในฐานข้อมูล:
- Atomicity — transaction “ทำทั้งหมดหรือไม่ทำเลย” ไม่มีสภาพ “ทำครึ่งหนึ่ง” เช่น โอนเงิน A → B = หัก A และเพิ่ม B ทำคู่กัน ถ้า fail ระหว่างทาง = ทั้งคู่ rollback
- Consistency — transaction ที่จบสมบูรณ์ ทำให้ database อยู่ในสภาพ valid (ตาม integrity constraints)
- Isolation — transaction ที่รันพร้อมกัน เห็นกันไม่ได้ เหมือนทำคนเดียว
- Durability — transaction ที่ commit แล้ว = ถาวร แม้ระบบล่มหลังจากนั้น
ระบบที่ละเลย ACID auditor จะเจอ data integrity issues ตามมาอีกเพียบ
ทำไมเรื่องนี้สำคัญกับ exam
ผมเห็น 6 trap pattern หลักใน Section 3.4:
- Hash total = business figure — ผิด เป็นเลขที่ไม่มีความหมายธุรกิจ
- Batch control ประเภทเดียวพอ — ผิด หลายประเภทร่วมกันจับ fraud ได้ละเอียดกว่า
- Application controls ครอบคลุม direct database access — ผิด DBA bypass ทำได้เสมอ
- Output controls = report formatting — ผิด ครอบคลุม distribution → retention → destruction
- Parity = security control — ผิด เป็น transmission integrity ตรวจ bit-level error
- Exception report = control ที่เพียงพอ — ผิด ต้องมี review process + ผู้รับผิดชอบ
จำ 6 ข้อนี้ได้ — Section 3.4 ผ่านระดับแนวคิดไปแล้วเกินครึ่ง
ถึงตรงนี้เรามี application ที่มี control ครบทุกด่านแล้ว แต่ “มี control” ≠ “control ทำงาน”
คำถามถัดไปคือ ทดสอบยังไงว่า control พวกนี้ทำงานจริงก่อน go-live? และ IS auditor เองมีเครื่องมือทดสอบอะไรบ้าง
ตอนหน้าจะลง testing + IS auditor’s own toolkit ทั้ง CAATs ที่เคยพูดใน Domain 1 และ tools เฉพาะของ SDLC
อ้างอิง CRM (CISA Review Manual 28th Edition): Domain 3: Section 3.4 Control Identification and Design