> For the complete documentation index, see [llms.txt](https://docs.forestall.io/forestall/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.forestall.io/forestall/unified-identities/azure-identities/entra-id/conditional-access-policies.md).

# Conditional Access Policies

The `Conditional Access Policies` page provides a list of enumerated conditional access policies in entire Azure. The list contains the `Display Name`, `State`, and `Created Date Time`.

<figure><img src="https://3408039743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FObpV44hoVkNmo5bFuVVL%2Fuploads%2Fgit-blob-caf076f7928fa3102df755977b6f8c6c2d23e983%2Fcap-1.png?alt=media" alt=""><figcaption><p>Conditional Access Policies</p></figcaption></figure>

{% hint style="info" %}
The health of the policy set as a whole - which baseline protections are missing, which policies protect nobody, which policies duplicate each other and which users are left without MFA - is reported by [CAP Audit](/forestall/cap-audit.md).
{% endhint %}

## Conditional Access Policies Details

The details page reads the policy back in plain language rather than as a list of raw settings, so it can be checked without knowing how each Entra ID field is spelled.

<figure><img src="https://3408039743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FObpV44hoVkNmo5bFuVVL%2Fuploads%2Fgit-blob-b79a7c0b2cfc066f78626fd859b4318e8ff0a8d4%2Fazure-identities-conditional-access-policies-detail.png?alt=media" alt=""><figcaption><p>Conditional Access Policy Details</p></figcaption></figure>

The page has five tabs; `Details`, `Applies to`, `Protects`, `Excludes` and `Duplicates`. Each of the last four carries the number of objects it holds in its label.

When a policy has no effect, a warning banner sits at the top of the `Details` tab stating why in plain language, for example that the policy is in report-only mode and that every group or role it targets is also excluded.

The **Show every setting, including the ones this policy does not use** toggle switches between the settings the policy actually sets, which is the default, and the full set of conditional access settings including the ones left at their defaults.

## Details

The `Details` tab groups the policy into sections that follow the order in which Entra ID evaluates it.

**Policy:** The display name, the `State` badge - `Enabled`, `Disabled` or `Report-only` - and the date the policy was created.

**Who it applies to:** The users, groups and roles the policy targets, and the ones it excludes, with a count for each.

**What it protects:** The cloud apps or resources the policy covers, for example whether it applies to all cloud apps.

**When it applies:** The conditions that narrow the policy, such as client apps, locations, platforms, or sign-in and user risk levels. A policy with no conditions applies to every sign-in by the people it targets.

**What it demands (grant controls):** The controls access is granted on, for example multifactor authentication, a compliant device, or a block.

**Session:** The session controls the policy applies, such as a sign-in frequency or a persistent browser session, when it sets any.

**Summary:** The four questions most often asked of a policy, answered yes or no - `Blocks access`, `Requires MFA`, `Requires a managed device` and `Currently enforced`.

### Policy Description

Below the settings, the **Policy Description** panel restates the same policy as prose, one paragraph per question:

**What this policy is for**, **Who it applies to**, **Who is left out**, **What it protects**, **When it applies**, **What it demands**, **What it does to the session**, and **What this means for the business**.

The counts in the prose are resolved against the scan, so a group is described by how many members it currently has rather than by name alone. A report-only policy is described as affecting nobody yet, with Entra ID recording what would have happened.

## Applies to

`Applies to` lists the objects the policy targets, with `Guid` and `Type` columns to identify them. A policy whose assignment resolves to nothing shows an empty list, which is what makes it ineffective.

<figure><img src="https://3408039743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FObpV44hoVkNmo5bFuVVL%2Fuploads%2Fgit-blob-d9e4dafd034b6c921b1ef0f6c19fc86a456f94e0%2Fazure-identities-conditional-access-policies-image-2.png?alt=media" alt=""><figcaption><p>Applies to</p></figcaption></figure>

## Protects

`Protects` lists the users the policy currently protects, meaning the objects that are in scope and are not excluded.

## Excludes

`Excludes` lists the objects the policy excludes, with `Guid` and `Type` columns to identify them.

<figure><img src="https://3408039743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FObpV44hoVkNmo5bFuVVL%2Fuploads%2Fgit-blob-54d914966a8b1a44ae51c394ae2a2e458ae9fafd%2Fazure-identities-conditional-access-policies-image-3.png?alt=media" alt=""><figcaption><p>Excludes</p></figcaption></figure>

## Duplicates

`Duplicates` lists the other policies that are identical to this one. Duplicates make the policy set harder to reason about, because a change has to be made in more than one place to take effect.
