Design Patterns
The following patterns are proven and derived from the Wombat principles. They are formulated in a cloud-agnostic manner, with provider-specific notes.
Pattern 1: Region-Pinned Landing Zone
Problem
Without a structured landing zone, individual teams can create resources in arbitrary regions.
Solution
A landing zone with built-in region pinning overrides all other measures through technical upfront constraints.
Structure
Organization Root
โโโ Management Account
โ โโโ Service Control Policy: DenyOutsideApprovedRegions
โโโ Sovereign Workload OU
โ โโโ Production Account
โ โ โโโ Terraform: provider.region = var.aws_region (validated)
โ โ โโโ VPC Endpoints: S3, KMS, ECR, STS
โ โ โโโ CloudTrail: multi-region, log-validation, sovereign S3
โ โโโ Non-Production Account
โ โโโ Same constraints, different data classification
โโโ Shared Services Account
โโโ Central Logging: CloudWatch Logs, S3 (eu-central-1 enforced)
Pattern 2: Sovereign Key Hierarchy
Solution
A three-tier key hierarchy based on data criticality:
Tier 1 โ Public/Low-sensitivity Data
โโโ Provider-Managed Key (PMK) โ acceptable
Tier 2 โ Internal/Operational Data
โโโ Customer-Managed Key (CMK) in Cloud-KMS
โโโ Rotation: automatic (annual)
โโโ Key Policy: restrict to specific services/principals
Tier 3 โ PII / Financial / Health Data
โโโ BYOK: Customer-Key, Cloud-managed HSM (CloudHSM, Azure HSM, Cloud HSM)
or
HYOK: Key in external HSM (Thales, Utimaco, Securosys)
โโโ Access for cloud provider: technically not possible
โโโ Rotation: manual / process-driven
Pattern 3: Sovereign Observability Stack
Solution
A sovereign observability stack processes data within approved regions:
Application
โโโ OpenTelemetry SDK (vendor-neutral)
โโโ Traces โ Sovereign Trace Backend (Jaeger/Tempo in eu-central-1)
โโโ Metrics โ Sovereign Metrics Backend (Prometheus/Thanos in eu-central-1)
โโโ Logs โ CloudWatch/S3 (eu-central-1, retention=90d, KMS-encrypted)
โโโ Optional export to DPA-secured SIEM
Pattern 4: Break-Glass with Zero Standing Privilege
Solution
Zero Standing Privilege: admin access does not exist permanently, but is only activated on demand.
Normal Operations:
โโโ Developers: read-only or scoped write (application level)
โโโ Operations: operations role (no IAM access)
โโโ Platform: platform role (IaC deploy, no data access)
Break-Glass Activation:
โโโ Trigger: documented incident / approval (Dual Control)
โโโ Activation: JIT system (IAM Identity Center / Azure PIM)
โโโ Duration: max. 4h, automatic deactivation after expiry
โโโ Logging: CloudTrail captures all actions
โโโ Review: post-incident review within 5 business days, record archived
Pattern 5: Sovereign Egress Gateway
Solution
Centralized egress point with domain allow-list and anomaly detection:
Workload Subnet (Private)
โโโ all outgoing connections โ Egress Gateway
Egress Gateway
โโโ AWS Network Firewall / Azure Firewall / GCP Cloud Armor
โโโ Domain Allow-List (FQDN-based)
โ โโโ Approved: *.amazonaws.com (via VPC Endpoint)
โ โโโ Approved: *.internal.company.com
โ โโโ Blocked: * (default deny)
โโโ DNS: Route53 Resolver / Azure Private DNS
โโโ Logging: Flow Logs โ sovereign S3
VPC Endpoints (no internet routing):
โโโ com.amazonaws.eu-central-1.s3
โโโ com.amazonaws.eu-central-1.kms
โโโ com.amazonaws.eu-central-1.ecr.api
โโโ com.amazonaws.eu-central-1.sts
Pattern 6: Exit-Ready IaC Architecture
Solution
Portable IaC with abstract modules and open standards:
IaC Abstraction Layer
โโโ Module: network/vpc โ AWS VPC or Azure VNet
โโโ Module: storage/object โ S3 or Azure Blob or GCS
โโโ Module: database/relational โ RDS PostgreSQL or Azure PostgreSQL
โโโ Module: compute/container โ EKS or AKS or GKE
Data Standards:
โโโ PostgreSQL (open) instead of Aurora Serverless v2 (proprietary)
โโโ OpenTelemetry instead of X-Ray (proprietary)
โโโ S3-compatible API instead of proprietary object store features
Exit-Readiness:
โโโ Quarterly Data Export Test: all data exported and validated
โโโ Terraform Plan in target cloud: IaC adapted and planned
โโโ Lessons Learned documented