title
Zero Trust Architecture with Azure Services
author
Randy Bordeaux
date
January 2026
version
1.0
services
Microsoft Entra ID
Azure Firewall
Azure Private Link
Azure VPN Gateway
Azure Key Vault
Microsoft Defender for Cloud
Microsoft Sentinel
categories
Security
Zero Trust
Identity
Network
Compliance
Zero Trust Architecture with Azure Services
Author: Randy Bordeaux
Version: 1.0
Date: January 2026
Azure Services: Microsoft Entra ID, Azure Firewall, Azure Private Link, Azure VPN Gateway, Azure Key Vault, Microsoft Defender for Cloud, Microsoft Sentinel
This whitepaper provides an actionable blueprint to implement Zero Trust in Azure, emphasizing continuous verification, least privilege, and explicit security controls across identity, devices, network, applications, data, and telemetry. It aligns to NIST SP 800-207 and CIS benchmarks and is optimized for enterprise landing zones .
Key Outcomes:
Enforce strong identity with Conditional Access, MFA, and PIM-backed just-in-time elevation
Achieve network containment with microsegmentation, Private Link, and egress control through central firewalls
Protect data and secrets with encryption, tokenization, and per-app Key Vault isolation
Embed policy and compliance via Azure Policy, Defender for Cloud, and continuous posture assessments
Establish monitoring and response using Sentinel analytics, UEBA, and automated playbooks
Scope and Design Principles
Azure-hosted workloads (IaaS, PaaS, containers) in Commercial cloud
Identity-centric controls (Conditional Access, PIM, workload identities)
Network microsegmentation, Private Link, and controlled egress
Data protection (encryption, secrets, tokenization)
Monitoring, threat detection, and automated response with Sentinel
On-premises-only architectures without Azure connectivity
Sovereign clouds (Gov/China) specifics
Application-layer secure coding practices (covered separately)
Principle
Implementation
Assume Breach
Default deny, just-in-time elevation, verify every request
Least Privilege
PIM, role scoping, per-app service principals, constrained RBAC
Explicit Verification
Conditional Access with device/user/risk signals; certificate pinning for services
Microsegmentation
Spoke VNets with NSGs/ASGs, Private Link, no direct public exposure
Secure by Default
No public endpoints; TLS everywhere; managed identities over secrets
Observability
Centralized logging, UEBA, and automated playbooks
graph TD
Users[Users/Devices]
IdP[Microsoft Entra ID]
CA[Conditional Access]
PIM[PIM JIT]
Hub[Hub VNet]
Spoke1[App Spoke]
Spoke2[Data Spoke]
FW[Azure Firewall]
PL[Private Link]
KV[Key Vault (per app)]
LA[Log Analytics]
Sentinel[Sentinel]
Users -->|MFA/CA| IdP
IdP --> CA
IdP --> PIM
Users -->|Privileged via PIM| Hub
Hub --> FW
FW --> Spoke1
FW --> Spoke2
Spoke1 -->|Private Endpoint| PL
PL --> KV
Spoke2 -->|Private Endpoint| KV
FW -->|Egress allowlist| Internet
Spoke1 --> LA
Spoke2 --> LA
LA --> Sentinel
Loading
Architecture Tenets:
Hub-and-spoke with central firewall for egress allowlisting and DNAT for controlled ingress
Private Link for PaaS consumption; no public endpoints on data planes
Per-application Key Vault with RBAC; no shared vaults across tiers
Sentinel as SIEM with UEBA; Log Analytics for telemetry lake
Identity and Access Control
Require MFA for all users; step-up MFA for privileged actions
Block legacy authentication; enforce device compliance for admin portals
Location/geo controls for privileged roles
# Example policy description (conceptual)
policy :
name : " Admin Portal Access"
conditions :
users : ['Privileged roles']
device : compliant
client_app : modern_auth
grant :
- mfa
- require_compliant_device
Use PIM for Azure roles and Entra roles; enforce approval workflows and time-bound assignments
Separate admin accounts; no standing global admin
Break-glass accounts stored offline, tested quarterly
Use managed identities for Azure resources; avoid client secrets
For GitHub/Azure DevOps, use OIDC federation for service principals
Scope roles minimally (e.g., Storage Blob Data Contributor on specific account)
Device and Endpoint Trust
Intune compliance required for admin access; jailbroken/rooted devices denied
Defender for Endpoint signals feed Conditional Access risk
Use Microsoft Edge with isolated profiles for privileged sessions
Compliance: OS version >= baseline, disk encryption on, Secure Boot enabled, AV up to date
Network Segmentation and Access
Hub-spoke with dedicated spokes per workload domain (app, data, shared services)
NSGs/ASGs to segment east-west; deny by default
Azure Firewall for egress control, FQDN filtering, TLS inspection where allowed
# Sample NSG rule (HCL style for clarity)
resource "azurerm_network_security_rule" "app_to_db" {
name = " app-to-db"
priority = 120
direction = " Outbound"
access = " Allow"
protocol = " Tcp"
source_port_range = " *"
destination_port_ranges = [" 1433" ]
source_application_security_group_ids = [azurerm_application_security_group . app . id ]
destination_application_security_group_ids = [azurerm_application_security_group . db . id ]
}
Enforce Private Link for PaaS (Storage, SQL, Cosmos DB, Key Vault)
Disable public network access on PaaS resources
Use VPN/ExpressRoute for hybrid; deny inbound RDP/SSH from internet
Deny-all outbound at firewall; allow specific FQDN/IPs
Use Azure Firewall policy with DNS proxy + threat intelligence
Mirror egress policies to Dev/Test to catch violations early
Application Access and Service Isolation
Split tiers (web/api/data) into separate subnets/ASGs
Use mTLS for service-to-service in sensitive paths
Enforce per-app Key Vault and per-app service principals
For CI/CD, per-environment service connections with least privilege
# GitHub Actions OIDC for per-app SP
permissions :
id-token : write
contents : read
steps :
- uses : azure/login@v1
with :
client-id : ${{ secrets.AZURE_CLIENT_ID }}
tenant-id : ${{ secrets.AZURE_TENANT_ID }}
subscription-id : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
Data Protection and Key Management
Encrypt data at rest (SSE with CMK where needed)
Enable soft delete/versioning for Storage/Key Vault
Tokenize sensitive fields before storage; minimize PII footprint
Use Key Vault RBAC ; disallow access policies when possible
# Key rotation example
az keyvault key rotate --vault-name kv-app-prod --name app-key
TLS 1.2+ everywhere; consider TLS 1.3 where supported
DLP policies for egress of sensitive data (MIP/Defender for Cloud Apps)
Monitoring, Detection, and Response
Centralize logs: Azure activity, resource logs, Key Vault, AAD sign-ins
Sentinel analytics with UEBA; map alerts to MITRE ATT&CK
Enable Defender for Cloud for CSPM + workload protection
// Unusual admin sign-in
SigninLogs
| where Role in ("Global Administrator" , "Privileged Role Administrator" )
| summarize count () by IPAddress, bin (TimeGenerated, 1 h )
| where count_ > 3
Auto-disable risky sessions; revoke tokens on impossible travel
Auto-quarantine VMs by NSG update; open incident in ITSM
Compliance, Policy, and Assurance
Enforce Azure Policy : deny public IPs on critical subnets, require Private Link, enforce TLS >=1.2
Defender for Cloud regulatory compliance dashboard: map to NIST/ISO
Periodic access reviews for groups, apps, and service principals
{
"if" : {
"field" : " type" ,
"equals" : " Microsoft.Network/publicIPAddresses"
},
"then" : {
"effect" : " deny"
}
}
Foundation: Landing zone, hub-spoke, identity baseline (MFA, CA policies), logging to Sentinel
Network Hardening: NSGs/ASGs, firewall egress allowlist, Private Link, disable public endpoints
Identity Hardening: PIM rollout, break-glass tested, OIDC for automation
Data Protection: Key Vault per app, CMK where required, backup/restore validated
Detection & Response: Sentinel analytics, playbooks, Defender for Cloud plans enabled
Validation: Red-team simulations, policy compliance scans, disaster recovery drills
Anti-Patterns and Tradeoffs
Anti-Pattern
Risk
Mitigation
Shared admin accounts or standing GA
Privilege escalation, poor audit
PIM JIT, separate admin accounts, approvals
Public endpoints on PaaS
Data exfiltration, bypass of controls
Disable public access, use Private Link, firewall egress
Flat networks without ASGs
Lateral movement
Spoke/subnet isolation, NSGs with deny-by-default
Long-lived secrets in CI/CD
Secret leakage
OIDC/workload identity; rotate secrets; Key Vault RBAC
Unpinned templates/tooling
Supply-chain drift
Pin versions, signed templates, SBOM + verification
Appendix A: Control Checklist
Appendix B: Sample Conditional Access Matrix
Scenario
Controls
Admin portal access
MFA, compliant device, trusted location, PIM activation
Dev access to non-prod
MFA, sign-in risk < medium, device compliance optional
CI/CD automation
OIDC service principal, IP allowlist, no interactive login
Appendix C: Network Segmentation Pattern
graph LR
HubVNet --> FW[Azure Firewall]
FW --> SpokeApp[Spoke: App]
FW --> SpokeData[Spoke: Data]
SpokeApp -->|ASG App| AppSubnet
SpokeData -->|ASG DB| DbSubnet
AppSubnet -->|Private Endpoint| PaaS[App PaaS]
DbSubnet -->|Private Endpoint| DataPaaS[Data PaaS]
Loading
Appendix D: Incident Response Quick Steps
Contain: disable service connection, isolate subnet via NSG
Eradicate: rotate keys/secrets, revoke tokens, remove rogue identities
Recover: validate infra with terraform plan/apply; re-enable CA policies
Lessons: update detections, add playbook automation, document RCA
Document Version: 1.0
Last Updated: January 2026
Author: Randy Bordeaux
Review Cycle: Quarterly