Most engineers think…
Most engineers first hear "we turned on MFA, so we're secure" and picture a single tickbox that protects everything. They think MFA on the user account is the whole story.
Wrong — and that gap is exactly how accounts still get breached with MFA enabled. MFA is just one control. The real engine is Conditional Access: an if-then policy that looks at who you are, what device you're on, where you're coming from and how risky the sign-in looks, and only then decides whether to grant, challenge with MFA, or block. And if you leave legacy authentication (IMAP/POP3/SMTP) open, attackers simply use a protocol that can't do MFA — MFA becomes a front door with the back door wide open. The policy engine, not the tickbox, is the security.
① Identity is the perimeter — the cloud control plane
Picture Sneha, an L1 cloud-support engineer at Infosys. Ten years ago, "secure the company" meant guarding the network perimeter — a hardware firewall around the office, a VPN to get inside, and the rule "if you're on the inside network, you're trusted." But Sneha's company now runs on Microsoft 365, Azure and a dozen SaaS apps. Those apps don't live behind her firewall anymore — they live on the public internet, and every employee logs into them from home, a cafe, or a phone.
So where is the wall now? There isn't a network one. When the apps and the users are both on the internet, the only thing standing between an attacker and the data is the login. That is the shift this whole lesson rests on: identity is the new perimeter, and the control plane — the place security decisions get made — moved from the network edge to the identity layer.
The system that owns that identity layer for Microsoft is Microsoft Entra ID — which you will still hear called by its old name, Azure Active Directory (Azure AD). Entra ID is the identity provider (IdP) that sits in front of M365, Azure and SaaS: when you sign in to Outlook or the Azure portal, you are really signing in to Entra ID, which then issues a token the app trusts.
Entra ID doesn't just hold human users. Learn this cast — interviews and the exam test it: Users (people like Sneha) and Groups (bundles you assign access to, so you manage 5,000 people as 12 groups). App registrations let your own or third-party apps use Entra ID to sign people in. A service principal is the "user account for an app." And a managed identity is a passwordless identity Azure gives a resource (like a VM) so it can call other services without a secret in code — the cure for hard-coded keys.
The four identity types in Entra ID
Tap each card — these are the objects you will create, assign and troubleshoot every day, and they show up across SC-300 and AZ-500.
A user is a person; a group bundles many. You assign access (and CA policies) to groups, not one-by-one. So: 5,000 people managed as a handful of groups.
Defines an app to Entra ID — its identity, redirect URIs and permissions. So: this is how an app gets to use "Sign in with Microsoft".
The "user account for an app" — the identity a registered app uses to authenticate. So: when a script breaks with 401, you check the service principal, not a person.
A passwordless identity Azure manages for a VM/Function so it calls services with no stored secret. So: the fix for hard-coded keys in code.
The old model is a society gate-pass register: once the guard waves you through the front gate, you can walk into any flat — being "inside the gate" is treated as trusted. The cloud model is Aadhaar-OTP verification at every counter: it doesn't matter which gate you came through; the bank, the SIM shop and the gas office each verify you directly before serving you. Entra ID is that Aadhaar authority, and Conditional Access is the clerk deciding whether your OTP alone is enough or they need more proof today.
A developer at TCS hard-codes a storage key in a VM's code, and a security review flags it. Which Entra ID identity type is the right fix so the VM can reach the storage account with no secret in the code?
Pause & Predict
Predict: if "inside the network = trusted" is dead, what is the single thing an attacker now needs most to get into a cloud tenant — and what one extra check defeats a stolen copy of it? Type your guess.
② Conditional Access — the if-then policy engine
Here is the one sentence that unlocks Conditional Access: a CA policy is an if-then statement. IF these signals are true, THEN apply these controls. That's it. Everything else is detail. Microsoft's own docs describe it as combining signals to make a decision and enforce a policy.
The signals (the IF side, called Assignments and Conditions in the portal) include: user or group (who), device state (managed/compliant or not), location (the IP and country the sign-in comes from), the app being accessed, the client app, and the sign-in risk. The controls (the THEN side) include: require MFA, require a compliant device, require a hybrid-joined device, block access, or session limits.
Two rules about how they combine, both exam-favourites. First, all assignments combine with AND — if a policy targets "admins" and "the Azure portal," the user must be an admin and hitting the Azure portal for it to fire. Second, when several policies apply, all of them must be satisfied, and if any matching policy says block, block wins. Enforcement runs in two phases: phase 1 collects the signals (this also happens for report-only policies), and phase 2 enforces — block stops first, otherwise the user is prompted for the missing controls in a fixed order (MFA, then compliant device, then hybrid join…).
You can also drive Conditional Access as code — useful for review, version control and the exam's automation angle. Here is the same "require MFA for admins" idea expressed as a Microsoft Graph policy body, the shape the portal saves behind the scenes.
# Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess"
$params = @{
displayName = "CA002 - Require MFA for admins"
state = "enabledForReportingButNotEnforced" # report-only
conditions = @{
users = @{ includeRoles = @("62e90394-69f5-4237-9190-012177145e10") } # Global Admin
applications = @{ includeApplications = @("All") }
}
grantControls = @{ operator = "OR"; builtInControls = @("mfa") }
}
New-MgIdentityConditionalAccessPolicy -BodyParameter $paramsId DisplayName State -- ----------- ----- 8f3c1a92-...-4d2e-bb7a-19c0e7f2a6b1 CA002 - Require MFA for admins enabledForReportingButNotEnforced
Symptom: you tick both Require compliant device and Require MFA and leave the default Require all the selected controls, then users on personal phones are locked out even with correct MFA. Cause: "all selected" means the device must be Intune-compliant too, and BYOD phones aren't. Fix: decide whether you mean AND (both) or OR (either) — switch to Require one of the selected controls if a compliant device or MFA is acceptable, and roll it out in report-only first to see who it would have blocked.
A policy at Wipro targets "Finance group" AND "the SAP app" AND requires MFA. Priya is in Finance but is opening Outlook, not SAP. Does the policy require her to do MFA right now?
Pause & Predict
Predict: two CA policies apply to the same sign-in — Policy A says "grant with MFA," Policy B says "block this country." The user does MFA successfully. Are they in? Type your guess.
③ Risk-based access & Zero Trust
So far the signals were static facts (who, what device, where). The most powerful signal is dynamic: how risky does this sign-in look right now? That comes from Microsoft Entra ID Protection, which runs machine-learning models over Microsoft's sign-in telemetry and produces two scores.
Sign-in risk rates a single login attempt: is this an impossible-travel case, an anonymous/Tor IP, an unfamiliar device, a token-replay? User risk rates the account itself over time: did this user's credentials show up in a leaked-credentials dump, or is there a pattern of risky activity? Each is scored low / medium / high.
Now the clever part: risk-based Conditional Access uses those scores as the IF. A common pair: IF sign-in risk is high → require MFA (prove it's really you), and IF user risk is high → require a secure password change (the credential may be in attackers' hands, so rotate it). Microsoft is moving the legacy Identity-Protection risk policies into Conditional Access — the standalone risk policies retire on 1 October 2026, so build new ones in CA where you get report-only mode and Graph APIs.
This is Zero Trust in practice. Zero Trust has three rules, and Conditional Access implements each one directly. Verify explicitly — check identity, device, location and risk on every request (that's the signals). Use least privilege — grant only what's needed, with session limits and just-in-time access. Assume breach — treat a risky sign-in as already compromised and demand more proof or block. In NIST SP 800-207 terms, the CA engine is the Policy Engine (it decides) and Entra ID is the Policy Enforcement Point (it acts).
▶ Watch a risky sign-in get caught
Karthik at HCL is the target. An attacker in another country has phished his password and tries to log into Microsoft 365. Follow the sign-in through Entra ID and the risk-based policy, step by step. Press Play for the healthy path, then Break it to see the failure.
Never flip a new policy straight to On across all users. Create it in Report-only mode (the default for new policies): Entra ID evaluates it on every sign-in and records what it would have done, without enforcing. After a few days, read Entra ID → Sign-in logs → Conditional Access tab (and the What If tool) to see exactly who it would have blocked or challenged. Only when the impact looks right do you move Enable policy from Report-only to On. Report-only policies don't even need the break-glass exclusion, because they never block.
Meera at ICICI faces this
Meera, an L2 identity analyst, sees an alert: a Global Admin account signed in successfully from Bengaluru at 09:14 and again from Lagos at 09:31 — a physically impossible gap. The Lagos session is already reading the mailbox.
Credentials were phished. Sign-in risk for the Lagos attempt is High (impossible travel + unfamiliar device), but the tenant had only a plain "require MFA" policy that the attacker satisfied with a stolen session token — there was no risk-based step-up or block, and no Identity Protection user-risk policy to force a password reset.
She separates the signals from the controls: the MFA control existed, but no policy used the risk score, so a high-risk sign-in was treated like a normal one. She confirms the risk level and detections in Identity Protection.
Microsoft Entra admin center → Protection → Identity Protection → Risky sign-ins (and Risky users)Build a risk-based CA policy — IF sign-in risk is High → block (or require MFA + reauth) — and a user-risk policy — IF user risk is High → require secure password change. Confirm the account, revoke its sessions, and roll the new policies out from report-only to On.
Replay via the What If tool with sign-in risk = High → the policy now shows "Block"; the next impossible-travel attempt on any account is denied and the user is forced to reset, visible in the Sign-in logs Conditional Access tab.
Aditya wants two things: a sign-in that looks fraudulent should be challenged, and an account whose password leaked online should be forced to reset. Which pair of risk-based controls matches?
Pause & Predict
Predict: which Zero Trust principle is most directly broken if you trust "the user is signing in from our office IP range" and skip MFA for those sign-ins? Type your guess.
④ Building safe policies — baselines, break-glass & gotchas
Now you build. A sane starting estate is a small set of baseline policies that every Microsoft identity guide recommends. (1) Block legacy authentication for all users. (2) Require MFA for admins (all the privileged directory roles). (3) Require MFA for all users. (4) Risky sign-in → require MFA (and risky user → password change). Many tenants now also get Microsoft-managed policies rolled out automatically in report-only — review and adopt those too.
Why is block legacy authentication rule number one? Old protocols — IMAP, POP3, SMTP AUTH, the Office 2010-era clients — cannot perform MFA. So if you require MFA for users but leave legacy auth open, an attacker just connects over IMAP with the phished password and skips MFA entirely. Microsoft's own data attributes more than 99% of password-spray attacks to legacy authentication. Leaving it on turns your MFA into a front door with the back door propped open.
The single most important safety step before you enforce anything: the break-glass (emergency access) account. Microsoft recommends two cloud-only Global Admin accounts that you exclude from every blocking CA policy, protect with phishing-resistant MFA (FIDO2), and alert on for every single use. Without this, one typo in a block policy can lock out all your admins — a real, common disaster.
Symptom: you enable "Require compliant device for all users," and minutes later no one, including you, can sign in to the Entra admin center — the admins' own laptops weren't Intune-enrolled yet. Real teams have done exactly this; recovery means opening a Microsoft support case to bypass the policy. Fix BEFORE you enforce: (1) keep two break-glass accounts excluded from the policy, (2) roll out in report-only first and read the impact, (3) scope to a pilot group before "all users." The exclusion list is what saves you at 2 a.m.
Two more building blocks. Named locations let you define your office IP ranges or specific countries once and use them as a signal (e.g. "block sign-ins from countries we never operate in"). But location is a weak signal — IPs can be spoofed or proxied — so use it to reduce friction, never as the only gate. And remember the legacy-auth backdoor: if any policy or app still allows basic auth, your strongest MFA policy can be sidestepped, so the block-legacy-auth policy underpins all the others.
az ad signed-in-user show --query userPrincipalName -o tsv
# review last 24h of legacy-auth sign-ins (clientAppUsed = IMAP/POP/SMTP/Other)
az monitor activity-log list --offset 24h \
--query "[?contains(operationName.value,'Sign-in')].{user:caller, app:properties.clientAppUsed, result:status.value}" \
-o tableUserPrincipalName sneha.k@infosys-tenant.onmicrosoft.com User App Result -------------------------------- --------------------- ------- rahul.m@infosys-tenant... Browser Success svc-backup@infosys-tenant... Other clients (legacy) Failure <- blocked by CA001
The break-glass account is the spare flat key sealed in an envelope with the building manager. You never use it day-to-day, it isn't tied to any one resident, and there's a logbook entry every time the envelope is opened. The day your normal key snaps in the lock (a bad CA policy locks everyone out), that sealed spare is the only thing that gets you back in. Excluding it from your blocking policies is what keeps the envelope sealed and usable.
You're about to enable a brand-new "block access from outside India" policy for all users. What MUST be true first so you don't lock yourself and every admin out?
Pause & Predict
Predict: you have a perfect "require MFA for all users" policy, but you never created a block-legacy-authentication policy. Where does the attacker walk in? Type your guess.
Cold, in 30 seconds: state a CA policy as IF (name three signals) → THEN (name three controls); explain why "right password, wrong device" gets blocked; name the four baseline policies; and explain what a break-glass account is and why it's excluded from blocking policies. If you can do that without notes, you're ready for the next lesson and for the Conditional Access objectives of SC-300 and the identity domain of AZ-500.
🤖 Ask the AI Tutor
Tap any question — instant, scoped to this lesson. No login, no waiting.
Pre-curated from Azure docs + community Q&A, scoped to this lesson. For a live prod issue, paste your export into chat.techclick.in.
📝 Wrap-up assessment — six more
You've answered 4 inline. Six left. 70% (7 of 10) marks the lesson complete on your profile. Tap Submit all answers at the end.
🧠 In your own words
Type one line: In one line, why does a Conditional Access policy with "require MFA" still let an attacker in if you never blocked legacy authentication? Then compare to the expert version.
🗣 Teach a friend
Best way to lock it in — explain it in one line to a teammate. Tap to generate a paste-ready summary.
📖 Glossary
- Microsoft Entra ID (Azure AD)
- Microsoft's cloud identity provider (renamed from Azure Active Directory in 2023). Authenticates users and apps for M365, Azure and SaaS.
- Service principal
- The "user account for an app" — the identity a registered application uses to authenticate to Entra ID.
- Managed identity
- A passwordless Entra ID identity Azure manages for a resource (VM, Function) so it calls other services with no stored secret.
- Conditional Access (CA)
- An if-then policy engine: IF these signals are true, THEN apply these access controls. The cloud "identity firewall."
- Signals → Controls
- The two halves of a CA policy: signals are the IF (user, device, location, app, risk); controls are the THEN (require MFA, require compliant device, block, limit session).
- MFA
- Multifactor authentication — a second proof beyond the password (Authenticator approval, FIDO2 key, or code).
- Entra ID Protection
- ML-driven feature that scores sign-in risk and user risk and feeds those scores to Conditional Access (needs P2).
- Sign-in risk / User risk
- Sign-in risk rates one login attempt (impossible travel, anonymous IP); user risk rates the account over time (leaked credentials). Each low/medium/high.
- Report-only mode
- A CA policy state that evaluates and logs what it WOULD do on every sign-in without enforcing — the safe way to test impact first.
- Break-glass account
- Two cloud-only Global Admin accounts, excluded from blocking CA policies, kept for the emergency where all normal admins are locked out.
- Legacy authentication
- Old protocols (IMAP, POP3, SMTP AUTH, Office 2010 clients) that can't do MFA — a backdoor unless explicitly blocked.
- Zero Trust
- A model (NIST SP 800-207) that drops the trusted internal network and verifies every request explicitly: verify explicitly, least privilege, assume breach.
📚 Sources
- Microsoft Learn — "Build a Conditional Access policy" (if-then statement of Assignments + Access controls; assignments combine with AND; phase 1 collect / phase 2 enforce; control order MFA → compliant device → hybrid join). learn.microsoft.com/en-us/entra/identity/conditional-access/concept-conditional-access-policies
- Microsoft Learn — "Conditional Access: Grant" (grant controls: require MFA, require compliant device (Intune), require hybrid joined device, block; require all vs require one of the selected controls). learn.microsoft.com/en-us/entra/identity/conditional-access/concept-conditional-access-grant
- Microsoft Learn — "Microsoft Entra ID Protection risk-based access policies" + "Configure risk policies" (sign-in risk vs user risk, low/medium/high; risk-based CA; legacy ID-Protection risk policies retire 1 Oct 2026; build in CA for report-only + Graph). learn.microsoft.com/en-us/entra/id-protection/concept-identity-protection-policies · learn.microsoft.com/en-us/entra/id-protection/howto-identity-protection-configure-risk-policies
- Microsoft Learn — "Manage emergency access admin accounts" + "Block legacy authentication with Conditional Access" (two cloud-only Global Admin break-glass accounts excluded from blocking policies, FIDO2, alert on use; >99% of password-spray uses legacy auth — block IMAP/POP3/SMTP). learn.microsoft.com/en-us/entra/identity/role-based-access-control/security-emergency-access · learn.microsoft.com/en-us/entra/identity/conditional-access/policy-block-legacy-authentication
- Microsoft Q&A — "All admins locked out due to faulty conditional access policy" (real lockout from a blocking policy with no break-glass exclusion; recovery via Microsoft support bypassing CA) + Azure Blog "Mandatory MFA Phase 2, October 2025." learn.microsoft.com/en-us/answers/questions/1003487/ · azure.microsoft.com/en-us/blog/azure-mandatory-multifactor-authentication-phase-2-starting-in-october-2025/
- NIST SP 800-207 "Zero Trust Architecture" (verify explicitly, least privilege, assume breach; Policy Engine / Policy Administrator / Policy Enforcement Point) + SC-300 and AZ-500 study guides (Conditional Access + Identity Protection objectives). csrc.nist.gov/pubs/sp/800/207/final · learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/sc-300 · learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/az-500
What's next?
You can now lock the front door with identity. But what watches the rooms inside — the VMs, storage, containers and the misconfigurations attackers love? Next we turn on the cloud's security camera and posture scanner.