Skip to main content

Compliance Evidence Generation

Replace screenshots in Word documents with cryptographically signed, machine-readable evidence that auditors can verify independently.

The Compliance-Reality Gap

Auditors are no longer accepting assertions. They want proof.

What auditors ask forWhat most teams provide
Evidence of tested backupsA bucket listing in a PDF
Restore test results"We tested it last quarter"
Tamper-proof documentationScreenshots in a Word document
Repeatable validationManual, ad-hoc procedures
Signed evidence chainEmail attachments

Approximately 40% of organisations now receive requests for live backup restoration evidence during audits. The trend is accelerating under GDPR, SOX, and CMMC.

What Auditors Actually Ask For

  1. Proof that backups exist and contain the expected data
  2. Proof that backups can be restored — not just that they were taken
  3. Tamper-evident documentation — checksums, signatures, chain of custody
  4. Repeatable process — the same validation produces the same evidence
  5. Framework-specific controls — which check satisfies which requirement

Supported Compliance Frameworks

SOX (Sarbanes-Oxley, Section 404)

IT General Controls require backup integrity monitoring, restore testing, and 7-year evidence retention. The validation suite satisfies these with SHA-256 checksums (accepted by SOX auditors as tamper-evident documentation) and configurable retention.

CMMC Level 2 (NIST SP 800-171, RE.3.139)

Requires organisations handling CUI to "regularly perform and test data back-ups" with documented evidence. Every validation check maps directly to RE.3.139.

GDPR Article 32

Requires "regularly testing, assessing, and evaluating the effectiveness of technical and organisational measures" for data protection. The evidence report demonstrates restore capability with performance metrics (RTO).

Also Satisfies

  • NIS2 — regular recovery tests with documented results
  • ISO 27001 — documented RTOs/RPOs and recovery test evidence
  • Cyber Insurance — monthly compliance reports on backup health

How It Works

Backup (existing)     Restore (existing)     Validate (new)
│ │ │
▼ ▼ ▼
┌─────────┐ ┌──────────┐ ┌──────────────┐
│ S3/GCS/ │ │ Restored │ │ Validation │
│ Azure │─────────▶│ Kafka │─────────▶│ Runner │
│ Storage │ manifest │ Cluster │ checks │ │
└─────────┘ └──────────┘ └──────┬───────┘

┌─────────────┼─────────────┐
▼ ▼ ▼
┌──────────┐ ┌─────────┐ ┌──────────┐
│ JSON │ │ PDF │ │ .sig │
│ Report │ │ Report │ │Signature │
└──────────┘ └─────────┘ └──────────┘

┌─────┴──────┐
▼ ▼
┌────────┐ ┌──────────┐
│ Slack │ │PagerDuty │
└────────┘ └──────────┘

Example: Weekly SOX Validation

Run every Sunday at 02:00 UTC via cron:

# /etc/cron.d/kafka-backup-validation
0 2 * * 0 kafka-backup validation run --config /etc/kafka-backup/sox-validation.yaml

The evidence report is automatically uploaded to S3 with 7-year retention. Your SOX auditor gets a URL to 52 weeks of uninterrupted evidence.

Example: Auditor-Triggered PITR Validation

When an auditor asks "prove you can restore data from March 15th":

$ kafka-backup validation run \
--config validation.yaml \
--pitr 1710460800000 \
--triggered-by "External auditor KPMG - Q1 2026 review"

The --triggered-by string appears in the evidence report, establishing chain of custody.

Example: PagerDuty Alert on Failure

notifications:
pagerduty:
integration_key: "your-key"
severity: critical

On failure, the SRE on-call receives a PagerDuty alert with the evidence report URL, enabling investigation before the next audit.

Comparison: OSO Kafka Backup vs Alternatives

FeatureOSO Kafka BackupKannika ArmoryConfluent PlatformVelero
Automated restore-and-validateYesManual kubectl stepsNoManual
Machine-readable evidence (JSON)Yes, signedNoNoNo
Auditor-ready PDF reportYes, brandedNoNoNo
Cryptographic signingECDSA-P256-SHA256NoNoNo
SOX/CMMC/GDPR mappingExplicit in reportNoNoNo
Prometheus validation metrics8 dedicated metricsBackup progress onlyPartialPartial
Slack/PagerDuty on resultYesNoNoNo
Evidence retention (7yr default)Yes, configurableNoNoNo
OSS / freeMITCommercialCommercialApache 2.0

Next Steps