WAF++ WAF++
Back to WAF++ Homepage

Evidence & Audit

Sovereign compliance must be verifiable. This page describes what evidence types WAF++ expects for the Sovereign pillar and how audits are structured.

Evidence Types

Evidence Type Description Typical Sources

Architecture Evidence

Diagrams, data flow diagrams, trust boundary documentation, region labels

Draw.io, C4 diagrams, Architecture Decision Records (ADR)

IaC Evidence

Terraform code, plans, state snapshots, CI logs, policy-as-code configurations

Git repository, Terraform Cloud, atlantis, CI/CD logs

Config Evidence

Exported configurations, resource graph, KMS key policies, security group rules

AWS Config snapshots, Azure Resource Graph, GCP Asset Inventory

Logging Evidence

CloudTrail/audit logs, admin actions, break-glass sessions, egress logs, KMS accesses

CloudTrail, CloudWatch, Azure Monitor, GCP Cloud Audit Logs

Process Evidence

Runbooks, change records, access review records, restore test reports, exit drill reports

ITSM system (Jira, ServiceNow), GitLab Issues, Confluence

Contract Evidence

Subprocessor lists, DPA agreements, SLA/compliance artefacts, provider attestations

Contract management, PDF archive, provider portal (BSI C5 attestations)

Minimum Evidence Requirements

Every piece of evidence in the sovereign context MUST:

  • Be dated and versioned (no undated screenshots)

  • Be assigned to a control ID (e.g. WAF-SOV-070 in the filename/metadata)

  • Be traceable: source, responsible party, scope clearly identifiable

  • Be retained: according to the retention policy (at least 3 years for compliance evidence)

Audit Structure (Sovereign Focus)

A sovereign audit typically follows this sequence:

Phase 1: Verify Policy Foundation

  • Does a data residency policy exist? → WAF-SOV-010

  • Is it versioned and current?

  • Does it cover all data classes and environments?

Phase 2: Verify Technical Enforcement

  • Is region pinning enforced in IaC? → WAF-SOV-020

  • Are there SCP/policy/org policy guardrails?

  • Are there no hard-coded non-sovereign regions in IaC?

Phase 3: Verify Leak Paths

The most common sovereignty gaps are:

  1. Backup replicationWAF-SOV-030

    • Where do backups replicate to? Are restore tests documented?

  2. Observability exportsWAF-SOV-040

    • Where are logs, traces, metrics sent?

  3. Egress pathsWAF-SOV-090

    • Are there open security groups or unmonitored egress paths?

Phase 4: Verify Key Control

  • Which data category uses which key model? → WAF-SOV-050

  • Is key rotation enabled?

  • Is there a key deletion process?

Phase 5: Verify Access Control and Operations

Phase 6: Verify Exit Capability

  • Does an exit plan exist? → WAF-SOV-100

  • When was the last exit drill conducted?

  • Is the result documented?

Evidence Mapping per Control

Control ID Primary Evidence Secondary Evidence

WAF-SOV-010

Data residency policy (versioned)

IaC provider configurations

WAF-SOV-020

Terraform variable validation, SCP/org policy

CI log with blocked non-region deployment

WAF-SOV-030

Terraform backup configuration

Restore test records

WAF-SOV-040

CloudTrail config + log group retention

Flow log configuration

WAF-SOV-050

KMS key policy + enable_key_rotation

KMS access logs

WAF-SOV-060

IAM policy documents (no wildcard)

Quarterly access review record

WAF-SOV-070

Break-glass runbook + CloudTrail alarm config

Post-incident review record

WAF-SOV-080

Dependency register (Git) + terraform.lock.hcl

DPA reference list

WAF-SOV-090

Security group rules + VPC endpoint resources

VPC flow log config

WAF-SOV-100

Exit plan document

Annual drill report

Automated Evidence Collection

The WAF++ checker integration enables automated evidence collection:

# Example: WAF++ Checker invocation
wafpp check \
  --pillar sovereign \
  --controls WAF-SOV-010,WAF-SOV-020,WAF-SOV-050 \
  --engine terraform \
  --path ./infrastructure/terraform \
  --output-format sarif \
  --evidence-export ./evidence/sovereign-$(date +%Y-%m).json

The checker generates: * SARIF report for CI integration * JSON evidence artefact with timestamp and control ID mapping * Markdown summary for pull request comments