1156 คำ
6 นาที
CISA Series ตอนที่ 27 : D3 - Application Controls: 3 ด่านควบคุมข้อมูล (Input / Processing / Output)
สารบัญ

ตอนคุยเรื่อง 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 หมวดหลัก:

  1. Source document / authorization — ทุก transaction ต้องมี authorization ก่อนเข้าระบบ — มี source document ที่ระบุได้ว่าใครอนุมัติ
  2. Batch controls — ถ้าข้อมูลเข้าเป็น batch (กลุ่ม) → มีกลไกตรวจว่าทุก record ใน batch ถูกประมวลผลครบ
  3. Edit / validation controls — ระบบตรวจรูปแบบของข้อมูลก่อนรับเข้า reject ที่ผิดรูป
  4. 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:

  1. Hash total = business figure — ผิด เป็นเลขที่ไม่มีความหมายธุรกิจ
  2. Batch control ประเภทเดียวพอ — ผิด หลายประเภทร่วมกันจับ fraud ได้ละเอียดกว่า
  3. Application controls ครอบคลุม direct database access — ผิด DBA bypass ทำได้เสมอ
  4. Output controls = report formatting — ผิด ครอบคลุม distribution → retention → destruction
  5. Parity = security control — ผิด เป็น transmission integrity ตรวจ bit-level error
  6. 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