🛡️ Conditional Access Implementation – scratching the surface.

Published: [31/7-2025]
Author: Niels Jakobsen, Senior Microsoft Security Consultant


🔐 Introduction

Todays post, is another post in my Microsoft Zero Trust series, where we talk about Microsoft Security features, and how the products work together. Today we will talk about something most people have set up, but in a very limited manner, Conditional Access. And have the opportunity to set up with no additional cost to licensing, and drastically improve their security posture.
I have developed, a modular, persona-based Conditional Access framework that aligns with Microsoft’s Zero Trust principles and scales across enterprise environments. This post provides a technical deep dive into our methodology, policy structure, and phased implementation process. I’ve used this with several customers, to make their M365 resources more secure.


🧱 Framework Architecture

The framework draw inspiration from :

  • Joey Verlinden’s CA Framework (2025.2.3)
  • Claus Jespersen’s Microsoft CA for Zero Trust Resources
  • But primarily it comes from real world experinces implementing Conditional Access.
  • So why use this, instead of just implementing Claus Jespersens Framework?
    • first off, Claus is not maintaining his framework anymore
    • But more importantly, this is just a “Baseline” for what you should implement. This is a simplyfied version of Claus Jespersens great work. It contains more policies in Global, and less policies in the rest of the categories. The reason for doing it like this, is simply that it is easier for customers to manage, with less granular policies and more global policies.
    • With that being said, this is just a “baseline” framework. As you will see in my implementation methodlogy is an assessment of the tenant. In this Phase you will need to assess which policies is fine putting in the global Persona, and which policies you will need to put in the other persona groups. This will depend on wether or not different personas will need different settings.

📛 Naming Convention

We use a strict naming convention for traceability and automation:

<CA Number>-<Persona>-<PolicyType>-<App>-<Platform>-<GrantControl>-<OptionalDescription>

Example:
CA0004-Global-AttackSurfaceReduction-AllApps-AnyPlatform-BlockLegacyAuth


👥 Persona-Based Policy Design

We segment policies by user personas, each with a dedicated CA number range:

Persona GroupRangeDescription
GlobalCA001–CA099Org-wide baseline
AdminsCA100–CA199Privileged roles
InternalsCA200–CA299Employees
ExternalsCA300–CA399External collaborators
GuestsCA400–CA499B2B guest users
M365 Service AccountsCA600–CA699Microsoft 365 automation
Azure Service AccountsCA700–CA799Azure-based services
Corp Service AccountsCA800–CA899On-premises integrations
Workload IdentitiesCA900–CA999App registrations
DevelopersCA1000–CA1099Dev/test environments

📜 Baseline Policy List


🔹 Global Policies

PolicyDescription (EN)Impact (EN)Rationale (EN)
CA0001-Global-BaseProtection-AllApps-AnyPlatform-BlockNonPersonasA blocking policy that blocks all NONPersonasBlocks all users who are not defined as a personaEnforces Zero Trust by denying access to any identity not explicitly authorized, reducing shadow IT and identity sprawl
CA0002-Global-AttackSurfaceReduction-BlockCountriesGeoblocking of specific countriesBlocks access from high-risk regionsReduces exposure to threat actors operating from high-risk geographies, especially where no business operations exist
CA0003-Global-AttackSurfaceReduction-AllApps-AnyPlatform-BlockLegacyAuthBlocks legacy authentication protocolsLegacy apps and devices cannot log inLegacy protocols bypass MFA and are vulnerable to brute-force attacks; blocking them closes a major attack vector
CA0004-Global-AppProtection-MicrosoftIntuneEnrollment-AnyPlatform-MFARequires MFA for Intune enrollmentDevices must use MFA to enrollPrevents rogue device registration and ensures only verified users can onboard devices into management
CA0005-Global-DataProtection-AllApps-iOSorAndroid-AppProtectionRequires MAM policy for mobile loginiOS/Android apps require app protection for loginProtects corporate data on mobile devices, even in BYOD scenarios, by enforcing app-level controls
CA0006-Global-AttackSurfaceReduction-AllApps-AnyPlatform-BlockUnknownPlatformsBlocks access from Linux or Windows PhoneUsers cannot log in from unsupported platformsEnsures only secure, supported platforms are used to access corporate resources
CA0007-Global-AttackSurfaceReduction-VariousApps-AnyPlatform-BlockBlocks specific appsApps deemed insecure are blockedPrevents use of applications that pose compliance or security risks within the tenant
CA0008-Global-IdentityProtection-AllApps-AnyPlatform-MFAandPWDforMediumandHighUserRisk(P2)Requires MFA and password reset for high user riskHigh-risk users must complete additional verificationReduces likelihood of account compromise by enforcing strong authentication and credential hygiene
CA0009-Global-IdentityProtection-AllApps-AnyPlatform-MFAforMediumandHighSignInRisk(P2)Requires MFA for risky sign-insRisky sign-ins require MFA verificationValidates user identity during suspicious login attempts, mitigating credential theft
CA0010-Global-IdentityProtection-SpecificApps-Windows-TokenProtection(P2)Enables token protection for specific appsTokens cannot be reused across devicesPrevents token replay attacks by binding tokens to trusted devices
CA0011-Global-AttackSurfaceReduction-AllApps-AnyPlatform-AuthenticationFlowBlockBlocks manipulation of authentication flowAuthentication flow cannot be transferred between devicesPrevents attackers from hijacking tokens and accessing resources from non-compliant endpoints

🔹 Admin Policies

PolicyDescription (EN)Impact (EN)Rationale (EN)
CA0100-Admins-BaseProtection-AllApps-AnyPlatform-CompliantandMFAPasskey-PhishingResistantRequires compliant device and phishing-resistant MFA for admin accountsAdmin accounts must use secure devices and phishing-resistant MFAAdmins have elevated privileges and are prime targets; enforcing strong authentication and device compliance reduces risk significantly
CA0101-Admins-IdentityProtection-AllApps-AnyPlatform-CombinedRegistration-CompliantorMFAPasskeyRequires compliant device or MFA passkey for registering security infoAdmins must use secure methods to register authentication infoPrevents registration from compromised endpoints and ensures secure identity lifecycle for privileged users
CA0102-Admins-DataProtection-AllApps-AnyPlatform-SessionPolicyRequires MFA every 8 hours for admin accountsAdmins are prompted for MFA periodicallyLimits session duration to reduce exposure from hijacked sessions and enforces accountability for privileged access

🔹 Internal Users

PolicyDescription (EN)Impact (EN)Rationale (EN)
CA0200-Internals-BaseProtection-AllApps-AnyPlatform-CompliantRequires compliant device for loginBlocks BYOD and non-compliant devicesEnsures corporate data is accessed only from managed, secure devices, reducing risk of data leakage
CA0201-Internals-IdentityProtection-AllApps-AnyPlatform-CombinedRegistration-CompliantorMFARequires compliant device or MFA for registering security infoUsers must use secure methods to register authentication infoPrevents unauthorized registration and ensures secure onboarding of employee identities

🔹 External Users

PolicyDescription (EN)Impact (EN)Rationale (EN)
CA0300-Externals-BaseProtection-AllApps-AnyPlatform-CompliantRequires compliant device for external usersExternal users must use secure devicesEnsures external collaborators meet the same security standards as internal users
CA0301-Externals-IdentityProtection-AllApps-AnyPlatform-CombinedRegistration-CompliantorMFARequires compliant device or MFA for registering security infoExternal users must use secure methods to register authentication infoPrevents identity spoofing and ensures secure onboarding of external identities
CA0302-Externals-DataProtection-AllApps-AnyPlatform-SessionPolicyPrompts external users for sign-in every 30 daysIncreases login frequency for external usersReduces risk of persistent access and ensures regular identity verification for higher-risk external accounts

🔹 Guest Users

PolicyDescription (EN)Impact (EN)Rationale (EN)
CA0400-Guests-BaseProtection-AllApps-AnyPlatform-MFARequires MFA for guest usersGuest users must use MFA to log inAdds a critical layer of security for temporary or external access, reducing risk of unauthorized access
CA0401-Guests-IdentityProtection-AllApps-AnyPlatform-TOU-CombinedRegistrationRequires Terms of Use acceptance for registering security infoGuest users must accept TOU before registrationEnsures legal and policy compliance before granting access to sensitive systems
CA0402-Guests-AttackSurfaceReduction-AllApps-AnyPlatform-BlockNonGuestAppAccessBlocks access to non-guest appsGuest users are restricted to guest-specific appsPrevents lateral movement and unauthorized access to internal resources
CA0403-Guests-ComplianceProtection-AllApps-AnyPlatform-RequireTOURequires Terms of Use acceptanceGuest users must accept TOUReinforces policy awareness and legal accountability for guest access
CA0404-Guests-DataProtection-AllApps-AnyPlatform-SignInSessionPolicyPrompts guest users for sign-in every 14 daysIncreases login frequency for guest usersEnsures regular re-authentication for temporary users, reducing risk of stale sessions or account misuse

🔹 Service Accounts

PolicyDescription (EN)Impact (EN)Rationale (EN)
CA0600-Microsoft365ServiceAccounts-BaseProtection-AllApps-AnyPlatform-BlockUntrustedLocationsBlocks service account logins from untrusted locationsService accounts can only log in from known IP rangesPrevents misuse of automation accounts by restricting access to trusted environments, reducing exposure to credential theft or abuse

🔹 Emergency Access Users

PolicyDescription (EN)Impact (EN)Rationale (EN)
CA2000-EmergencyAccessUser-BaseProtection-AllApps-AnyPlatform-CompliantandMFAPasskey-PhishingResistantRequires compliant device and phishing-resistant MFA for emergency accountsEmergency accounts must use maximum securityThese accounts are critical for recovery and must be protected with immutable, high-assurance controls
CA2001-EmergencyAccessUser-IdentityProtection-AllApps-AnyPlatform-CombinedRegistration-CompliantorMFAPasskeyRequires compliant device or MFA passkey for registering security infoEmergency accounts must use secure methods for registrationEnsures emergency access credentials are managed securely and cannot be tampered with during a crisis scenario

🧭 Implementation Methodology

I implement Conditional Access in three structured phases:


🔍 Phase 1: Discovery & Planning

Objective: Understand the customer’s current CA posture and readiness.
Activities:

  • Review existing CA policies
  • Identify gaps and risks
  • Determine need for customer-specific policies
  • Validate prerequisites:
    • ✅ Log Analytics workspace for CA monitoring
    • ✅ MFA rollout across all users
    • ✅ Break-the-glass (BTG) emergency access accounts
      Tools:
  • Jasper Baes’ Conditional Access Blueprint
  • Persona flow diagrams
  • Microsoft Graph API for policy export

⚙️ Phase 2: Framework Deployment (Report-Only Mode)

Objective: Deploy all policies in Report-Only mode to simulate enforcement.
Activities:

  • Deploy full Danoffice IT CA framework
  • Deploy customer-specific policies
  • Monitor sign-in logs and policy impact
    Why Report-Only?
  • Prevents accidental lockouts
  • Enables safe testing of enforcement logic
  • Provides visibility into potential disruptions

📊 Phase 3: Monitoring, Tuning & Activation

Objective: Gradually activate policies based on telemetry and customer feedback.
Activities:

  • Review policy impact in Insights & Reporting
  • Identify failed sign-ins and root causes
  • Collaborate with customer to:
    • Reclassify accounts (e.g., to workload identities)
    • Add justified exclusions
  • Activate stable policies every 14 days
  • Repeat until full enforcement is achieved

🧠 Technical Considerations

  • Token Protection (P2): Prevents token replay attacks by binding tokens to devices.
  • Authentication Strengths: Use Passkey or phishing-resistant MFA for admins.
  • Session Controls: Apply Conditional Access App Control or sign-in frequency limits.
  • Named Locations: Use trusted IPs and country-based blocks.
  • Custom Controls: Integrate with third-party MFA or SIEM tools via Conditional Access APIs.

📌 Final Thoughts

I have seen countless of times on customer tenants, that they implemented CA policies 4 years ago and never touched it since. So now they have 3 policies, Blog Legacy Auth, Geo-Blocking and MFA. And several accounts are excluded that are not supposed to be.

Conditional Access is not just a feature—it’s a security architecture. With a structured framework, persona-based segmentation, and phased rollout, organizations can enforce Zero Trust principles without disrupting productivity. Most people have the oppurtunity to use Conditional Access through their licenses, and could drastically improve their security posture by implementing a proper framework. And you can do it all without risk because of the report-only feature. So what are you waiting for?

Next week, i will dive further into conditional access. Giving examples of the different policies, and how we can do granulate the policies even more.

 

Scroll to Top