Healthcare data breaches cost an average of $10.9 million per incident — the highest of any industry for 13 consecutive years (IBM Cost of a Data Breach Report). For architects building healthcare cloud platforms, compliance is not a checkbox: it is a core design constraint that shapes every architectural decision from Day One.
This is the playbook I used to take a large-scale insurance claims platform through HITRUST certification in under six months, without sacrificing availability and while materially reducing cloud spend. HIPAA's Security Rule defines the minimum technical safeguards. HITRUST CSF v11 defines a prescriptive, certifiable control framework that goes significantly further. The goal when designing on Azure is a system where compliance is the natural byproduct of good architecture — not a late-stage bolt-on that triggers expensive remediation.
- The real scenario — a claims platform under audit
- Azure as a HIPAA-eligible platform
- Data classification — know your PHI first
- Reference architecture
- The risk register — threat, blast radius, mitigation
- Encryption — defense in depth
- Network isolation by design
- Identity & access governance
- Audit logging — the non-negotiable
- Backup, DR & business continuity
- Compliance mapping — HIPAA & HITRUST controls
- IaC baseline (Terraform)
- Mistakes to avoid & the architect's checklist
The Real Scenario — A Claims Platform Under Audit
The platform ingests 837 claim files and FHIR records, adjudicates them, and surfaces member portals. PHI flows from intake APIs into Azure SQL and a data lake, with downstream analytics and an Azure OpenAI denial-prediction service. The brief was uncompromising: zero PHI exposure to the public internet, every access auditable for six years, RTO under one hour, RPO under five minutes, and a HITRUST CSF certification within two quarters. Every decision below was made against those constraints — and against an auditor who would test, not just read, the controls.
Azure as a HIPAA-Eligible Platform
Microsoft signs Business Associate Agreements (BAAs) covering over 100 Azure services for HIPAA-covered entities and their business associates. This contractual foundation is what makes Azure usable for PHI workloads. Before your first deployment, verify every service you intend to use appears on Microsoft's current BAA-covered services list — the list evolves as new services achieve eligibility.
Azure provides built-in Policy initiatives for HIPAA/HITRUST in Azure Policy, and Defender for Cloud's regulatory compliance dashboard maps your actual resource configuration to HITRUST CSF controls in real time. This is your primary audit preparation tool — treat the compliance score as a KPI that your team reviews weekly.
Enable Defender for Cloud's regulatory compliance dashboard and assign the HIPAA/HITRUST policy initiative at your management group level on Day 1. Starting with visibility gives your team weeks of lead time to remediate before a formal audit.
Data Classification — Know Your PHI Before You Architect
Not all data in a healthcare platform is PHI. Separating data by classification drives your architecture decisions at every layer. A practical taxonomy:
| Classification | Examples | Required Controls |
|---|---|---|
| PHI — Protected Health Information | Names, diagnoses, dates, SSNs, MRNs, billing data | CMK encryption, private endpoints, audit logging, strict RBAC, BAA-covered services only |
| De-identified data | Scrubbed per HIPAA Safe Harbor (18 identifiers removed) | Standard encryption, can be used for analytics without full PHI controls |
| Operational data | Infrastructure metrics, app logs (no PHI) | Standard security controls, no BAA requirement |
Use Microsoft Purview for automated data discovery and classification across your Azure data stores. Define a mandatory tagging taxonomy that flows into Azure Policy conditions — resources tagged data-classification: PHI can be automatically governed by stricter policy assignments.
Reference Architecture
A single ingress, a deny-all PHI spoke, private endpoints for every PaaS service, and forced-tunnel egress through a hub firewall. The public surface is exactly one WAF; everything else is private.
The Risk Register — Threat, Blast Radius, Mitigation
"Right architecture" means designing against failure, not just for the happy path. Every PHI control below earns its place by reducing a specific blast radius. This is the table I bring to design reviews:
| Threat | Blast radius if unmitigated | Mitigation |
|---|---|---|
| Public endpoint on SQL/Storage | Internet-wide PHI exposure; reportable breach | Private Endpoints + public access disabled by policy |
| Stolen app credentials | Lateral movement, bulk PHI exfiltration | Managed identity, data-plane-only RBAC, no secrets in code |
| Compromised workload subscription | Attacker reads encryption keys | Key Vault HSM in isolated subscription; CMK revoke kills data access |
| Insider tampering with logs | Undetectable breach, failed audit | WORM immutable 6-yr log archive; Sentinel alerts |
| Region outage | Platform down, RTO breach | Failover Groups (RPO <5s) + ASR; tested DR drills |
Encryption Strategy — Defense in Depth at Every Layer
id="identity"Data at Rest
All Azure storage services encrypt at rest by default using Azure-managed keys (256-bit AES). For PHI workloads, you must go further with Customer Managed Keys (CMK) stored in Azure Key Vault backed by hardware (HSM). CMK gives you cryptographic control: if you revoke the key, access to the data is immediately terminated. This is both a compliance tool and a powerful data destruction mechanism for contract offboarding scenarios.
Data in Transit
Enforce TLS 1.2 or higher via Azure Policy across all services. Assign the built-in "Secure transfer to storage accounts should be enabled" policy. Set the minimum TLS version at the SQL Server level. For web applications, configure HTTPS-only with HSTS headers. Never allow self-signed certificates in production environments — use certificates issued by a trusted CA, managed through Key Vault.
Key Hierarchy
Store Key Vault in a dedicated subscription separate from the workload subscriptions. If a workload subscription is compromised, the encryption keys remain protected in the isolated Key Vault subscription. Enable soft delete (90-day retention) and purge protection on all Key Vaults. Automate key rotation on a 90–180 day schedule — manual rotation is an audit finding waiting to happen.
Network Architecture — Isolation by Design
id="audit"PHI workloads must never be directly reachable from the public internet. Every component of the architecture is designed around complete network isolation and controlled egress.
PHI VNet Design
- Dedicated spoke VNet for PHI workloads, peered to a security hub
- All subnets protected with NSGs — deny-all inbound baseline, permit only required flows
- No public IP addresses on any resource that touches PHI data
- Private Endpoints for all PaaS services: Azure SQL, Storage, Key Vault, Service Bus, Event Hub, Container Registry
- Forced tunneling: all outbound traffic routed through Azure Firewall in the hub
- Azure Firewall application rules whitelist only required outbound destinations (e.g., specific update endpoints, partner APIs)
Inbound Traffic
- Application Gateway WAF v2 as the single ingress point for all HTTP/S traffic
- TLS termination with certificate managed in Key Vault
- OWASP Core Rule Set 3.2 in Prevention mode
- Azure DDoS Protection Standard on the public-facing VNet
Centralise Private DNS Zones in the connectivity (hub) subscription and link them to the hub VNet. Use DNS forwarding rules to resolve private endpoint FQDNs from all spoke VNets. This prevents DNS management sprawl as your environment scales to multiple spokes.
Identity and Access Governance
Least Privilege RBAC
Define custom roles with the minimum permissions required for each job function. Application managed identities should hold data-plane roles only (e.g., Storage Blob Data Reader, not Contributor). No Owner or Contributor at the subscription level for application identities — ever. Use Entra ID Privileged Identity Management for all management-plane access.
Just-In-Time VM Access
Microsoft Defender for Cloud's JIT feature locks down RDP and SSH management ports by default and requires approved, time-limited access requests (e.g., 2-hour windows). This eliminates the exposure of management ports to the internet and creates an audit trail for every VM access event.
Access Reviews and Governance
Schedule quarterly Entra ID Access Reviews for all role assignments to PHI resources. Configure automatic removal of stale access. This is a HITRUST audit requirement and a critical control — stale access accounts for a significant proportion of insider threat incidents. For emergency access, maintain two break-glass accounts (cloud-only, no CA policies, FIDO2 hardware keys stored in a physical safe) and alert immediately on any sign-in via Sentinel.
Audit Logging — The Non-Negotiable
HIPAA requires audit controls documenting who accessed what PHI and when. Azure provides the tooling — the architect's job is to ensure complete coverage with no gaps.
What to Collect
- Azure Activity Logs: subscription-level control plane operations (who created, modified, deleted resources)
- Entra ID audit and sign-in logs: all identity events, MFA outcomes, Conditional Access decisions
- Diagnostic logs on every PHI-touching resource: Azure SQL (audit logs), Storage (access logs), Key Vault (access logs), App Service (HTTP access logs), Azure Firewall
- NSG flow logs: sent to Storage, analysed via Traffic Analytics for network behaviour baseline
Retention Requirements
Log Analytics Workspace: 90 days minimum for active querying (HIPAA floor). Archive to immutable Azure Blob Storage with a WORM (Write Once Read Many) retention lock for the HIPAA-required 6-year retention period. The immutability policy prevents log tampering — a critical requirement for legally defensible audit records.
Backup, DR, and Business Continuity
HIPAA requires a documented contingency plan with defined Recovery Time Objective (RTO) and Recovery Point Objective (RPO). These must be validated, not theoretical.
- Azure Backup for all VMs and databases — enable soft delete (14-day protection) and geo-redundancy
- Azure SQL Active Geo-Replication or Failover Groups for database DR (RPO under 5 seconds for business-critical tiers)
- Read-Access Geo-Redundant Storage (RA-GRS) for all critical blob data — readable from secondary region during primary outage
- Azure Site Recovery for VM replication to a secondary region with automated failover
- Regular DR drills: at minimum annually, with documented test results. An untested recovery plan is just a document.
Compliance Mapping — HIPAA & HITRUST Controls
Auditors want the line from control to architecture. This is the mapping I hand them — every safeguard ties to a concrete Azure design decision:
| Requirement | HIPAA / HITRUST | Azure implementation |
|---|---|---|
| Access control | §164.312(a)(1) · HITRUST 01.c | Entra ID, PIM, custom RBAC, JIT |
| Encryption | §164.312(a)(2)(iv), (e)(2)(ii) · 06.d | CMK in Key Vault HSM, TLS 1.2+ enforced |
| Audit controls | §164.312(b) · HITRUST 09.aa | Diagnostic logs, Sentinel, WORM 6-yr archive |
| Integrity | §164.312(c)(1) · 10.b | Immutable blob, change tracking, Defender |
| Transmission security | §164.312(e)(1) · 09.m | Private endpoints, WAF, forced tunneling |
| Contingency plan | §164.308(a)(7) · 12.c | Failover Groups, ASR, tested DR drills |
IaC Baseline (Terraform)
Compliance you can't redeploy is compliance you can't defend. Bake the controls into Terraform so every environment is identical and policy-enforced:
# Storage account: PHI-grade baseline resource "azurerm_storage_account" "phi" { name = var.sa_name resource_group_name = var.rg location = var.location account_tier = "Standard" account_replication_type = "RAGRS" min_tls_version = "TLS1_2" https_traffic_only_enabled = true allow_nested_items_to_be_public = false public_network_access_enabled = false # private endpoints only customer_managed_key { key_vault_key_id = azurerm_key_vault_key.cmk.id user_assigned_identity_id = azurerm_user_assigned_identity.sa.id } tags = { "data-classification" = "PHI" } }
Common Architecture Mistakes to Avoid
- Allowing public endpoints on Azure SQL or Storage accounts "temporarily" — they become permanent within weeks
- Storing database connection strings or CMK references in application code, environment variables, or deployment pipelines
- Using a single Log Analytics workspace for PHI and non-PHI data without workspace-level RBAC to segregate access
- Skipping NSG flow logs — they are the first thing HITRUST auditors request, and they take time to backfill
- Not testing disaster recovery — define RTO/RPO targets, then validate them with actual failover exercises
- Assigning broad RBAC roles (Contributor, Owner) to application managed identities or service principals
- Incomplete PHI data flow mapping — build a full data flow diagram before finalising the architecture; unknown PHI stores are the source of most compliance gaps
Key Takeaway
The healthcare compliance controls described here are not obstacles — they are the architecture. When you design with PHI isolation, encryption, audit logging, and least-privilege access as first principles rather than afterthoughts, you build a system that is simultaneously more secure, more reliable, and far easier to audit. The compliance certification becomes a validation of good engineering, not a remediation project.
Start with data classification and network isolation. Get those right and every other control falls into a coherent pattern.