Beyond Entra ID, Azure has its own resource-management plane (ARM), data-plane services (Storage, SQL, Cosmos DB, Key Vault), networking, and compute. Securing an Azure subscription requires understanding the role-based access control model, the network options, and the data-plane-specific gotchas. This module covers the practical hardening checklist for Azure subscriptions.
The two access planes
- Management (ARM) plane: creating/modifying/deleting Azure resources. RBAC roles like Contributor, Owner, Reader
- Data plane: reading/writing data within resources. Storage Blob Data Reader, Key Vault Secrets User, etc. Per-resource granular roles
Common misconfiguration: granting Owner at subscription scope when narrow data-plane access would suffice. Owner = create/delete anything in the scope.
RBAC hierarchy
MANAGEMENT GROUP (e.g., "Contoso")
ββ SUBSCRIPTION (e.g., "Production")
ββ RESOURCE GROUP (e.g., "rg-app-prod")
ββ RESOURCE (e.g., a specific storage account)
# Permissions inherit downward. Granting Reader at subscription = Reader on every
# RG and resource in it. Always grant at narrowest scope possible.
Built-in roles to know
- Owner β full control + can grant access to others. Equivalent to root
- Contributor β full control except access management. Common for engineering
- Reader β read-only at the management plane. Cannot read data within services
- User Access Administrator β manage RBAC. Combine with Contributor for effective Owner
- Specific data roles β Storage Blob Data Reader/Contributor, Key Vault Secrets User, SQL DB Contributor
Network security
Virtual Networks (VNets) and subnets
- Default-deny inbound from Internet via Network Security Groups (NSGs)
- Subnet-level NSGs for east-west segmentation
- Service Endpoints route traffic to PaaS services over Microsoft backbone (skip Internet)
- Private Endpoints β preferred over Service Endpoints; PaaS gets a private IP in your VNet
Public exposure controls
- Disable public network access on storage, SQL, Key Vault β use Private Endpoints
- Azure Firewall or third-party NVA at perimeter for hub-spoke architectures
- Just-in-Time VM access for management (RDP/SSH only opened on request)
- Bastion host instead of public RDP/SSH
Network monitoring
- NSG flow logs to Log Analytics β east-west visibility
- Azure Firewall logs centrally analyzed
- Network Watcher for connection troubleshooting
Storage account hardening
- Disable public blob access at account level
- Disable shared key access β use Entra ID auth + RBAC
- Disable storage account keys altogether or rotate frequently
- Customer-managed encryption keys (CMK) via Key Vault
- Soft delete + versioning for blobs
- Private Endpoint for VNet access only
- SAS tokens β short TTL, narrow scope, never long-lived in code
Azure Key Vault
- RBAC mode (preferred) over Access Policies (legacy)
- Soft delete + purge protection enabled
- Separate vaults per environment (no cross-env access)
- Audit logs to Log Analytics
- Network restrictions β Private Endpoint or specific IP allowlist
- HSM-backed keys for high-sensitivity workloads
Azure SQL hardening
- Entra ID authentication only; disable SQL auth where possible
- Transparent Data Encryption with CMK
- Always Encrypted for column-level encryption (sensitive PII)
- Defender for SQL β Advanced Threat Protection
- Auditing to a storage account or Log Analytics
- Private Endpoint; disable public network access
- IP firewall as backstop if public must be enabled
Azure Policy and Defender for Cloud
- Azure Policy β enforces configuration rules. Built-in initiatives for CIS, NIST, ISO baselines. Deny resources that don’t meet policy at deploy time
- Defender for Cloud β continuous posture management; secure score; threat detection. Free tier covers basic posture; paid tier adds runtime protection per workload type
- Azure Sentinel β SIEM/SOAR; ingest Azure activity, sign-ins, third-party
Cost controls as a security control
Compromised credentials often used for cryptomining β running expensive VM SKUs across regions. Mitigations:
Continue reading with Basic tier (βΉ499/month)
You've read 60% of this module. Unlock the remaining deep-dive, quiz, and every other Intermediate module.