Design Patterns

The following patterns are proven and derived from the WAF++ 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)

Controls

  • WAF-SOV-010: Residency policy reflected in IaC defaults

  • WAF-SOV-020: SCP prevents outside-region deployments

  • WAF-SOV-040: Central logging stored sovereignly

Anti-Pattern

  • Individual accounts without SCP guardrails

  • "Default VPC" with open security group configuration

  • No central logging account


Pattern 2: Sovereign Key Hierarchy

Problem

Standard encryption with provider-managed keys gives the provider theoretical access.

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

Controls

  • WAF-SOV-050: Key ownership, rotation, deletion

Recommendations

  • CloudHSM (AWS) or Azure Dedicated HSM for Tier-2/3 keys

  • Document and conduct key ceremonies for HYOK annually

  • Plan cryptographic erasure as GDPR Art. 17 implementation


Pattern 3: Sovereign Observability Stack

Problem

Standard monitoring setups export telemetry data to US-based SaaS providers.

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

If external SIEM is necessary:

  • Conclude DPA and verify data processing region

  • Data masking before export (remove PII fields)

  • Export via Private Link / VPN (no public internet)

  • Regular review: which data leaves the sovereignty boundary?

Controls

  • WAF-SOV-040: Logging residency

  • WAF-SOV-090: Egress control


Pattern 4: Break-Glass with Zero Standing Privilege

Problem

Permanent admin roles are a permanent attack target.

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

Controls

  • WAF-SOV-060: Privileged access, SoD

  • WAF-SOV-070: Break-glass process & logging


Pattern 5: Sovereign Egress Gateway

Problem

Applications with open egress configuration can send data to arbitrary destinations.

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

Controls

  • WAF-SOV-090: Controlled egress

  • WAF-SOV-040: VPC Flow Logs


Pattern 6: Exit-Ready IaC Architecture

Problem

Proprietary IaC with hard-coded provider dependencies makes migration extremely expensive.

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

Controls

  • WAF-SOV-100: Exit plan & portability

  • WAF-SOV-080: Dependency & subprocessor inventory