Entra ID Policies
Manage Microsoft Entra ID tenant policies — conditional access, authentication
methods, security defaults, cross-tenant access, app management, and more.
Prerequisites
| Permission |
Description |
Policy.Read.All |
Read most tenant policies (CA, auth methods, authorization, etc.) |
Policy.ReadWrite.ConditionalAccess |
Create / update Conditional Access policies |
Policy.Read.PermissionGrant |
Read permission grant policies |
Policy.Read.ApplicationConfiguration |
Read app management policies |
Policy.Read.AuthenticationMethod |
Read authentication method / strength policies |
How policies work
Policies are tenant-wide or scoped rules that control how users, apps, and
devices interact with the directory:
graph TD
A[Tenant policies] --> B[Conditional Access]
A --> C[Authentication methods]
A --> D[Security defaults]
A --> E[Cross-tenant access]
A --> F[App management]
A --> G[Permission grants]
B --> H[enabled / disabled / report-only]
| Policy type |
Controls |
States |
| Conditional Access |
When access is allowed (users/apps/conditions) |
enabled, disabled, reportOnly |
| Authentication methods |
Which MFA / passwordless methods users can use |
— |
| Authentication strength |
Phishing-resistant MFA levels (e.g. FIDO2) |
— |
| Security defaults |
Baseline security for new tenants |
isEnabled |
| Cross-tenant access |
Inbound/outbound access to external tenants |
— |
| App management |
App secret / certificate restrictions |
— |
| Permission grants |
Admin/user consent posture |
— |
Examples
Quick start
from office365.graph_client import GraphClient
client = GraphClient(tenant="contoso.onmicrosoft.com").with_client_secret(
"client_id", "client_secret"
)
# List Conditional Access policies
policies = client.policies.conditional_access_policies.get().execute_query()
for p in policies:
props = p.properties
print(f" {props.get('displayName')} [{props.get('state')}]")
# Security defaults
defaults = client.policies.identity_security_defaults_enforcement_policy.get().execute_query()
print(f"Security defaults enabled: {defaults.is_enabled}")
Official docs