Skip to content

BE-019 — Implement Audit Logging & Compliance API - #317

Merged
dDevAhmed merged 1 commit into
DigiNodes:mainfrom
Marvelg256:feat/290-audit-logging-api
Jul 29, 2026
Merged

BE-019 — Implement Audit Logging & Compliance API#317
dDevAhmed merged 1 commit into
DigiNodes:mainfrom
Marvelg256:feat/290-audit-logging-api

Conversation

@Marvelg256

Copy link
Copy Markdown

Closes #290

📚 Overview

Implements a production-ready Audit Logging & Compliance API providing immutable, searchable, and tamper-evident records of all significant activities across the TruthBounty platform.

✅ Acceptance Criteria

Criteria Status
Audit events recorded successfully
Search and filtering operate correctly
Compliance reports can be generated
Retention policies function correctly
Monitoring metrics are available
Audit logs remain immutable (append-only)
Unit and integration tests pass ✅ (51 tests)

🧩 What Was Implemented

1. Audit Event Recording

  • 40+ action types covering claims, evidence, rewards, users, authentication (LOGIN_SUCCESS, LOGIN_FAILED, LOGOUT, TOKEN_REFRESHED, PASSWORD_RESET), authorization (PERMISSION_CHANGED, ROLE_ASSIGNED, ROLE_REVOKED), administrative (ADMIN_ACTION, CONFIGURATION_CHANGED), moderation (MODERATOR_ACTION), governance (GOVERNANCE_PROPOSAL_CREATED, GOVERNANCE_VOTE_CAST, etc.), disputes, reputation, notifications, AI interactions, data management

2. Enhanced Audit Log Storage

  • New fields: eventId (unique event identifier), severity (LOW/MEDIUM/HIGH/CRITICAL), category (12 categories), source (service origin), requestId, retentionUntil (legal hold)
  • 12 database indexes for query performance
  • Append-only architecture (no update/delete endpoints)

3. Search & Filtering

  • Filter by: entityType, actionType, severity, category, userId, source, requestId, correlationId, date range, free-text search
  • Paginated results with total/next/previous metadata

4. Compliance Reporting

  • 7 report types: admin-activity, moderation-actions, login-history, governance-actions, permission-changes, security-incidents, audit-summary
  • Export in JSON and CSV formats with Content-Disposition headers

5. Security Monitoring

  • Brute-force login detection (configurable threshold)
  • Permission escalation detection
  • Suspicious API usage monitoring
  • Grouped security event reporting
  • Per-user security check endpoint

6. Data Retention

  • Configurable retention period via AUDIT_LOG_RETENTION_DAYS env var (default 365)
  • Daily cron-based purge with legal hold protection (retentionUntil)
  • Export functionality for archival

7. Monitoring Metrics (Prometheus)

  • audit_events_total, audit_events_by_action_total, audit_events_by_severity_total, audit_events_by_category_total
  • audit_write_duration_seconds, audit_search_duration_seconds
  • audit_storage_records_total, audit_oldest_record_age_days
  • audit_failed_writes_total, audit_export_operations_total, audit_retention_operations_total

8. Performance

  • Async writes via BullMQ queue (logAsync)
  • Batch ingestion (logBatch)
  • Indexed queries with composite indexes
  • Efficient pagination with skip/take

9. API Standardisation

  • All responses follow AuditResponse<T> / AuditPaginatedResponse<T> shapes
  • Consistent: success boolean, data, pagination (page/limit/total/totalPages/hasNext/hasPrevious), timestamp, requestId

10. Future Extensibility

  • source field for cross-service auditing
  • eventId for blockchain correlation
  • requestId / correlationId for distributed tracing
  • Extensible enums for new event/entity types

📁 Files Changed (20 files)

Modified (6)

  • src/audit/audit.module.ts - Register queue, all new services, processor
  • src/audit/controllers/audit-log.controller.ts - 15+ new endpoints
  • src/audit/entities/audit-log.entity.ts - Extended enums, new fields, indexes
  • src/audit/services/audit-trail.service.ts - Batch, async, enhanced query
  • src/audit/services/index.ts - Export all services
  • src/audit/services/audit-trail.service.spec.ts - Comprehensive test update

Created (14)

  • src/audit/config/audit.config.ts + index.ts
  • src/audit/dto/audit-query.dto.ts
  • src/audit/interfaces/audit-response.interface.ts + index.ts
  • src/audit/processors/audit-log.processor.ts
  • src/audit/services/compliance.service.ts + .spec.ts
  • src/audit/services/security-monitoring.service.ts + .spec.ts
  • src/audit/services/audit-metrics.service.ts + .spec.ts
  • src/audit/services/audit-queue.service.ts + .spec.ts

🧪 Tests

51 tests passing across 6 test suites (0 failures):

  • audit-trail.service.spec.ts - 14 tests (log, batch, async query, filters, storage stats, retention, IP security)
  • compliance.service.spec.ts - 9 tests (all report types, CSV/JSON export, daily/category summaries)
  • security-monitoring.service.spec.ts - 8 tests (failed logins, escalation, API abuse, security events)
  • audit-metrics.service.spec.ts - 7 tests (counters, histograms, storage gauges, getMetrics)
  • audit-queue.service.spec.ts - 5 tests (enqueue, batch, error handling, queue stats)
  • audit-retention.service.spec.ts - 2 tests (existing, preserved)

📋 New API Endpoints

GET    /audit                              # Query with filters + pagination
GET    /audit/entity/:entityType/:entityId # Logs for specific entity
GET    /audit/user/:userId                 # User activity
GET    /audit/action/:actionType           # By action type
GET    /audit/changes/:entityType/:entityId# Change history
GET    /audit/summary                      # Action type summary
GET    /audit/event/:eventId               # By event ID
GET    /audit/correlation/:correlationId   # By correlation ID
GET    /audit/stats/storage                # Storage statistics
POST   /audit/export                       # Export (JSON/CSV)
GET    /audit/reports                      # Compliance reports
GET    /audit/reports/daily                # Daily activity
GET    /audit/reports/categories           # Category summary
GET    /audit/security/events              # Recent security events
GET    /audit/security/failed-logins       # Failed login report
GET    /audit/security/admin-activity      # Admin activity report
GET    /audit/security/check/:userId       # Per-user security check
GET    /audit/metrics                      # Audit system metrics

🔗 Dependencies

  • Depends on: BE-001 (Auth), BE-011 (Governance), BE-015 (Admin/Moderation), BE-016 (Monitoring)
  • Blocks: Administration Portal, Moderator Console, Security Operations, Compliance Reporting, Incident Investigation, Analytics Platform

- Enhanced AuditLog entity with severity, category, eventId, source,
  requestId, retentionUntil fields and 25+ new action types
- Added AuditQueueService for async/batch writes via BullMQ
- Added ComplianceService for 7 report types with CSV/JSON export
- Added SecurityMonitoringService (brute-force, escalation, API abuse)
- Added AuditMetricsService with Prometheus counters/histograms/gauges
- Added standardized API response types (AuditResponse, AuditPaginatedResponse)
- Added DTOs with validation for queries, exports, and reports
- Added AuditLogProcessor for queue-based async write processing
- Enhanced AuditTrailService with batch, async, comprehensive filtering
- Updated AuditController with 15+ new endpoints (export, reports,
  security, metrics, event lookup, correlation tracing)
- Added audit config for retention, archival, batch size settings
- 51 tests passing across 6 test suites (audit-trail, compliance,
  security-monitoring, audit-metrics, audit-queue, audit-retention)
@dDevAhmed
dDevAhmed merged commit fb0e32f into DigiNodes:main Jul 29, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BE-019 — Implement Audit Logging & Compliance API

2 participants