এই ভলিউমে · ভলিউম 08
সিস্টেম বৈশিষ্ট্য
নোটিফিকেশন অডিট লগ

অধ্যায় ৮.২ — অডিট লগ

১. উদ্দেশ্য

অডিট লগ — "কে কী করেছে কখন কোথা থেকে"। প্ল্যাটফর্মের ট্যাম্পার-প্রতিরোধী রেকর্ড।

২. কেন এটি গুরুত্বপূর্ণ

  • কমপ্লায়েন্স: SOC 2, ISO 27001, PCI-DSS
  • ফরেনসিক: ঘটনার তদন্ত
  • জবাবদিহিতা: ব্যবহারকারী দায়বদ্ধতা
  • ব্যবসায়িক বুদ্ধি: ব্যবহার patterns

৩. কী লগ করা হয়

সব ব্যবসা-অর্থবোধক ইভেন্ট: - Authentication: login success/failure, MFA, password change - Authorization: permission grant/revoke, role assign - Data: create/update/delete এন্টিটি - Financial: JE post/reverse, payment, refund - Configuration: partner setting পরিবর্তন - Integration: GDS call, webhook delivery - Period: open, soft-close, close, reopen

৪. স্কিমা

audit_logs (
  log_id              BIGINT PK,
  partner_id          BIGINT,
  event_type          VARCHAR(100),     -- 'BOOKING.CREATED'
  actor_type          VARCHAR(20),      -- 'USER' / 'API' / 'SYSTEM'
  actor_id            BIGINT,
  actor_name          VARCHAR(200),     -- denormalized for history
  target_entity_type  VARCHAR(50),      -- 'BOOKING', 'JE', etc.
  target_entity_id    BIGINT,
  request_id          VARCHAR(50),      -- correlation
  ip_address          VARCHAR(50),
  user_agent          VARCHAR(500),
  event_payload       JSON,
  diff                JSON,              -- before/after
  reason              VARCHAR(500),
  timestamp           DATETIME(6),
  hash_chain_prev     CHAR(64),
  hash_chain_self     CHAR(64)
)

৫. Tamper-evidence — Hash Chaining

প্রতিটি রো-এর hash_chain_self = SHA-256 of (prev_hash + all_columns_concatenated)

আক্রমণকারী যদি পুরাতন রো পরিবর্তন করে → তার hash পরিবর্তন → পরের সব hash ভাঙে। ডিটেক্ট হয় nightly verification job-এ।

৬. ধারণ

ক্যাটাগরি ধারণ
Financial-impact events ১০ বছর
Authentication events ৭ বছর
Configuration events ৭ বছর
Read events (sensitive) ২ বছর
Marketing/preference events ৩ বছর

Glacier-এ আর্কাইভ পুরাতন রো।

৭. অ্যাক্সেস

audit.read.* permission প্রয়োজন। Auditor role-এ ডিফল্ট। অন্য কাউকে দিলে maker-checker চাই।

Audit log নিজেই অডিটেবল — কে দেখেছে সেটাও লগ।

৮. অনুসন্ধান ও ফিল্টার

UI-এ: - Time range - Actor (user) - Event type - Target entity - IP address - Free-text search

বড় partner-এর জন্য অনুসন্ধান optimised: (partner_id, timestamp) ইনডেক্স।

৯. এক্সপোর্ট

Audit pack: - Date range - Filter criteria - Export to S3 (CSV + JSON) - Hash chain verification certificate - Tamper-evident envelope

১০. ইন্টিগ্রিটি ভেরিফিকেশন

Nightly job:

for row in audit_logs ordered by id:
    expected = sha256(prev_hash + serialize(row))
    assert row.hash_chain_self == expected

ব্যর্থতা → security alert, incident response।

১১. সাধারণ ফাঁদ

  • ⚠️ অডিট লগের mutation প্রয়োজনীয় — ভুল, append-only রাখুন
  • ⚠️ Sensitive data (passwords, PAN) লগে — log redaction
  • ⚠️ Hash chain skip — tamper detection ভেঙে যায়
  • ⚠️ Audit log read events log না করা — meta-audit gap