เนื้อหา › Audit log
เอกสาร/เนื้อหา/Audit log

Audit log

หน้านี้สอนอะไร

เก็บบันทึกว่าใครแก้อะไรเมื่อไร ใครเข้าสู่ระบบ และผู้ดูแลระบบทำอะไรไปบ้าง และวิธีตรวจว่าบันทึกไม่ถูกแก้

ควรอ่านก่อน: ผู้ใช้และการยืนยันตัวตน

ตั้งค่า → Audit log: ตัวกรอง และรายการพร้อมเวลา เหตุการณ์ เอกสาร และผู้กระทำตั้งค่า → Audit log: ตัวกรอง และรายการพร้อมเวลา เหตุการณ์ เอกสาร และผู้กระทำ

เปิดใช้ใน config:

audit: true, // หรือ { keep: 365, values: true, failedLogins: 20 }

การเปิดใช้จะเพิ่มตาราง audit-logs จึงต้องสร้าง migration (npx easy-cms migrate:create audit) จากนั้นผู้ดูแลระบบจะเห็น ตั้งค่า → Audit log และถ้าเปิดบทบาทจากหน้า admin ก็ให้บทบาทอื่นดูหน้านี้ได้ด้วย

บันทึกอะไรบ้าง

  • เนื้อหา: การสร้าง แก้ไข เผยแพร่ ยกเลิกเผยแพร่ กู้คืน และลบเอกสารกับ global การอัปโหลด และการตั้งเวลา พร้อม field ที่เปลี่ยน และค่าก่อนกับหลัง เอกสารที่ถูกลบยังเก็บชื่อไว้
  • การเข้าสู่ระบบ: login, login ไม่สำเร็จ (พร้อมอีเมลที่ลอง), ถูกล็อก, logout, ลืมรหัสผ่าน, ลิงก์รหัสผ่าน และ single sign-on (เข้าสู่ระบบ เชื่อม และยกเลิกเชื่อมบัญชี)
  • การจัดการระบบ: ผู้ใช้ (รวมการเปลี่ยนบทบาทและการปิดใช้งาน), บทบาท, API key, backup ที่เริ่ม ดาวน์โหลด และลบ, อีเมลทดสอบ และการส่งซ้ำหรือลบรายการส่ง

แต่ละรายการบอก ใคร (อีเมลตอนนั้น ยังอ่านได้แม้ผู้ใช้ถูกลบแล้ว), ผ่านอะไร (ผู้ใช้ที่ login, API key ตามชื่อ, โค้ด หรืองาน ตั้งเวลา), IP address และเบราว์เซอร์ ส่วนการอ่านไม่ถูกบันทึก

การเปลี่ยนแปลงจากโค้ดของคุณผ่าน Local API (hook, plugin, สคริปต์ seed) ก็ถูกบันทึกด้วย เป็น โค้ด (ระบบ) หรือเป็น user ที่คุณส่งมา

ค่าที่เก็บ

  • field ที่ซ่อน เช่น password hash ไม่ถูกเก็บเด็ดขาด รหัสผ่านใหม่แสดงแค่ว่า "เปลี่ยนรหัสผ่าน"
  • rich text, blocks, array และ JSON แสดงแค่ว่าเปลี่ยน ค่าที่ยาวเกิน 500 ตัวอักษรถูกตัด
  • ถ้าข้อมูลอ่อนไหว ใช้ audit: { values: false } เพื่อเก็บแค่ชื่อ field ที่เปลี่ยน

ในหน้า admin

  • ตั้งค่า → Audit log เรียงรายการใหม่ไปเก่า กรองตามเหตุการณ์ collection ผู้กระทำ และวันที่ได้ กดเปิดรายการเพื่อดูค่า ก่อนและหลังของแต่ละ field ส่งออก CSV ดาวน์โหลดรายการที่กรองไว้ (สูงสุด 10,000 รายการ)
  • หน้าของเอกสารแสดง กิจกรรม คือรายการล่าสุดของเอกสารนั้น พร้อมลิงก์ไปดูทั้งหมด
  • แดชบอร์ดเตือนเมื่อ login ไม่สำเร็จหลายครั้ง ในหนึ่งชั่วโมง (failedLogins ค่าเริ่มต้น 20), เมื่อบันทึกบางรายการไม่สำเร็จ และเมื่อการตรวจความถูกต้องไม่ผ่าน

ตรวจการแก้ไข

รายการแก้หรือลบผ่าน Easy CMS ไม่ได้ ลบได้อย่างเดียวคือรายการที่เก่ากว่า keep วัน (ค่าเริ่มต้น 365 ตั้ง 0 เพื่อเก็บไว้ ทั้งหมด) โดยลบจากเก่าสุด แต่ละรายการลงลายเซ็นด้วย EASY_CMS_SECRET ปุ่ม ตรวจความถูกต้อง (และการตรวจรายวันจาก งานตั้งเวลา) จะพบรายการที่ถูกแก้ในฐานข้อมูล และรายการที่หายไประหว่างรายการอื่น

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

เขียนรายการจากโค้ด

await cms.audit.record({ action: 'invoice.sent', target: 'invoices', doc: invoice.id })

ถ้าบันทึกรายการไม่สำเร็จ

การเปลี่ยนแปลงยังสำเร็จตามปกติ error ถูกเขียนลง log ของ server และแดชบอร์ดบอกว่าหายไปกี่รายการ

ขั้นต่อไป