Overview
SecurAtlas maintains audit trails across multiple subsystems. These trails support compliance requirements for change tracking, access reviews, and incident investigation.Audit data is append-only by design. Records in audit tables are never updated or deleted under normal operation.
Audit Sources
Billing Events
Stripe webhook events and subscription lifecycle changes
Evidence Validations
Evidence review decisions with reviewer, timestamp, and comments
Platform Integrity Log
System-level events: migrations, cron results, admin actions
Timestamp Tracking
created_at, updated_at, and created_by on all recordsbilling_events
Captures all Stripe webhook events for billing audit compliance:| Event Type | Description |
|---|---|
checkout.session.completed | New subscription created |
customer.subscription.updated | Plan change or renewal |
customer.subscription.deleted | Subscription cancelled |
invoice.payment_failed | Payment failure |
invoice.paid | Successful payment |
The
stripe_event_id unique constraint ensures idempotent processing. Duplicate webhook deliveries from Stripe are silently ignored.evidence_validations
Records every evidence review decision, forming the core compliance audit trail:Evidence Review Workflow as Audit Trail
The evidence validation workflow creates a complete audit chain:Evidence linked to controls
control_evidence_links records created, establishing the compliance mapping.Submitted for review
Evidence status changes to
under_review. The updated_at timestamp captures when.Review decision
An
evidence_validations record captures who reviewed, when, the decision, and any comments.platform_integrity_log
Captures system-level events for operational auditing:| Event Type | Actor | Details |
|---|---|---|
migration_applied | system | {"version": "20250401092000", "name": "sync_control_maturity"} |
cron_executed | cron | {"job": "nightly_risk_recompute", "tenants_processed": 42} |
admin_action | user-uuid | {"action": "disable_tenant", "tenant_id": "..."} |
integration_sync | system | {"connection_id": "...", "entities": 150, "findings": 3} |
Timestamp Tracking
All tenant-scoped tables include standard audit columns:updated_at on any row modification: