This document describes the comprehensive audit trail system implemented for the NEPA platform to ensure regulatory compliance, security monitoring, and operational transparency.
-
Audit Service (
services/AuditService.ts)- Central audit logging service
- Event sourcing integration
- Compliance reporting
- Search and filtering capabilities
-
Audit Database (
databases/audit-service/)- Dedicated PostgreSQL database for audit logs
- Immutable audit trail storage
- Retention policy management
- Performance-optimized indexes
-
Audit Middleware (
middleware/auditMiddleware.ts)- Automatic audit context capture
- Request/response logging
- Security event detection
- Rate limit breach tracking
-
Audit Controller (
controllers/AuditController.ts)- REST API for audit log access
- Compliance report generation
- Data export capabilities
- User activity timelines
-
Event Handlers (
databases/event-patterns/handlers/auditHandlers.ts)- Domain event audit logging
- Event sourcing integration
- Real-time audit trail creation
-
Cleanup Service (
services/AuditCleanupService.ts)- Automated log retention
- Archival management
- Compliance with data retention policies
USER_REGISTER- User registrationUSER_LOGIN- User login attemptsUSER_LOGOUT- User logoutUSER_UPDATE_PROFILE- Profile modificationsUSER_CHANGE_PASSWORD- Password changesUSER_ENABLE_2FA/USER_DISABLE_2FA- Two-factor authentication changesUSER_VERIFY_EMAIL- Email verificationUSER_RESET_PASSWORD- Password reset requestsUSER_REVOKE_SESSION- Session revocationUSER_UPDATE_WALLET- Wallet address updates
ADMIN_UPDATE_USER_ROLE- User role modificationsADMIN_SUSPEND_USER- User account suspensionADMIN_ACTIVATE_USER- User account activationADMIN_DELETE_USER- User account deletionADMIN_VIEW_USER_DATA- Access to user dataADMIN_EXPORT_DATA- Data export operationsADMIN_SYSTEM_CONFIG- System configuration changes
PAYMENT_INITIATE- Payment initiationPAYMENT_SUCCESS- Successful paymentsPAYMENT_FAILED- Failed paymentsPAYMENT_RETRY- Payment retry attemptsPAYMENT_REFUND- Refund processingPAYMENT_CANCEL- Payment cancellation
BILL_CREATE- Bill creationBILL_UPDATE- Bill modificationsBILL_PAY- Bill paymentBILL_CANCEL- Bill cancellationCOUPON_APPLY/COUPON_REMOVE- Coupon operations
DOCUMENT_UPLOAD- File uploadsDOCUMENT_DOWNLOAD- File downloadsDOCUMENT_DELETE- File deletionsDOCUMENT_VIEW- File access
WEBHOOK_CREATE- Webhook registrationWEBHOOK_UPDATE- Webhook modificationsWEBHOOK_DELETE- Webhook removalWEBHOOK_TRIGGER- Webhook executionWEBHOOK_RETRY- Webhook retry attempts
RATE_LIMIT_BREACH- Rate limit violationsSECURITY_ALERT- Security incidentsLOGIN_FAILURE- Failed login attemptsACCOUNT_LOCKOUT- Account lockoutsDATA_EXPORT- Data export operationsSYSTEM_ERROR- System errors
interface AuditLog {
id: string;
correlationId?: string;
// Actor Information
userId?: string;
adminId?: string;
sessionId?: string;
// Action Details
action: AuditAction;
resource: string;
resourceId?: string;
description?: string;
// Context Information
ipAddress?: string;
userAgent?: string;
endpoint?: string;
method?: string;
// Result Information
status: AuditStatus; // SUCCESS, FAILURE, PENDING, ERROR
severity: AuditSeverity; // LOW, MEDIUM, HIGH, CRITICAL
errorMessage?: string;
// State Information
beforeState?: any;
afterState?: any;
metadata?: any;
// Compliance
retentionDate?: Date;
isArchived: boolean;
createdAt: Date;
}The audit system includes event sourcing capabilities for complete state reconstruction:
interface AuditEvent {
id: string;
eventType: string;
aggregateId: string;
aggregateType: string;
eventData: any;
eventVersion: number;
correlationId?: string;
causationId?: string;
userId?: string;
timestamp: Date;
}GET /api/audit/logs
Query parameters:
userId- Filter by user IDaction- Filter by audit actionresource- Filter by resource typestartDate/endDate- Date range filteringseverity- Filter by severity levellimit/offset- Pagination
GET /api/audit/users/:userId/timeline
Returns chronological user activity with context.
POST /api/audit/reports/compliance
Generates comprehensive compliance reports for various standards (SOC2, PCI DSS, GDPR).
GET /api/audit/export
Exports audit logs in JSON or CSV format with filtering options.
GET /api/audit/stats
Returns audit statistics and metrics for monitoring dashboards.
| Resource Type | Retention Period | Compliance Requirement |
|---|---|---|
| Payment | 7 years | Financial regulations |
| Bill | 7 years | Financial regulations |
| User | 1 year | GDPR compliance |
| Document | 3 years | Business requirements |
| Webhook | 90 days | Operational needs |
| System | 180 days | Security monitoring |
| Default | 90 days | General operations |
- Daily Cleanup: Removes expired audit logs based on retention policies
- Weekly Archival: Archives old logs instead of deletion for compliance
- Manual Cleanup: Admin-triggered cleanup with custom parameters
- Audit logs are append-only
- No modification or deletion of active logs
- Cryptographic integrity checks (planned)
- Role-based access to audit data
- Users can only view their own activity
- Admins have full audit access
- Super admins can export and generate reports
- Sensitive data filtering (passwords, tokens)
- IP address and user agent tracking
- Correlation ID for request tracing
- Encrypted storage (database level)
- Complete audit trail of all system access
- User activity monitoring
- Administrative action logging
- Security incident tracking
- Payment transaction logging
- Cardholder data access tracking
- Security event monitoring
- Regular audit log review
- User data access logging
- Data export/deletion tracking
- Consent management audit
- Right to be forgotten support
The audit system integrates with the existing event bus:
// Automatic audit logging for domain events
eventBus.subscribe('payment.success', auditHandlers['payment.success']);
eventBus.subscribe('user.created', auditHandlers['user.created']);// Automatic audit logging for API endpoints
app.use('/api/users', auditAuth(AuditAction.USER_UPDATE_PROFILE));
app.use('/api/payments', auditPayment(AuditAction.PAYMENT_INITIATE));// Manual audit logging in services
await auditService.logAudit({
action: AuditAction.ADMIN_UPDATE_USER_ROLE,
resource: 'user',
resourceId: userId,
beforeState: { role: oldRole },
afterState: { role: newRole }
});# Start audit database
docker-compose -f docker/docker-compose.audit.yml up -d
# Run setup script
npm run setup:audit-database# Audit database connection
AUDIT_DATABASE_URL=postgresql://postgres:password@localhost:5440/nepa_audit
# Redis for audit event queuing (optional)
REDIS_URL=redis://localhost:6379npx prisma generate --schema=./databases/audit-service/schema.prismanpx prisma db push --schema=./databases/audit-service/schema.prisma- Audit log volume and growth rate
- Failed audit operations
- High-severity security events
- Compliance report generation
- Database performance metrics
- Critical security events (immediate alert)
- High volume of failed operations
- Audit database connectivity issues
- Retention policy violations
- Unusual user activity patterns
- Partitioned tables by date for large volumes
- Optimized indexes for common queries
- Connection pooling for audit database
- Async audit logging to prevent blocking
- Separate audit database for isolation
- Redis queuing for high-volume events
- Batch processing for bulk operations
- Archival to cold storage for old logs
-
Real-time Audit Dashboard
- Live audit event streaming
- Security incident visualization
- User activity heatmaps
-
Advanced Analytics
- Anomaly detection in user behavior
- Predictive security alerts
- Compliance trend analysis
-
Enhanced Security
- Cryptographic log signing
- Blockchain-based audit trail
- Zero-knowledge audit proofs
-
Integration Improvements
- SIEM system integration
- Webhook notifications for critical events
- API for external audit tools
-
Audit Database Connection Errors
- Check database connectivity
- Verify environment variables
- Ensure database is running
-
High Audit Log Volume
- Review retention policies
- Implement log sampling for high-frequency events
- Consider archival to external storage
-
Performance Issues
- Monitor database query performance
- Review index usage
- Consider read replicas for reporting
-
Missing Audit Logs
- Check event handler registration
- Verify middleware configuration
- Review error logs for failed audit operations
# Check audit database health
npm run audit:health-check
# View recent audit logs
npm run audit:logs --limit=100
# Generate test compliance report
npm run audit:test-report
# Manual cleanup (dry run)
npm run audit:cleanup --dry-runThis comprehensive audit trail implementation provides:
- Complete visibility into system operations
- Regulatory compliance capabilities
- Security monitoring and incident response
- Operational transparency and accountability
- Scalable architecture for future growth
The system is designed to be non-intrusive to application performance while providing comprehensive audit coverage for all critical operations.