This site is called Conditional Access, and yet surprisingly, it has very little advice on what you should do for CA policies. I’ve stayed away from this subject on purpose; it’s very hard to “baseline” CA policies as they are very bespoke to the individual needs of a business, and nobody can ever agree on what’s best.

The word “baseline” holds a lot of weight too. Many frameworks or baselines have become inarguable rulesets for administrators everywhere, even though few of them ever set out to be used in that way.

So, this isn’t a baseline, I’m not even going to call it guidance. These are some policies I use, feel free to take some inspiration.

I’ve copied ideas I’ve seen from Jay Kerai, Ru Campbell and others.

General Approach

Apply broadly, exclude narrowly.

If you assign to static groups, you’ve made yourself a static problem. Even if it’s a dynamic group, there might be times where for whatever reason a user isn’t quite fitting the rule, and it may as well have been an “all users” assignment from the start anyway.

Note: Where specific property types aren't configured, that means it will apply to everything.

In "MFA all users all resources", I'm not configuring any network or conditions. It simply means it applies to all users regardless of other possible login routes.

Policy list

NameCA01: MFA all users all resources
UsersAll users
Target ResourcesAll resources
GrantRequire multifactor authentication

NameCA02: Block Legacy Auth
UsersAll users
Target ResourcesAll resources
ConditionsClient Apps –> Configure = YES
☑️Exchange ActiveSync
☑️Other Clients
GrantBlock access

NameCA03: Block Unsupported OS Types
UsersAll users
Target ResourcesAll resources
ConditionsDevice Platforms –> Configure = YES
Include = Any Device
Exclude
☑️Android
☑️iOS
☑️Windows
☑️macOS
GrantBlock access

NameCA04: Require App Protection (mobile)
UsersAll users
Target ResourcesAll resources
ConditionsDevice Platforms –> Configure = YES
Include
☑️Android
☑️iOS
GrantRequire app protection policy

NameCA05: Require Compliant Desktop
UsersAll users
Target ResourcesAll resources
ConditionsDevice Platforms –> Configure = YES
Include
☑️Windows
☑️macOS
GrantRequire device to be marked as compliant

NameCA06: Block Code Flow
UsersAll users
Target ResourcesAll resources
ConditionsAuthentication flows –> Configure = YES
☑️Device code flow
GrantBlock access

NameCA07: Sign In Risk – Medium/High – MFA
UsersAll users
Target ResourcesAll resources
ConditionsSign-in risk –> Configure = YES
☑️High
☑️Medium
GrantRequire multifactor authentication
SessionSign-in frequency
☑️Every time
^Requires Entra ID P2^

NameCA08: User Risk – High – Reset PW
UsersAll users
Target ResourcesAll resources
ConditionsUser risk –> Configure = YES
☑️High
GrantRequire password change
SessionSign-in frequency
☑️Every time
^Requires Entra ID P2^

NameCA09: Windows Token Protection
UsersAll users
Target ResourcesSelect Resources
Microsoft Teams Services
cc15fd57-2c6c-4117-a88c-83b1d56b4bbe
Office 365 Exchange Online
00000002-0000-0ff1-ce00-000000000000
Office 365 SharePoint Online
00000003-0000-0ff1-ce00-000000000000
ConditionsDevice Platforms –> Configure = YES
☑️Windows
Client apps
☑️Mobile apps and desktop clients
Session
☑️Require token protection for sign-in sessions (Generally available for Windows. Preview for MacOS, iOS)

NameCA10: Breakglass Require FIDO2
UsersSpecific users included (BG account only)
Target ResourcesAll resources
GrantRequire Authentication Strength
🔽Phishing-Resistant MFA

NameCA11: Register Security info only in operating countries
UsersAll users
Target Resources🔽User Actions
☑️Register security information
NetworkConfigure –> YES
Include☑️Any network or location
Exclude☑️Selected networks and locations
(need to configure this in “named locations”) Select –> Your list of operating countries
GrantBlock Access

NameCA12: Block Authentication Transfer Flows
UsersAll users
Target ResourcesAll Resources
ConditionsAuthentication Transfer –> Configure = YES
☑️Authentication transfer
GrantBlock Access