← Knowledge Base

The Conditional Access Policies Every Microsoft 365 Tenant Should Have

  • Microsoft 365
  • Entra ID
  • Conditional Access
  • Security
  • MFA

TL;DR

Conditional Access (CA) is the gatekeeper for Microsoft 365 sign-ins: “if this kind of sign-in happens, then require that.” A brand-new tenant has almost none of it switched on, which is a big reason account takeover is so common. This guide is the baseline set every tenant should run, plus how to turn it on without locking yourself out.


Now for the more technical explanation

What is Conditional Access?

Conditional Access is Entra ID’s policy engine for sign-ins. Each policy is an if / then rule:

If you are on a small tenant and this feels like a lot, Security Defaults is Microsoft’s one-switch baseline (forces MFA registration, blocks legacy auth, protects admin actions). It is far better than nothing. But the moment you need any nuance (excluding a service account, relaxing prompts on managed devices, risk-based rules), you turn Security Defaults off and move to Conditional Access, which is what the rest of this guide covers.

Before you touch anything: break-glass accounts

The single most common Conditional Access disaster is locking yourself out. Create your escape hatch first.

Without this, one bad policy plus one expired token can leave nobody able to sign in to fix it.

Roll everything out in report-only mode first

Every new policy supports Report-only mode. It evaluates the policy against real sign-ins and logs what would have happened, without actually enforcing it.

  1. Create the policy in Report-only.
  2. Leave it for a few days and watch Sign-in logs (the Conditional Access tab shows “would have” results) and the Insights and reporting workbook.
  3. Look for anyone who would have been unexpectedly blocked (service accounts, shared mailboxes with sign-in, a mail-scanning integration, a room device).
  4. Fix the assignments/exclusions, then flip to On.

Report-only is how you get strong policy without a support-ticket avalanche.

The baseline policies

Each one below lists what it does, sensible generic settings, and the gotchas. Names are just labels; use whatever naming scheme you like.

1. Block legacy authentication. Legacy protocols (older Exchange ActiveSync, IMAP, POP, SMTP AUTH, older Office clients) can’t do modern MFA, so attackers love them for password spraying.

2. Require MFA for all users. The floor. Compromised passwords are a given; MFA is what stops them turning into a breach.

3. Require phishing-resistant MFA for admins. Admin accounts are the crown jewels and deserve stronger MFA than a push prompt (which can be phished or MFA-fatigued).

4. Require MFA to register security info. Stops an attacker who has only a password from quietly enrolling their own MFA method.

5. Require a compliant or hybrid-joined device for key apps. Raises the bar from “who are you” to “and is this a device we manage.” Big reduction in risk for the apps that hold your data.

6. Risk-based policies (Entra ID P2). Let Entra’s risk detection do the work: react automatically when a sign-in or a user looks compromised.

7. Session controls. Tighten what a session can do and how long it lasts, especially on devices you don’t manage.

8. Location and country conditions (use with care). Named locations let you treat “from the office / known ranges” differently, or block sign-ins from countries you never operate in.

Cut friction on managed devices with a device filter

Strong policies are only sustainable if your managed fleet barely feels them. Filters for devices let a policy target (or skip) devices by their properties, so you can apply strict controls to unmanaged devices while managed ones get the smooth path.

A reliable “this device is enterprise-managed” filter is:

(device.deviceOwnership -eq "Company")
-or (device.trustType -eq "AzureAD")
-or (device.trustType -eq "ServerAD")
-or (device.trustType -eq "Workplace")
-or ( ((device.operatingSystem -eq "iOS") -or (device.operatingSystem -eq "Android")) -and (device.isCompliant -eq true) )

What each condition means:

How to use it for “strong but low-disruption”:

Test this in report-only like everything else, because a mistyped filter can either over-trust or over-block.

Licensing reality

A sane rollout order

Do it in this sequence, each step in report-only first:

  1. Create break-glass accounts and exclude them from everything.
  2. Block legacy authentication (after checking for legacy sign-ins).
  3. Require MFA for all users (once MFA is registered).
  4. Require MFA to register security info and phishing-resistant MFA for admins.
  5. Session controls and the device filter for the managed-device experience.
  6. Require compliant / hybrid-joined device for your sensitive apps.
  7. Risk-based policies last (they’re the noisiest to tune).

Enforce one policy at a time, watch the sign-in logs for a day or two between each, and keep that break-glass account within reach the entire time.

Written by Tom Langston, IT Infrastructure and Cybersecurity.