Audit Log#
Mục tiêu: Admin tra cứu lịch sử mọi thao tác quan trọng trong hệ thống — phục vụ compliance, điều tra fraud, debug.
Mục tiêu#
- Xem audit log cho toàn hệ thống hoặc 1 entity cụ thể.
- Filter theo action, module, actor, date.
- Export ra CSV cho báo cáo/điều tra.
Điều kiện tiên quyết#
- Quyền Xem Audit Log (Root, Admin).
Cột audit log#
| Cột | Ý nghĩa |
|---|---|
| Hành động | CREATE / UPDATE / DELETE / APPROVE / REJECT / BAN / LOGIN / ... |
| Module | EVENT / CONTENT / USER / STAFF / RECONCILIATION / TRANSFER / ... |
| Người thực hiện | Staff (nếu admin) hoặc User (nếu Influencer) |
| Đối tượng | targetId (resource ID bị tác động) |
| Tên đối tượng | Readable name của target |
| Thay đổi | JSON: {before: {...}, after: {...}} |
| Ngày/giờ | |
| IP Address | |
| User Agent | Browser/device |
Các bước thực hiện#
1. Vào Audit Log#
- Global:
/audit-log(hoặc tab trong menu). - Per entity: từ detail page có nút Audit → drawer mở chỉ log liên quan entity đó.
2. Lọc#
Filter:
- Action — CREATE, UPDATE, DELETE, APPROVE, REJECT, ...
- Module — EVENT, CONTENT, USER, ...
- Actor — chọn staff cụ thể.
- Date range.
- Status (tùy implementation).
3. Xem chi tiết#
Click 1 row → mở detail:
- Full JSON of changes (before/after).
- IP + User Agent (forensic).
- Timestamp chính xác (ms).
4. Export CSV#
- Bấm Export.
- File CSV tạo với max 10.000 rows/lần.
- Download.
Chi tiết từng bước#
Các action chính được log#
- CREATE — tạo record mới.
- UPDATE — sửa record.
- DELETE — xóa.
- APPROVE — duyệt (content, eKYC, transfer).
- REJECT — từ chối.
- BAN / UNBAN — ban user.
- LOGIN / LOGOUT — session events.
- EXPORT — tạo export job.
- PERMISSION_CHANGE — đổi role, đổi permission.
- PASSWORD_CHANGE — đổi mật khẩu.
Actor types#
- Staff — admin user.
- User — Influencer.
- System — cron job hoặc service.
Forensic use cases#
- Fraud investigation: "Ai approve content gian lận này?" → filter module=CONTENT, action=APPROVE, targetId=content_id.
- Permission audit: "Staff X có change role của ai không?" → actor=staff_id, action=PERMISSION_CHANGE.
- Missing data: "Record Y biến mất từ khi nào?" → targetId=Y, action=DELETE.
- Login pattern: "Account bị hack không?" → actor=user_id, action=LOGIN, check IP khác thường.
Retention#
Audit log lưu lâu dài (thường ≥ 2 năm) cho compliance. Check policy cụ thể với Legal/Security.
Lỗi thường gặp#
1. Log không xuất hiện cho action vừa làm#
- Delay 1–2s. Refresh.
- Một số action minor không được log (tùy config).
2. Changes (before/after) rỗng#
- Action "read-only" (ví dụ VIEW, LOGIN) không có changes.
- Hoặc log old code chưa capture đủ.
3. Export bị cut#
- Quá 10k rows. Narrow filter.
- Chia export theo tháng.
4. Thấy IP localhost/127.0.0.1#
- Request qua proxy/loadbalancer chưa forward header đúng.
- Liên hệ DevOps fix
X-Forwarded-For.
5. Actor = null#
- Action từ cron job hoặc service account.
- Check
systemcategory thay vì staff/user.
Câu hỏi thường gặp (FAQ)#
Log có bị sửa được không?
Không. Write-only + immutable. Nếu thấy bị sửa → security breach nghiêm trọng.
Bao lâu lưu được?
Tùy policy. Thường 2+ năm cho compliance tài chính.
Export có bao gồm sensitive data (password, CCCD)?
Không. Hệ thống auto-mask/redact sensitive fields trước khi log.
Log có chậm hệ thống không?
Async write — không ảnh hưởng response time của action chính.
Có alert khi action nghi ngờ không?
Tùy setup. Có thể config alert cho:
- Mass delete (> 100 records).
- Permission change.
- Login từ IP lạ.
Liên hệ DevOps để setup.
Tôi muốn query phức tạp (SQL)?
Export CSV + analyze trong Excel/Python/SQL. Hoặc xin DevOps quyền read DB audit table.
Liên kết liên quan#
Tham khảo SRS: admin-portal/15-audit