Post

Building Scalable Conditional Access - A Policy Framework for Zero Trust

Building Scalable Conditional Access - A Policy Framework for Zero Trust

Conditional Access policies are a core enforcement mechanism in Microsoft Entra ID’s Zero Trust model, where every access request must be explicitly verified. However, without a structured approach, Conditional Access policies often evolve reactively, becoming difficult to manage, inconsistent, and prone to gaps in coverage.

Most organizations start without a structured plan, leading to overlapping policies, unclear naming, and uncertainty about what applies in a given scenario.

This article introduces a Conditional Access framework designed to address these challenges. It builds on Claus Jespersen’s Conditional Access Principles and guidance, refines the naming model and aligns it with current Entra ID capabilities.

Microsoft recommends establishing a meaningful naming standard, but their examples don’t scale well in complex environments: microsoft ca naming example

This framework replaces vague policy names like ‘guest access’ with structured documentation. For example, ‘CA300-Guests-Base-AllApps-AnyContext-MFA’ clearly indicates that the policy (CA300) applies to guest users and enforces their baseline (default) level of protection, requiring multi-factor authentication for all applications in any context.

Key Concepts

This framework uses two core elements:

  • Structured naming — policies are organized by:
    • Persona: who the policy applies to
    • Purpose: what the policy enforces
  • Layered targeting — policies apply at multiple levels.
    • Baseline policies define minimum controls for each persona.
    • Additional policies extend the baseline to cover specific risks or scenarios.

This structure improves manageability and scalability through predictable policy categories. It also supports Zero Trust by ensuring each access request is explicitly verified.


Design Principles

1. Layered Defense

Policies apply at multiple levels: global policies for universal requirements like MFA, persona-based baselines that add role-appropriate controls such as phishing-resistant authentication for admins, and purpose-driven policies that address specific risks, such as enforcing additional controls for sensitive applications.

layered defence illustration


Example: A developer accessing Azure DevOps inherits:

  • the global MFA baseline
  • internal user controls
  • application-specific controls

Benefit: Layered policies allow new applications and users to automatically inherit protections, while every access request is explicitly verified with requirements that scale based on risk.

2. Predictable Naming

Policy names should act as compressed documentation. A structured format makes intent clear at a glance.

CA Components

Example: “CA200-Internals-Base-O365-Any-MFA+Compliant” tells you:

  • Who: Internal users
  • What: Baseline protection
  • Where: Office 365
  • When: Any access context
  • How: Requires MFA and device compliance

Benefit: Predictable naming improves scalability through structured, consistent policies, while also making management and troubleshooting more efficient.


Components

The framework organizes policies using six components that define who they target, what they enforce, and how they are scoped.

They are meant as a starting point, adapt them to fit your environment by adding personas, simplifying categories, or adjusting application scopes. The key is consistent application across your policy set.

ComponentDescriptionExamples
IdentifierUnique policy ID, grouped by personaCA001, CA100, CA200
PersonaIdentity category which the policy applies toGlobal, Admins, Internals, Guests
PurposeSecurity objective, what the policy protectsBase, Identity, AttackSurface, Data
ScopeResource that the policy applies toAllApps, O365, PrivilegedAccess
ContextAccess method (how the access is being made)AnyContext, Browser, Mobile, LegacyAuth
ControlAccess Requirement or Enforcement actionMFA, Compliant, Block
NotesDescription of the policy intent (optional)“Require passkey for internal users”

Example Policies:

  • CA001-Global-Base-AllApps-AnyContext-MFA
    • Require MFA for all users across all applications
  • CA201-Internals-App-O365-AnyContext-Compliant
    • Require compliant device for internal users accessing Office 365
  • CA404-Workloads-Identity-Terraform-OutsideTrustedZone-Block - only allow connections from hcp
    • Block terraform workloads outside allowed named location (with a comment in the notes section)

1. Identifier

A structured numbering scheme enables logical grouping and easy reference. Instead of saying “that guest MFA policy for SharePoint,” an admin can simply refer to “CA305.”

  • CA001–099: Global policies (apply to all users)
  • CA100–199: Admin-specific policies
  • CA200–299: Internal users
  • CA300–399: Guests or external users
  • CA400–499: Workload identities

2. Persona

Define personas by targeting well-defined user groups, not individuals, in line with best practices. You can define additional personas to reflect specific roles or risk profiles in your environment, such as Developers, ExternalAdmins, or Vendors.

To protect these groups, consider using role-assignable groups and/or placing them in restricted-management administrative units to prevent unauthorized modification.

PersonaDescriptionUse Case
GlobalAll users in the organizationBaseline security requirements that apply universally
AdminsPrivileged users with elevated accessStricter controls for high-risk accounts
InternalsEmployees and trusted contractorsStandard enterprise protections
GuestsExternal users and partnersLimited access with additional scrutiny
WorkloadsWorkloads and service accountsApp-specific authentication requirements

3. Purpose

Specifies the intended security outcome of the policy. This categorization helps organize policies by distinct security objectives.

PurposeDescriptionExamples
BaseCore protection for each persona groupMFA requirements, device compliance
IdentityAdvanced identity protectionRisk-based access, privileged account protection
AttackSurfaceReduce potential attack vectorsBlock legacy protocols, geographic restrictions
AppApplication-specific controlsSensitive app protections, API access rules
DataInformation protection controlsDLP integration, classification-based access
ComplianceRegulatory requirementsTerms of use, audit logging

4. Scope

Specifies which resources the policy applies to. Grouping related resources helps reduce the number of policies while maintaining comprehensive coverage.

  • AllApps: Universal application coverage
  • O365: Microsoft 365 suite
  • PrivilegedAccess: Administrative portals and tools
  • SensitiveApps: High-value business applications
  • SSPR: Self-service password reset
  • SecurityInfo: Security information registration

5. Context

Defines the conditions under which the policy is triggered, based on how and from where the access attempt is made. This could include the client app type, device state, network location, or other contextual factors.

Examples:

  • AnyContext: All access methods
  • UnmanagedDevice: Non-corporate devices
  • Browser: Web-based access
  • Mobile: Mobile device access
  • LegacyAuth: Legacy authentication protocols
  • OutsidePerimeter: Outside ‘perimeter’ named location
  • Mobile+UnmanagedDevice: Mobile, not managed by intune.
  • Desktop+Browser: Web-browser on desktop devices.

6. Control

Defines the requirements that must be met before access is granted, such as a combination of grant or session controls.

Common controls:

  • MFA: Multi-factor authentication required
  • Compliant: Device must be compliant with policy
  • Block: Access is denied
  • AppProtection: Intune app protection policy
  • MFA+Compliant: Both MFA and device compliance required
  • MFAorCompliant: MFA or compliant device required
  • Hybrid: Require hybrid Azure AD joined device
  • AuthStrength: Require a specific authentication strength (e.g., phishing-resistant MFA)

Implementation Strategy

If you’re starting fresh, review the conditional access best practices and policy recommendations in particular. For organizations with existing deployments, this framework can help rationalize and modernize your current policy set.

Existing Tenants

  1. Audit existing policies by mapping who they target and what controls they apply.
  2. Map policies to the framework through categorization, revealing duplicates and inconsistencies.
  3. Refactor by applying the naming conventions and removing overlaps.

What’s Next?

This framework provides structure and consistency, but effective Conditional Access implementation requires ongoing refinement and disciplined adoption.

To maximize value:

  • Adopt deliberately. The framework only delivers results when consistently applied across your policy set.
  • Continuously evolve. Threats, users, and business applications change. So should your policies.
  • Move beyond the baseline. Once core protections are in place, strengthen your posture with:
    • Phishing-resistant MFA
    • Risk-based access controls
    • Device authentication with Intune or hybrid joined devices

Identity, and by extension, Conditional Access, is just one pillar of the broader Zero Trust architecture. Achieving end-to-end security requires balanced attention to all Zero Trust pillars, as each reinforces the others to build a resilient security posture.

Further reading:

This post is licensed under CC BY 4.0 by the author.