← All articles

Conditional Access at Scale: Consolidating Policy Sprawl into a Framework

18 May 2026· 6 min read· Conditional Access· Entra ID· Governance
Conditional Access at Scale: Consolidating Policy Sprawl into a Framework
Figure - the framework: personas by control sets, every policy named, rolled out in rings.Download diagram (SVG)

At one engagement I inherited more than forty Conditional Access policies, accreted over years, several disabled, two contradictory, and none documented. We consolidated them into a compact, governance-aligned framework. The method is repeatable and it is mostly not technical.

Policy sprawl is a governance failure

Sprawl happens because policies are created per incident, per project, or per auditor comment, with no naming convention and no design authority. Each policy is individually defensible; the set is unreviewable. And an unreviewable policy set fails in the dangerous direction - gaps hide in the intersections.

Design the framework before touching a policy

  • Define personas - a small, finite set: standard users, privileged users, external guests, service and workload identities, break-glass. Every human and non-human principal maps to exactly one.
  • Define access contexts - managed compliant device, unmanaged device, high-risk sign-in, legacy protocol, trusted location if you still need it.
  • Write the decision matrix - personas by contexts, with the required control in each cell: block, MFA, phishing-resistant MFA, session limits. This one-page matrix is the artefact executives can review and auditors can test against.
  • Adopt a naming convention - every policy name encodes persona, context, and control. If a policy cannot be named within the convention, it does not belong in the framework.

Migrate with report-only as your safety net

Build the new policy set in report-only mode alongside the legacy set, and let the sign-in logs prove equivalence or surface deltas. Move personas across in waves, never disabling a legacy policy until its replacement has demonstrably matched or exceeded its coverage. Keep break-glass accounts excluded, tested, and monitored - the framework should assume its own failure mode.

Keep it small forever

The steady state should be a policy count you can hold in your head. New requirements are met by amending the matrix through design governance, not by minting policy number forty-one. When an exception is genuinely needed, it gets an expiry date and an owner - exceptions that cannot expire are requirements you have not yet designed for.

The payoff is real: administration effort drops, audit responses become table lookups, and most importantly you can finally answer the question every CISO eventually asks - “what exactly happens when a contractor signs in from an unmanaged laptop?” - in one sentence.

Have an identity challenge worth solving?

I take a small number of freelance and contract engagements each year.

Start a conversation