Skip to main content

RFC-001

Custom Solutions in Azure

A Well-Architected Proposal for Swedish Public Sector

Four environment-separated Azure subscriptions under one Management Group, hosted in Sweden Central. Aligned with GDPR, eSam, and sector-specific regulations. IaC and managed PaaS from day one.


The Problem

Custom solutions in Swedish public sector are deployed ad-hoc into shared subscriptions. No environment isolation, no consistent naming, no alignment with Well-Architected.

IssueImpact
No environment isolationDev and prod share subscriptions — a test misconfiguration affects citizens
Unclear complianceNo enforcement that data stays in Sweden Central
Cost opacityCan't report per-system costs to governing bodies
Manual provisioningDisaster recovery means rebuilding from memory

Proposed Structure

Four subscriptions under mg-customsolutions, all in Sweden Central:

  • sub-customsolutions-sandbox — Sandbox / Experimentation
  • sub-customsolutions-dev — Development
  • sub-customsolutions-test — Test / Staging
  • sub-customsolutions-prod — Production

Each solution gets one resource group per subscription: rg-{solutionname}

Well-Architected Alignment

PillarImplementation
ReliabilityZone-redundant PaaS, automated failover, Bicep-defined infrastructure
SecurityManaged identities, Key Vault, Private Endpoints, Azure Policy region-lock
CostPer-subscription reporting, Dev/Test pricing, auto-scaling with spend alerts
OperationsBicep IaC, CI/CD via Azure DevOps, Application Insights from day one
PerformanceContainer Apps with auto-scaling, right-sized SKUs

Recommended Services

  • Container Apps — hosting with auto-scaling and Dapr
  • Azure SQL — geo-redundant backup within Sweden
  • API Management — gateway with auth and rate limiting
  • Key Vault — secrets and certificates, never in app config
  • Application Insights — distributed tracing and alerts
  • Azure Policy — enforce Sweden Central, deny non-compliant SKUs
  • Bicep — every resource defined in code

Start with managed PaaS exclusively. Container Apps + Azure SQL covers the vast majority of public sector e-services.


Compliance

RegulationEnforcement
GDPRAzure Policy enforces allowedLocations = swedencentral
eSam (gov cloud guidelines)Risk classification per system, Private Endpoints for high-sensitivity
OSL (Public Access and Secrecy Act)Access logging on all data stores, Customer Lockbox for Microsoft support
LOU (Public Procurement Act)Procured via Kammarkollegiet or SKL Kommentus framework agreement

Azure Policy denies resource creation outside Sweden Central at the Management Group level. Compliance is automatic, not aspirational.


Sector Differences

The Azure structure is identical across all three levels of government. What changes is the regulatory overlay.

MunicipalityRegionState Agency
Health data (PDL — Patient Data Act)N/ARequiredRare
Security classificationRareRareMay apply
Classification modelSKR (municipalities & regions)SKR + PDLDIGG (gov digitalization agency)
ProcurementSKL KommentusSKL KommentusKammarkollegiet

Key differences:

  • Regions handle patient data under PDL (Patientdatalagen) — stricter logging, data must not leave Sweden
  • State agencies may trigger security classification laws — security-classified data stays off public cloud entirely

Next Steps

  1. Create mg-customsolutions and four subscriptions with Azure Policy
  2. Define Bicep modules for the base resource set
  3. Migrate the first e-service as a pilot
  4. Conduct information classification per applicable framework
  5. Document onboarding process for future systems

This is a reversible decision. The subscription model can be adjusted after the pilot. The Azure Policy guardrails should be treated as permanent.


International Context

The topology transfers directly to other jurisdictions — only the compliance overlay changes.

CountryRegionData ProtectionCloud CertHealthcare
GermanyGermany West CentralGDPR + BDSGBSI C5Patientendaten-Schutzgesetz
NorwayNorway EastGDPR + PersonopplysningslovenDigdirPasientjournalloven
UKUK SouthUK GDPR + DPA 2018NCSCNHS DSPT
USAAzure GovernmentFISMAFedRAMPHIPAA
EUVariesEU DPREUCS (ENISA)N/A
Back to RFCs