Wednesday, August 18, 2010

Database Auditing

เพื่อป้องกันการปฏิเสธการกระทำของ users (non-repudiability) เช่น ถ้า user บังเอิญลบรายการ และเขาปฏิเสธว่าไม่ได้กระทำ เราจะต้องมีกระบวนการที่จะทำให้ user ไม่สามารถปฏิเสธในสิ่งที่เขากระทำได้
การเพิ่ม application auditing จะช่วยในการควบคุมและป้องกัน non-repudiability ได้ โดยอาจใช้ DDL trigger และ การกำหนด permission ให้เหมาะสม

Audit patterns
การ audit เพื่อป้องกัน non-repudiability มีรูปแบบ ดังนี้

Simple audit in columns
ทำการเพิ่ม columns ใน table อย่างน้อย 4 columns ประกอบด้วย
1. user ผู้บันทึกข้อมูล
2. วัน เวลา ที่บันทึกข้อมูล
3. user ผู้ปรับปรุงข้อมูล
4. วัน เวลา ที่ปรับปรุงข้อมูล
รูปแบบนี้เป็นรูปแบบพื้นฐานที่สุดในการ audit และจะทราบได้เพียงผู้ปรับปรุงครั้งสุดท้ายเท่านั้น ซึ่งไม่สามารถทราบผู้ปรับปรุงก่อนหน้าได้

Simple audit in tables
ทำการเก็บข้อมูลการเปลี่ยนทั้งหมดของ table ต่างๆในฐานข้อมูล ลง table ที่เก็บ audit log รูปแบบนี้ช่วยให้สามารถทราบจำนวนของการปรับปรุง และ ผู้ทำการปรับปรุงแต่ละครั้งได้

History table
กรณีที่ต้องการเก็บการเปลี่ยนแปลงทั้งหมด (full audit log) อาจจะต้องสร้าง history tables ที่เหมือนกับ table ที่จะ audit เมื่อมีการ insert, update และ delete ข้อมูล ก็จะมีการเก็บข้อมูลไว้ใน history table ซึ่งใน history table จะประกอบด้วย columns ทั้งหมดเหมือน original table, long integer identity หรือ GUID column ที่เป็น primary key, user และ date columns
รูปแบบนี้มีประโยชน์มากสำหรับ table ที่ต้องการการควบคุมการเปลี่ยนแปลงข้อมูล และต้องการทราบประวัติของข้อมูลย้อนหลังด้วย

Audit log table with and XML column
โดยการสร้าง audit table ซึ่งประกอบด้วย 2 column ประกอบด้วย table name และ XML column ซึ่งเก็บข้อมูลการเปลี่ยนแปลงทั้งหมดในรูปแบบของ XML เนื่องจากว่า SQL Server 2005 มีการจัดการ XML ที่ดีขึ้น จึงสามารถจัดเก็บเป็น XML ได้

NooM

No comments: