Azure Security

The Azure Shared Responsibility Model: Who Secures What Across IaaS, PaaS and SaaS

Almost every cloud breach you read about is, at heart, an argument nobody had. A storage container left open to the internet, a database with a blank admin password, a virtual machine missing six months of patches — and afterwards two teams each insisting the other was supposed to handle it. Microsoft assumed you would lock the door; you assumed the cloud locked it for you. The door stayed open. The Azure shared responsibility model is the contract that settles that argument in advance: a precise, public division of security duties between Microsoft (the cloud provider) and you (the customer), drawn differently for each kind of service you consume.

The core idea is simple and never changes: Microsoft secures the cloud; you secure what you put in it. Microsoft guarantees the physical datacenters, host hypervisors, global network backbone and platform services are built and run securely. You remain responsible for your data, who can access it, how your apps are configured, and your accounts and identities. What does change — and where almost everyone gets confused — is the boundary between those two halves. Run a virtual machine (IaaS) and you own the OS, patching and firewall rules; run a managed database (PaaS) and Microsoft patches the engine but you still own the data, logins and firewall; use Microsoft 365 (SaaS) and Microsoft runs almost everything — yet your data and user identities are still yours to protect. The further “up the stack” you go, the more Microsoft handles, but the line never reaches the top.

This article gives you the mental model that prevents the open-door breach: the exact split for IaaS, PaaS and SaaS; the duties that are always yours no matter what (your data, identities and access decisions); how to read any new Azure service and know instantly which side each task falls on; and the real misconfigurations — public Storage containers, internet-exposed VMs, over-shared SharePoint files — that come straight from misreading the model. It underpins every Azure security decision you make, and it is examinable: the model appears on AZ-900 and SC-900, and we map the questions at the end.

What problem this solves

Without a shared responsibility model, every security task lives in a grey zone. “Who patches the database?” “Who turns on encryption?” “Whose job is the firewall?” On-premises the answer was always “us” — your team owned the building, servers, network and software, top to bottom. The cloud breaks that assumption deliberately: you hand large chunks of work to Microsoft so you can move faster. But if nobody writes down which chunks, the handoff creates gaps — and gaps in security are exactly where breaches live.

The failure is rarely a clever attacker defeating strong defenses. Far more often it is a task that fell into the gap because each side thought the other had it: a VM with RDP (3389) opened to the whole internet “just for now” on the assumption Azure’s firewall protects it — but network security groups are the customer’s job on IaaS; a Storage container left at public blob access because “it’s in Azure, it’s private by default” — but the container’s access level is the customer’s; a managed SQL database with no firewall rule and an admin password set once and forgotten because “Microsoft handles security” — true for the engine and disks, but who can connect and with what credentials was always theirs.

Who hits this: everyone, but hardest the teams new to cloud or moving fast. Developers assume the platform is secure-by-default in ways it is not; ops teams from the on-premises world don’t realise how much Microsoft now handles — and how much they’ve stopped doing is still required. The model gives every side one agreed map: read it correctly and the open-door breaches simply don’t happen, because someone always knew the door was theirs to close.

Learning objectives

By the end of this article you can:

Prerequisites & where this fits

You need very little to follow this. A general sense of what “the cloud” is — renting computing from a provider’s datacenter instead of running your own — is enough. It helps to have heard of a virtual machine (a computer you rent in the cloud), a database, and Microsoft 365, because we use them as the running examples. No coding is required; the az CLI and Bicep snippets just show where a responsibility is configured, and you can skim them on a first read.

This is foundational — the model sits under almost every other Azure topic, telling you which security tasks are even yours before you learn how to do them. It pairs with Azure Resource Hierarchy Explained and Azure Subscriptions Explained: Types, Billing & Boundaries, where your half is organised. Once you know a duty is yours, the how-to lives in topic articles: secrets in Azure Key Vault: Secrets, Keys & Certificates, networking in Azure Virtual Network: Subnets & NSGs, and governance in Azure Policy: Governance at Scale.

Core concepts

A few mental models make every later decision obvious.

Microsoft secures the cloud; you secure what you put in it. This is the whole model in one line. “The cloud” is everything Microsoft builds and operates so the service can exist: the physical datacenters, the host servers and the hypervisor that isolates one customer’s VM from another’s, the global backbone network, and — for managed services — the platform software itself. “What you put in it” is your data, your applications, your configuration and your accounts. Microsoft makes the platform secureable; only you can decide who gets access to your data and how your app is set up.

The line moves with the service model, but never to the very top. Three cloud service models differ by how much Microsoft manages: IaaS (Infrastructure as a Service) — you rent raw infrastructure (VMs, networks, disks), Microsoft runs the hardware and hypervisor, and you own everything from the OS up; PaaS (Platform as a Service) — you rent a managed platform (a database, a web host), Microsoft runs and patches the OS/runtime/platform, and you own data, config and access; SaaS (Software as a Service) — you use finished software (Microsoft 365, GitHub), Microsoft runs essentially the whole stack, and you own data, users and sharing. Each gets its own deep section below. As you go IaaS → PaaS → SaaS, Microsoft takes on more and you take on less — but three things never cross the line.

Three responsibilities are always yours — at every level. No matter how managed the service, the customer always retains: (1) your data — Azure stores and encrypts it, but its sensitivity, classification and retention are yours, because Azure can’t know a column holds national-ID numbers; (2) your identities and accounts — the users and admin roles in your Microsoft Entra ID tenant and whether they use multi-factor authentication (MFA) and least privilege (Microsoft secures the identity platform; you secure the accounts in it); and (3) your access decisions — who can read, write or administer each resource via Azure RBAC (role-based access control), a business call only you can make. Shorthand: “DIM” — Data, Identity, Mistakes are always yours — including any misconfiguration you make (a public container, an open port).

“Shared” sometimes means genuinely shared, not handed off. A few responsibilities split within a layer. Network controls are the clearest: Microsoft provides the secure backbone and DDoS infrastructure, but you configure the network security groups (NSGs), firewalls and open ports. Patching on IaaS is another: Microsoft patches the host and hypervisor; you patch the guest OS. “Shared” means each side owns a real, non-optional piece — not that you can assume the other has it. (Bold terms are defined in the Glossary at the end.)

How the line moves: on-premises → IaaS → PaaS → SaaS

The single most useful artifact in this topic is the layered ownership chart: each row is a layer of the stack, each column a hosting model, each cell the owner. Read it top to bottom and watch the boundary climb as Microsoft takes on more.

Layer (bottom = physical) On-premises IaaS PaaS SaaS
Data classification & accountability You You You You
Information & data (the content itself) You You You You
Identities & accounts You You You You
Devices (endpoints) You You You You
Identity & directory infrastructure You Shared Shared Shared
Application logic & configuration You You Shared Microsoft
Network controls (NSG, firewall) You You Shared Microsoft
Operating system You You Microsoft Microsoft
Physical hosts You Microsoft Microsoft Microsoft
Physical network You Microsoft Microsoft Microsoft
Physical datacenter You Microsoft Microsoft Microsoft

Two things jump out. The top four rows are always yours — data, identity, accounts and your devices never become Microsoft’s job. The bottom three are always Microsoft’s the moment you use Azure — you’ll never patch a hypervisor or guard a datacenter door. The action is in the middle, where the service model decides the split. Here is that shift as “what just became Microsoft’s job” at each step up:

Move What Microsoft takes over What is still yours
On-prem → IaaS Physical building, hosts, hypervisor, physical network OS, patching, NSG/firewall, app, identity, data
IaaS → PaaS Guest OS, OS patching, runtime, platform software App config, network rules (shared), identity, data
PaaS → SaaS The application itself, most config, most network Your data, your users/sharing, your access settings
Any → any (never) physical, hypervisor, backbone are always theirs (never) data, identity, accountability are always yours

A common misread treats the move up as “Microsoft now does security.” It does not — it does more of the infrastructure, freeing you to focus higher up on the parts only you can judge: who should access this, how sensitive is it, is it configured to policy.

IaaS: you own the operating system and everything above it

Infrastructure as a Service looks most like the old datacenter: you ask Azure for a VM, a virtual network and some disks, and from there up it is yours. The clearest example is an Azure Virtual Machine. Microsoft owns the datacenter, the hardware, and the hypervisor that isolates your VM from every other customer’s — and keeps host and hypervisor patched. What is yours is the long list that surprises people:

IaaS task Owner Why How you do it on Azure
Guest OS patching You Microsoft patches the host, not what’s inside your VM Update Manager, or your own tooling
Antimalware / endpoint protection You It runs inside your OS Defender for Servers / your AV
Firewall & open ports You NSGs are customer-configured NSG rules, Azure Firewall
Identity & login to the VM You Local accounts / domain join are yours SSH keys, Entra login, JIT
Application & its data You Your software, always your data Deploy + classify + access
Backup of the VM You Microsoft keeps the platform up, not your data safe Azure Backup

The most common IaaS mistake follows directly: opening a management port to the internet. A Windows VM listens for RDP on 3389, Linux for SSH on 22, and the rules around them are your responsibility — Azure will happily let you allow *, and brute-force bots find it within minutes. Confirm what’s exposed and lock it down — your job, not Microsoft’s:

# See exactly which inbound ports your NSG allows, and from where
az network nsg rule list \
  --nsg-name nsg-vm-prod --resource-group rg-prod \
  --query "[?direction=='Inbound'].{name:name, port:destinationPortRange, src:sourceAddressPrefix, access:access}" \
  -o table

# Remove a wide-open RDP rule (replace with Bastion or a tight source range)
az network nsg rule delete \
  --nsg-name nsg-vm-prod --resource-group rg-prod --name allow-rdp-any

In Bicep you make the secure choice the default — no inbound management from the internet:

resource nsgRule 'Microsoft.Network/networkSecurityGroups/securityRules@2023-11-01' = {
  name: 'nsg-vm-prod/deny-rdp-from-internet'
  properties: {
    priority: 100
    direction: 'Inbound'
    access: 'Deny'
    protocol: 'Tcp'
    sourceAddressPrefix: 'Internet'   // your responsibility to set this
    sourcePortRange: '*'
    destinationAddressPrefix: '*'
    destinationPortRange: '3389'
  }
}

The right pattern is to never expose 3389/22 at all — reach VMs through Azure Bastion or just-in-time access — but the point here is who owns the decision: you. Full treatment: Azure Virtual Network: Subnets & NSGs.

PaaS: Microsoft patches the platform, you still own data, access and config

Platform as a Service moves the line up: you rent a capability — a database, a web host, a queue — with the OS, runtime and platform software all managed and patched by Microsoft. Examples: Azure App Service and Azure SQL Database. What Microsoft now owns that it didn’t on IaaS: the guest OS and its patching, the runtime, the VM fleet, platform HA, and infrastructure-level encryption. What is still yours is where “Microsoft handles security” becomes the half-truth that gets databases breached:

PaaS task Owner The trap How you own it on Azure
The data in the database/app You “It’s managed, so it’s safe” — no, it’s yours Classification, backup retention, access
Who can connect (firewall) You A new SQL DB can be opened to all Azure or 0.0.0.0 Firewall rules / Private Endpoint
Login credentials & rotation You Default admin password never rotated Entra auth, Key Vault, strong passwords
App config & end-user auth You (shared) Secrets in plain config; app left open Key Vault references; Entra (Easy Auth)
Network exposure You (shared) Public endpoint left wide open Access restrictions, Private Endpoint
OS / engine patching Microsoft (Not yours — this is the part that moved) Nothing to do

The signature PaaS mistake is deploying a managed SQL database and assuming “managed” covered access control. The engine is patched and disks encrypted — but who can connect, from where, and with what credentials never left your side. A fresh server with a firewall rule allowing all Azure services and an admin password set once and never rotated is a managed database that is wide open. Tighten the firewall — your responsibility:

# List the server-level firewall rules; watch for 0.0.0.0 or "AllowAllAzure"
az sql server firewall-rule list \
  --server sql-shop-prod --resource-group rg-shop-prod \
  --query "[].{name:name, start:startIpAddress, end:endIpAddress}" -o table

# Remove the dangerous "allow all Azure services" rule (start/end 0.0.0.0)
az sql server firewall-rule delete \
  --server sql-shop-prod --resource-group rg-shop-prod --name AllowAllWindowsAzureIps

Better still, prefer Entra-only auth and a private endpoint so credentials and network are both on your terms — asserted as code:

resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = {
  name: 'sql-shop-prod'
  location: location
  properties: {
    administrators: {
      administratorType: 'ActiveDirectory'
      azureADOnlyAuthentication: true   // your call: no SQL-auth password to leak
      login: 'sql-admins'
      sid: aadAdminGroupObjectId
      principalType: 'Group'
    }
    publicNetworkAccess: 'Disabled'      // your call: reach it via Private Endpoint
  }
}

Microsoft removed a whole category of work from your plate (patching the engine), but every decision about access and data stayed put. For storing credentials safely see Azure Key Vault: Secrets, Keys & Certificates; for public-vs-private connectivity see Azure Private Endpoint vs Service Endpoint.

SaaS: Microsoft runs the software — your data, users and sharing are still yours

Software as a Service is the top of the stack: you don’t manage infrastructure or a platform, you sign in and use finished software. Microsoft 365 is the canonical example, with Dynamics 365 and GitHub; Microsoft runs the application, platform, OS and hardware. It is tempting to conclude “SaaS means I have no security responsibilities” — the most expensive misread of all, because the responsibilities that remain are the ones attackers most want: your data and your users.

SaaS task Owner The trap How you own it
Your documents, mail, chats You “Microsoft hosts it, Microsoft protects it” Sensitivity labels, DLP, retention
User accounts & MFA You Users without MFA; shared admin accounts Entra ID, MFA, conditional access
Admin role assignment You Too many global admins Least-privilege roles, PIM
Sharing & external access You Files shared “anyone with the link” Sharing policies, guest controls
Device access You Sign-in from unmanaged devices Conditional access, device compliance
The application, platform & infra Microsoft (Not yours — the whole stack below your data) Nothing to do

The classic SaaS breach is not a hacked datacenter — it is over-sharing. A user sets a SharePoint file to “anyone with the link,” the link leaks, and confidential data walks out the door; Microsoft kept the service running perfectly, but the sharing decision was the customer’s. Likewise, an account without MFA is phished and the attacker is in your tenant — because securing the accounts (not the identity platform) was yours.

Even in pure SaaS the controls are real and configurable. Tightening external sharing in SharePoint Online (via PowerShell) and enforcing MFA through Entra conditional access are both your responsibility:

# Restrict org-wide external sharing to existing guests only (your control, not Microsoft's)
Set-SPOTenant -SharingCapability ExistingExternalUserSharingOnly
# Require sign-in (no anonymous "anyone with the link") for shared content
Set-SPOTenant -DefaultSharingLinkType Internal

The shape is identical to IaaS and PaaS, just higher up: Microsoft owns a bigger slice, but DIM — your Data, Identities and Mistakes — never moved.

A worked split across four common Azure offerings

Concepts stick when applied. Here are the tasks that actually move across a VM, App Service, SQL Database and Microsoft 365 (physical layers, always Microsoft’s, are omitted). Read any row across to watch one task change hands as the model climbs:

Security task VM (IaaS) App Service (PaaS) SQL Database (PaaS) Microsoft 365 (SaaS)
OS / engine patching You Microsoft Microsoft Microsoft
Firewall / network rules You Shared You Microsoft
App configuration You You n/a n/a
End-user / login auth You You You You
Access control (RBAC) You You You You
Data classification You You You You
The data itself You You You You
Backup of your data You You (shared)* You (shared)* You (shared)*

*On backup: PaaS and SaaS provide platform resilience and point-in-time restore, but retention policy and the decision to protect business data remain yours — Microsoft keeps the service available, not your specific data recoverable to your standards. See Azure Business Continuity & Disaster Recovery: RTO/RPO Fundamentals.

The pattern is unmistakable. OS and engine patching flip to Microsoft on PaaS; network rules flip somewhere in the middle. But the bottom four rows — auth, access, classification, data — never flip at all. Remember the shape of that last block: it is always yours.

Architecture at a glance

The diagram lines up the four hosting models left to right and colours each layer by owner. For on-premises, every layer from the datacenter up to your data is yours. Sweep right and watch the boundary climb: with IaaS the bottom physical layers turn Microsoft-blue while everything from the OS up stays yours; with PaaS the blue rises to swallow the OS and runtime, leaving you app config, network (shared), identities and data; with SaaS almost the whole stack is blue and only the top band stays yours.

Now follow the constant top band across all four columns: data, identities, accounts and access stay yours in every model. That unbroken band is the visual heart of the model — the line climbs as you move right, but never reaches the top. The numbered badges mark where common breaches bite and who owned the missed control — the open port on IaaS, the open SQL firewall on PaaS, the over-shared file / no-MFA account on SaaS — and the legend ties each to its symptom, confirmation and fix, all on the customer’s side.

Layered Azure shared responsibility model showing on-premises, IaaS, PaaS and SaaS as four columns of stacked ownership layers from physical datacenter to data, shaded by owner, with Microsoft owning more of the lower stack as you move from IaaS to SaaS while data, identity and access remain the customer's responsibility across all models, and numbered badges marking common breach points at the NSG layer, the database firewall, and the SaaS data/identity band

This picture is worth memorising for AZ-900: examiners love “which responsibility is always retained by the customer,” and the answer is anything in that top band — in every model.

Real-world scenario

Northwind Retail, a mid-sized online retailer (fictional, but the pattern is real), moved three workloads to Azure in a single quarter and met three faces of the same lesson. It ran the storefront on Azure VMs (IaaS), the new mobile-API backend on App Service with Azure SQL Database (PaaS), and the whole company on Microsoft 365 (SaaS) — and each team assumed a different wrong thing about who secured what.

The infrastructure team, comfortable from years on-premises, lifted-and-shifted the storefront VMs and — to debug a migration issue at 1 a.m. — opened RDP (3389) to Any on the VM’s NSG, meaning to close it “tomorrow.” They never did. Because network rules on IaaS are the customer’s, Azure faithfully allowed the traffic, and within three days the VM’s security log showed tens of thousands of failed logins from a botnet. No breach yet — the password was strong — but it was a brute-force away. The open port was theirs to close.

The application team built the mobile API fast and trusted that “Azure SQL is a managed, secure database.” It was — patched, encrypted, highly available. But to ship quickly they enabled the “Allow Azure services” firewall rule and pasted a SQL admin password into the app’s config. Access control and credentials on PaaS never left their side. A review found 0.0.0.0-0.0.0.0 plus the password in a config file, and the team realised “managed” had covered the engine, not who could reach it — then moved to Entra-only auth, a private endpoint and Key Vault references.

The biggest surprise came from Microsoft 365, where the team thought there was nothing to secure. A sales manager shared a quarterly forecast in SharePoint as “anyone with the link”; it was forwarded twice into a competitor’s inbox. Microsoft’s service performed flawlessly — the sharing decision and the data were the customer’s, exactly as the model says. Northwind’s response: a tenant sharing policy of “existing guests only,” DLP for Confidential documents, and MFA on every account via conditional access.

The post-incident review fit on one slide — the shared responsibility model. Every gap had been on Northwind’s side, knowable in advance, and not one needed a clever attacker. After mapping each workload explicitly (IaaS → own OS-up; PaaS → own data/access; SaaS → own data/identity/sharing), the grey zones — and the incidents — disappeared.

Advantages and disadvantages

The shared responsibility model is not a feature you turn on — it is the structure cloud security takes. Still, understanding and using it deliberately has clear upsides and real failure modes:

Advantages of internalising the model Disadvantages / risks if mishandled
Removes the grey zones where breaches live Easy to misread which side a task is on
Lets you offload real work to Microsoft (patching, hardware) Tempting to over-trust “managed” = “secure”
Scales your security focus to what only you can judge New services need re-evaluation each time
Gives teams one shared vocabulary for audits Split (shared) layers cause “I thought you had it” gaps
Directly examinable — clarity pays on AZ-900/SC-900 Different SaaS vendors draw the line differently
Higher up the stack = less to secure, faster delivery Higher up ≠ nothing to secure (data/identity remain)

The upside matters most when you adopt a new service: the model lets you reason about your duties before you deploy, so security is designed in, not bolted on after an incident. The downside bites hardest on the shared layers — network on PaaS, identity everywhere — where both sides quietly assume the other has it. The cure is always the same: name the owner of every task explicitly, in writing, before you ship.

Hands-on lab

This lab is conceptual-but-real: you observe the responsibility line on actual Azure resources using read-only commands that change nothing and cost nothing. All commands run in Azure Cloud Shell (free, in the portal). Note up front that there is no command to patch a host or enter a datacenter — that side is entirely Microsoft’s.

Step 1 — See your IaaS network responsibility. If you have a VM, inspect its NSG inbound rules. Every rule here is a decision you made (or inherited):

az network nsg list --query "[].{name:name, rg:resourceGroup}" -o table
az network nsg rule list --nsg-name <nsg-name> --resource-group <rg> \
  --query "[?direction=='Inbound'].{name:name, port:destinationPortRange, src:sourceAddressPrefix, access:access}" -o table

Look for any rule with src = * or Internet on port 3389/22. That open door is yours.

Step 2 — See your PaaS access responsibility. If you have an Azure SQL server, list its firewall rules and check whether public access is on:

az sql server list --query "[].{name:name, rg:resourceGroup, publicAccess:publicNetworkAccess}" -o table
az sql server firewall-rule list --server <server> --resource-group <rg> \
  --query "[].{name:name, start:startIpAddress, end:endIpAddress}" -o table

A rule of 0.0.0.0-0.0.0.0 (named AllowAllWindowsAzureIps) means all Azure traffic can reach it — your call to keep or remove.

Step 3 — See your identity responsibility. List the role assignments on a resource group. Every assignment is an access decision only you can make:

RG_ID=$(az group show -n <rg> --query id -o tsv)
az role assignment list --scope "$RG_ID" \
  --query "[].{principal:principalName, role:roleDefinitionName}" -o table

Too many Owner/Contributor assignments? That’s a least-privilege gap on your side of the line.

Step 4 — Map it. For each resource you inspected, write one line: service type (IaaS/PaaS/SaaS) → the top three things I own. You now have a per-resource responsibility map — the artifact that prevents grey-zone breaches.

Teardown. Nothing to tear down — every command was read-only, so no resources were created and no charges incurred.

Common mistakes & troubleshooting

The real failure modes from misreading the model — each a symptom, the misread that causes it, how to confirm, and the fix. In every case the missed control was the customer’s.

# Symptom The misread (who assumed wrong) Confirm with Fix
1 VM hammered by brute-force logins “Azure’s firewall protects my VM” (NSG is yours) az network nsg rule list shows 3389 from * Remove the rule; use Bastion / JIT
2 Storage data found by search engines “Storage is private by default” (access level is yours) az storage account show ... allowBlobPublicAccess Disable public blob access; use SAS/RBAC
3 SQL DB reachable from anywhere “Managed DB = secure DB” (firewall is yours) firewall-rule list shows 0.0.0.0 Remove allow-all; Private Endpoint
4 Confidential file leaked from SharePoint “Microsoft hosts it, so it’s safe” (sharing is yours) Sharing reports / Get-SPOTenant Restrict sharing; sensitivity labels + DLP
5 Account phished, tenant breached “Microsoft secures identity” (accounts are yours) Sign-in logs show no MFA on the user Enforce MFA via conditional access
6 Old OS CVE exploited on a VM “The cloud patches everything” (guest OS is yours) Update Manager shows pending patches Patch the guest OS; automate it
7 Secret leaked from app config “PaaS config is handled” (your config is yours) Secret visible in app settings Move to Key Vault references
8 Too many global admins in M365 “Admin is Microsoft’s job” (roles are yours) Role report shows many global admins Least privilege; PIM for elevation
9 “Shared” network control left undone Both sides assumed the other set it Trace the NSG/firewall on the PaaS resource Name an owner explicitly; set the rule
10 Data deleted, no recovery to standard “Microsoft backs up my data” (retention is yours) No backup policy / short retention Configure backup + retention you need

A rule of thumb when you’re unsure whose job a misconfiguration was: identify the service model, then ask “is this about data, identity, access, or my own configuration?” — if yes, it’s yours, full stop. Only OS-or-below on PaaS/SaaS, or physical/hypervisor on anything, is Microsoft’s.

Best practices

Security notes

The model is a security topic, so the guidance above is the heart of it, but a few cross-cutting points:

Cost & sizing

The model has no SKU and no line item — understanding it is free. What it changes is where your security spend and effort go:

Cost dimension What you actually pay for Free / no extra cost
The model itself Nothing — it’s a contract, not a product Always free to learn and apply
Encryption at rest Included by default on Azure storage/disks Microsoft-managed keys: free
Customer-managed keys (CMK) Key Vault operations + management Optional; only if you need key control
MFA / conditional access Included with most Entra ID plans Security defaults: free baseline
Network controls (NSG) NSGs are free; Azure Firewall is paid NSG rules: no charge
Defender for Cloud Free foundational CSPM; paid plans per resource Free tier covers posture basics
Backup / retention Per-GB + storage redundancy you choose Short PaaS point-in-time restore often included

The economic shape: moving up the stack trades capital and labour for service fees. On IaaS you pay (in effort) to patch, harden and back up the OS; on PaaS and SaaS you pay Microsoft to do that and redirect your effort to the high-value parts — data, identity, access — you can’t outsource. The cheapest and most secure default is to turn on the free controls everywhere (Security defaults/MFA, NSGs, default encryption, public access disabled) and pay for the advanced ones (Azure Firewall, CMK, Defender plans) only where the risk justifies it. To keep that spend visible see Azure FinOps & Cost Management at Scale.

Interview & exam questions

These map to AZ-900 (Azure Fundamentals) and SC-900 (Security, Compliance & Identity Fundamentals), where the shared responsibility model is a guaranteed topic.

Q1. State the shared responsibility model in one sentence. Microsoft is responsible for the security of the cloud (datacenters, hosts, hypervisor, backbone and managed platform software); the customer is responsible for security in the cloud (their data, identities, access and configuration). The boundary shifts by service model.

Q2. Which responsibilities are always the customer’s, regardless of service type? Data, identities/accounts, and access decisions (plus the customer’s own configuration). They never transfer to Microsoft — only the customer can classify data, manage their users and decide who gets access.

Q3. How does the line differ between IaaS and PaaS? On IaaS the customer owns the OS and up (patching, antimalware, network rules, app, data). On PaaS Microsoft takes over the OS, runtime and platform patching, leaving the customer the data, access, credentials and (shared) network config.

Q4. On SaaS like Microsoft 365, what does the customer still secure? Their data (via labels, DLP, retention), user accounts and MFA, admin role assignments, and sharing/external-access settings. Microsoft runs the application and all infrastructure.

Q5. Who is responsible for patching the guest operating system of an Azure VM? The customer. Microsoft patches the host and hypervisor; the guest OS inside an IaaS VM is yours (e.g., via Azure Update Manager).

Q6. A Storage account container is publicly readable and data leaked. Whose responsibility was the control? The customer’s. A container’s public-access level is a customer configuration — Azure provides the setting (and lets you disable public access entirely), but the choice is yours.

Q7. Who is responsible for physical security of Azure datacenters? Microsoft, in every service model. Customers never have physical datacenter responsibilities.

Q8. Is encryption at rest the customer’s or Microsoft’s responsibility? Shared. Azure encrypts data at rest by default with Microsoft-managed keys (Microsoft’s infrastructure responsibility), but the customer decides whether to use customer-managed keys and owns those keys if they do.

Q9. Why can’t Microsoft take responsibility for your data even on fully-managed SaaS? Only you know your data’s sensitivity, who should access it, and how long to keep it. Microsoft can store and protect the bytes, but cannot make the business judgements that define “secure” for your data.

Q10. A managed Azure SQL Database was breached via an open firewall and an unrotated admin password. Was “managed” doing its job? Yes — Microsoft patched the engine and encrypted the disks. The firewall rules and credentials were always the customer’s responsibility; “managed” never covered who can connect or with what password.

Q11. As you move up the stack (IaaS→PaaS→SaaS), does your security responsibility disappear? No — it shrinks and shifts upward. Microsoft handles more infrastructure, but data, identity and access remain yours at every level. “Less to secure” never becomes “nothing to secure.” (And “shared” layers like network controls on PaaS are where both sides can wrongly assume the other handled it.)

Quick check

  1. Complete the sentence: “Microsoft secures the ____; the customer secures ____.”
  2. Name the three things that are always the customer’s responsibility in every service model.
  3. On an Azure VM (IaaS), who patches the guest operating system?
  4. A SharePoint file was over-shared and leaked. Whose responsibility was the sharing decision?
  5. As you move from IaaS to SaaS, who takes on more of the stack — and which responsibilities never move?

Answers

  1. Microsoft secures the cloud (physical datacenter, hosts, hypervisor, backbone, managed platform); the customer secures what they put in it (data, identities, access, configuration).
  2. Data, identities/accounts, and access decisions (plus the customer’s own configuration). They can never be delegated to Microsoft.
  3. The customer. Microsoft patches the host and hypervisor; the guest OS inside the VM is yours.
  4. The customer’s. Microsoft ran the service correctly; the decision to share, and the data, were always on the customer’s side of the line.
  5. Microsoft takes on more of the lower stack (OS, runtime, then the application). Data, identities, accounts and access never move — they stay the customer’s in every model.

Glossary

Term Definition
Shared responsibility model The agreed division of security duties between Microsoft and the customer, drawn per service model.
Security of the cloud Microsoft’s half — datacenters, hosts, hypervisor, backbone and managed platform software.
Security in the cloud The customer’s half — data, identities, access and configuration.
IaaS Infrastructure as a Service: you rent VMs, networks and disks and own the OS and up.
PaaS Platform as a Service: you rent a managed platform; Microsoft owns the OS/runtime, you own data, access, config.
SaaS Software as a Service: you use finished software (e.g., Microsoft 365); Microsoft runs the app, you own data, users, sharing.
Hypervisor The layer isolating each customer’s VM from others on a shared host; always Microsoft’s responsibility.
Guest OS The operating system inside your VM; yours on IaaS, Microsoft’s on PaaS and above.
Network security group (NSG) Allow/deny rules controlling traffic to/from Azure resources; configured by the customer.
Microsoft Entra ID Azure’s identity platform (your tenant); Microsoft secures the platform, you secure the accounts in it.
Azure RBAC Role-based access control — how you grant who-can-do-what on Azure resources.
Encryption at rest Data encrypted on disk; on by default with Microsoft-managed keys, with optional customer-managed keys (CMK).

Next steps

AzureShared ResponsibilityCloud SecurityIaaSPaaSSaaSAZ-900Governance
Need this built for real?

Vinod is a Senior Cloud Architect (22+ yrs) — available for Azure / AWS / GCP architecture, landing zones, and migrations.

Work with me

Comments

Keep Reading