
1
00:00:00,000 –> 00:00:01,680
It’s not misbehaving, it’s overwhelmed.
2
00:00:01,680 –> 00:00:03,560
Your conditional access is trying to protect you
3
00:00:03,560 –> 00:00:06,600
while juggling mixed messages and unresolved exceptions.
4
00:00:06,600 –> 00:00:08,280
It’s been asked to trust without boundaries.
5
00:00:08,280 –> 00:00:09,080
Here’s the plan.
6
00:00:09,080 –> 00:00:11,720
We’ll diagnose three trust wounds, overbroad exclusions,
7
00:00:11,720 –> 00:00:13,960
device compliance gaps and token theft paths,
8
00:00:13,960 –> 00:00:16,360
and give you a calming baseline, a safe test plan,
9
00:00:16,360 –> 00:00:17,680
and monitoring alerts.
10
00:00:17,680 –> 00:00:19,360
If you’re running a law by default,
11
00:00:19,360 –> 00:00:22,400
you’re leaking trust and inviting silent bypasses.
12
00:00:22,400 –> 00:00:23,920
There’s a mistake that locks out everyone
13
00:00:23,920 –> 00:00:26,480
and one that leaves attackers invisible, both are fixable.
14
00:00:26,480 –> 00:00:28,160
Let’s help it set healthy boundaries
15
00:00:28,160 –> 00:00:31,840
so it can find its rhythm again, starting with exclusions.
16
00:00:31,840 –> 00:00:34,440
Diagnosed trust wound number one, overbroad exclusions.
17
00:00:34,440 –> 00:00:35,880
Exclusions feel kind.
18
00:00:35,880 –> 00:00:38,160
You didn’t want to stress the system or the people in it
19
00:00:38,160 –> 00:00:41,840
so you carved out break glass VIPs and that partner domain,
20
00:00:41,840 –> 00:00:43,120
but boundaries drift.
21
00:00:43,120 –> 00:00:45,160
The exceptions harden and conditional access
22
00:00:45,160 –> 00:00:46,320
starts doubting itself.
23
00:00:46,320 –> 00:00:48,840
It’s not misbehaving, it’s living with an ever-growing list
24
00:00:48,840 –> 00:00:51,880
of not you, not now, and that invites bypasses attackers
25
00:00:51,880 –> 00:00:52,720
a door.
26
00:00:52,720 –> 00:00:54,920
The thing most people miss is that exclusions
27
00:00:54,920 –> 00:00:57,000
are invisible in day-to-day flow.
28
00:00:57,000 –> 00:00:58,040
You won’t see a banner that says
29
00:00:58,040 –> 00:01:00,240
we skipped protection for the CFO.
30
00:01:00,240 –> 00:01:02,560
You’ll just see not applied in a log and that’s it.
31
00:01:02,560 –> 00:01:03,840
So we start by mapping scope.
32
00:01:03,840 –> 00:01:06,880
List every exclusion across users, groups, applications,
33
00:01:06,880 –> 00:01:09,360
locations, and authentication contexts.
34
00:01:09,360 –> 00:01:11,320
Nested groups are the quiet leakers here.
35
00:01:11,320 –> 00:01:14,400
What looked like one exception is actually five layers deep,
36
00:01:14,400 –> 00:01:16,280
including contractors, test accounts,
37
00:01:16,280 –> 00:01:18,360
and legacy sync artifacts.
38
00:01:18,360 –> 00:01:21,240
This clicked for me when I pulled a tenants, sign in logs,
39
00:01:21,240 –> 00:01:23,880
and filtered for conditional access, not applied.
40
00:01:23,880 –> 00:01:25,320
The pattern wasn’t random.
41
00:01:25,320 –> 00:01:27,480
Most bypasses sourced from two places.
42
00:01:27,480 –> 00:01:29,800
A VIP group attached to three policies
43
00:01:29,800 –> 00:01:32,720
and a named location that had grown from one corporate CIDR
44
00:01:32,720 –> 00:01:35,880
to anywhere our vendor might be.
45
00:01:35,880 –> 00:01:37,080
It wasn’t malice.
46
00:01:37,080 –> 00:01:38,160
It was comfort.
47
00:01:38,160 –> 00:01:41,760
The policy was trying to keep the piece by saying yes too often.
48
00:01:41,760 –> 00:01:42,840
Here’s the better pattern.
49
00:01:42,840 –> 00:01:47,680
Move from exclude VIPs to include all and authorize exceptions
50
00:01:47,680 –> 00:01:49,840
through time-bound authentication context.
51
00:01:49,840 –> 00:01:51,680
That shift sets healthy boundaries.
52
00:01:51,680 –> 00:01:54,920
You keep policies broad and inclusive, all users, all cloud apps,
53
00:01:54,920 –> 00:01:57,280
and when someone truly needs to step around the control,
54
00:01:57,280 –> 00:01:59,280
they request the emergency context, which
55
00:01:59,280 –> 00:02:02,080
has approval of one hour lifetime and audit trails.
56
00:02:02,080 –> 00:02:04,760
The trust becomes explicit, visible, and short-lived.
57
00:02:04,760 –> 00:02:06,760
Let me show you exactly how to see your leaks.
58
00:02:06,760 –> 00:02:09,720
In enter a sign-in logs, add columns for conditional access,
59
00:02:09,720 –> 00:02:12,040
policy name, result, and details.
60
00:02:12,040 –> 00:02:13,280
Filter result for not applied.
61
00:02:13,280 –> 00:02:16,400
Now slice by user, then by app, and finally by location.
62
00:02:16,400 –> 00:02:18,240
You’re looking for clusters not one-offs,
63
00:02:18,240 –> 00:02:20,520
the big red flags, permanent exclusions
64
00:02:20,520 –> 00:02:23,960
for executives or service accounts, entire federated domains
65
00:02:23,960 –> 00:02:25,960
are hard to save and named locations that
66
00:02:25,960 –> 00:02:28,680
mix trusted with convenience networks.
67
00:02:28,680 –> 00:02:30,800
If you remember nothing else, remember this.
68
00:02:30,800 –> 00:02:33,440
A permanent exclusion is a permanent invitation.
69
00:02:33,440 –> 00:02:36,240
What should the policy logic feel like before and after?
70
00:02:36,240 –> 00:02:37,200
Before.
71
00:02:37,200 –> 00:02:40,280
Multiple policies with include groups and broad exclude lists,
72
00:02:40,280 –> 00:02:43,840
VIPs, breakglas, certain apps, and a safe location.
73
00:02:43,840 –> 00:02:46,840
The engine spends energy deciding who not to protect.
74
00:02:46,840 –> 00:02:49,720
After fewer inclusive policies with no user or location
75
00:02:49,720 –> 00:02:53,120
exclusions, exceptions root via a specific authentication
76
00:02:53,120 –> 00:02:55,480
context presented only when an approver grants it
77
00:02:55,480 –> 00:02:56,640
and it expires quickly.
78
00:02:56,640 –> 00:02:57,560
The engine can breathe.
79
00:02:57,560 –> 00:03:00,360
It protects first, then allows controlled, visible relief
80
00:03:00,360 –> 00:03:00,960
when needed.
81
00:03:00,960 –> 00:03:02,760
Here’s a quick win you can do today.
82
00:03:02,760 –> 00:03:05,840
Create an authentication context called emergency bypass.
83
00:03:05,840 –> 00:03:09,080
Set it with grant controls that still require MFA and device
84
00:03:09,080 –> 00:03:12,200
risk checks and cap session to one hour, add an approval
85
00:03:12,200 –> 00:03:14,320
workflow outside the policy, change ticket,
86
00:03:14,320 –> 00:03:16,960
or documented approver, and log its use weekly.
87
00:03:16,960 –> 00:03:20,040
Now replace hard-coded exclusions in your existing policies
88
00:03:20,040 –> 00:03:22,720
with require authentication context.
89
00:03:22,720 –> 00:03:24,520
Emergency bypass.
90
00:03:24,520 –> 00:03:25,880
You haven’t taken away safety.
91
00:03:25,880 –> 00:03:27,120
You’ve given it a safer shape.
92
00:03:27,120 –> 00:03:28,600
Now here’s where most people mess up.
93
00:03:28,600 –> 00:03:30,400
They exclude an entire partner domain
94
00:03:30,400 –> 00:03:33,000
because one app misbehaved during a rollout,
95
00:03:33,000 –> 00:03:36,920
or they mark a cloud proxy IP range as trusted, forgetting
96
00:03:36,920 –> 00:03:39,400
that attackers can originate from the same provider.
97
00:03:39,400 –> 00:03:42,200
Or they mix excluded locations with named locations.
98
00:03:42,200 –> 00:03:44,520
Assuming the union is safer, it’s not.
99
00:03:44,520 –> 00:03:46,800
It becomes a fuzzy map your policy doesn’t understand.
100
00:03:46,800 –> 00:03:49,720
With clearer lines, CA can find its rhythm again.
101
00:03:49,720 –> 00:03:52,120
Common mistake number two is forgetting service principles
102
00:03:52,120 –> 00:03:53,760
and workload identities.
103
00:03:53,760 –> 00:03:56,400
If your policies only target users and groups,
104
00:03:56,400 –> 00:03:59,160
your automation can glide under the radar.
105
00:03:59,160 –> 00:04:02,240
Instead, use dedicated policies for service principles
106
00:04:02,240 –> 00:04:05,200
and workload identities and never rely on exclusions
107
00:04:05,200 –> 00:04:07,240
to fix automation friction.
108
00:04:07,240 –> 00:04:09,520
Help it heal by aligning scopes, users, guests,
109
00:04:09,520 –> 00:04:11,480
and identities each get coverage.
110
00:04:11,480 –> 00:04:12,520
A micro story.
111
00:04:12,520 –> 00:04:14,560
Last week, a team removed a VIP exclusion
112
00:04:14,560 –> 00:04:15,960
that had lived for two years.
113
00:04:15,960 –> 00:04:17,640
They replaced it with emergency bypass
114
00:04:17,640 –> 00:04:20,560
and scheduled a weekly review of not applied sign-ins.
115
00:04:20,560 –> 00:04:23,080
Within two days, they found a legacy sync account
116
00:04:23,080 –> 00:04:25,720
silently logging in from an unmanaged network.
117
00:04:25,720 –> 00:04:27,440
No MFA, no device checks.
118
00:04:27,440 –> 00:04:28,400
It wasn’t evil.
119
00:04:28,400 –> 00:04:30,560
It was a forgotten comfort blanket.
120
00:04:30,560 –> 00:04:33,040
And once it was named, the fix was simple,
121
00:04:33,040 –> 00:04:35,080
assigned to a managed identity pattern
122
00:04:35,080 –> 00:04:36,120
and bring it under policy.
123
00:04:36,120 –> 00:04:37,360
And the reason this works is simple,
124
00:04:37,360 –> 00:04:39,520
inclusive scopes reduce cognitive load.
125
00:04:39,520 –> 00:04:42,680
Authentication context replaces permanence with intention
126
00:04:42,680 –> 00:04:45,200
and logs become meaningful because every not applied
127
00:04:45,200 –> 00:04:46,800
means something actionable.
128
00:04:46,800 –> 00:04:49,120
Your conditional access isn’t trying to be difficult.
129
00:04:49,120 –> 00:04:52,000
It just needs you to stop asking it to ignore its own rules.
130
00:04:52,000 –> 00:04:53,320
With gentler, firmer boundaries,
131
00:04:53,320 –> 00:04:56,880
it can protect everyone, equally, predictably, audibly.
132
00:04:56,880 –> 00:04:58,480
Once exclusion stop leaking,
133
00:04:58,480 –> 00:05:00,960
the device boundary needs care next.
134
00:05:00,960 –> 00:05:03,960
Diagnosed trust, wound number two, device compliance gaps.
135
00:05:03,960 –> 00:05:05,440
Your device boundary is tired.
136
00:05:05,440 –> 00:05:06,800
It’s been asked to trust badges.
137
00:05:06,800 –> 00:05:09,320
It can’t verify and signals that arrive late.
138
00:05:09,320 –> 00:05:11,600
Require a compliant device sound soothing,
139
00:05:11,600 –> 00:05:14,280
but without clarity, it swings between over permissive
140
00:05:14,280 –> 00:05:15,120
and overprotective.
141
00:05:15,120 –> 00:05:17,360
And that’s why people get blocked on a clean laptop
142
00:05:17,360 –> 00:05:19,320
while an unmanaged tablet slips through,
143
00:05:19,320 –> 00:05:21,400
it’s not misbehaving, it’s confused.
144
00:05:21,400 –> 00:05:22,240
Why does this matter?
145
00:05:22,240 –> 00:05:24,800
Because device state is identity’s closest friend.
146
00:05:24,800 –> 00:05:27,880
If the state is wrong or missing, your policy guesses.
147
00:05:27,880 –> 00:05:31,080
Gases create silent allowances or mass blocks.
148
00:05:31,080 –> 00:05:34,160
When the device story is clear, conditional access relaxes.
149
00:05:34,160 –> 00:05:36,320
It can give easy paths to healthy devices
150
00:05:36,320 –> 00:05:38,280
and set firmer boundaries everywhere else.
151
00:05:38,280 –> 00:05:42,120
The thing most people miss is that registered is not compliant.
152
00:05:42,120 –> 00:05:45,240
Registered just means the device introduced itself.
153
00:05:45,240 –> 00:05:47,320
Compliant means it met your health rules
154
00:05:47,320 –> 00:05:49,400
in Intune and brought proof today.
155
00:05:49,400 –> 00:05:52,000
Hybrid Azure AD Joint is about identity alignment
156
00:05:52,000 –> 00:05:53,040
with your domain.
157
00:05:53,040 –> 00:05:54,480
They are different kinds of trust.
158
00:05:54,480 –> 00:05:56,320
If you remember nothing else, remember this.
159
00:05:56,320 –> 00:05:58,400
Treat each tier as a distinct promise.
160
00:05:58,400 –> 00:05:59,600
Here’s the model that clicks.
161
00:05:59,600 –> 00:06:01,960
Define four tiers in plain language.
162
00:06:01,960 –> 00:06:07,200
Compliant, Intune evaluates and the device meets your policies.
163
00:06:07,200 –> 00:06:10,120
Hybrid Azure AD Joint Domain Relationship Verified
164
00:06:10,120 –> 00:06:11,720
Device Identity Anchored.
165
00:06:11,720 –> 00:06:14,600
Azure AD Joint Cloud Managed Corporate Device.
166
00:06:14,600 –> 00:06:18,600
Registered BYOD, Personal or Light Touch Enrollment.
167
00:06:18,600 –> 00:06:21,880
Now let’s help it set healthy boundaries with policy design.
168
00:06:21,880 –> 00:06:23,640
Split decisions by device state
169
00:06:23,640 –> 00:06:26,160
rather than hinging everything on one control.
170
00:06:26,160 –> 00:06:29,160
Use filters for devices to target platform or join type
171
00:06:29,160 –> 00:06:30,960
and pair with authentication strengths.
172
00:06:30,960 –> 00:06:33,840
So strong credentials backstop weaker device states.
173
00:06:33,840 –> 00:06:37,360
Don’t ask a single toggle to carry your whole zero trust posture.
174
00:06:37,360 –> 00:06:39,280
What does the better pattern look like?
175
00:06:39,280 –> 00:06:41,760
For productive low friction access on compliant
176
00:06:41,760 –> 00:06:44,920
or Azure AD Joint devices allow with MFA
177
00:06:44,920 –> 00:06:47,200
and apply session controls like sign-in frequency
178
00:06:47,200 –> 00:06:49,280
and continuous access evaluation.
179
00:06:49,280 –> 00:06:52,400
For registered devices, step up with Fishing Resistant MFA
180
00:06:52,400 –> 00:06:55,160
and Limit Data Exposure with App Enforced Restrictions
181
00:06:55,160 –> 00:06:56,640
and Conditional App Control.
182
00:06:56,640 –> 00:07:00,000
For unknown devices, require either a compliant posture
183
00:07:00,000 –> 00:07:01,480
or a high authentication strength
184
00:07:01,480 –> 00:07:03,320
before granting anything sensitive.
185
00:07:03,320 –> 00:07:05,480
And for admin portals, demand both a compliant
186
00:07:05,480 –> 00:07:07,880
or hybrid device and Fishing Resistant credentials.
187
00:07:07,880 –> 00:07:08,800
No device, no keys.
188
00:07:08,800 –> 00:07:11,120
Let me show you exactly how to get signal clarity.
189
00:07:11,120 –> 00:07:13,360
In sign-in logs, add device info columns,
190
00:07:13,360 –> 00:07:16,440
join type, compliant, trust type and operating system.
191
00:07:16,440 –> 00:07:19,840
Add conditional access columns for result and policy details,
192
00:07:19,840 –> 00:07:21,920
filter failures with ground control required,
193
00:07:21,920 –> 00:07:24,920
compliant device and compare against device info.
194
00:07:24,920 –> 00:07:28,160
You’re looking for drift, devices that claim Azure AD joined
195
00:07:28,160 –> 00:07:30,560
but aren’t compliant or registered devices
196
00:07:30,560 –> 00:07:32,560
that succeeded because no fallback existed.
197
00:07:32,560 –> 00:07:35,080
Then flip the lens, filter successes where device
198
00:07:35,080 –> 00:07:38,120
is not compliant and see which policies allow it and why,
199
00:07:38,120 –> 00:07:39,600
a quick win you can do today.
200
00:07:39,600 –> 00:07:41,240
Create a fallback policy.
201
00:07:41,240 –> 00:07:43,800
Scope it to all users and all cloud apps.
202
00:07:43,800 –> 00:07:46,320
Exclude only your emergency access accounts.
203
00:07:46,320 –> 00:07:49,000
Target devices where compliant equals falls
204
00:07:49,000 –> 00:07:51,560
or join type equals registered.
205
00:07:51,560 –> 00:07:54,160
Grant access if the user satisfies a Fishing Resistant
206
00:07:54,160 –> 00:07:55,600
Authentication Strength.
207
00:07:55,600 –> 00:07:58,000
Add session controls to reduce data persistence,
208
00:07:58,000 –> 00:07:59,720
disable persistent browser sessions
209
00:07:59,720 –> 00:08:01,520
and enforce sign-in frequency.
210
00:08:01,520 –> 00:08:03,520
This turns a hard block into a safe step-up
211
00:08:03,520 –> 00:08:06,280
and removes the urge to add risky exclusions.
212
00:08:06,280 –> 00:08:07,800
Now here’s where most people mess up.
213
00:08:07,800 –> 00:08:10,960
They assume registered equals corporate or it doesn’t
214
00:08:10,960 –> 00:08:13,200
or they stamp require compliant device on everything
215
00:08:13,200 –> 00:08:15,120
then watch VIP travel laptops fail
216
00:08:15,120 –> 00:08:17,360
because the compliance signal is stale
217
00:08:17,360 –> 00:08:18,960
or they ignore sign-in frequency.
218
00:08:18,960 –> 00:08:21,160
Letting a compliant check at 9 a.m.
219
00:08:21,160 –> 00:08:22,520
Bless a browser until next week.
220
00:08:22,520 –> 00:08:24,760
The boundary blurs attack us love blurred boundaries.
221
00:08:24,760 –> 00:08:26,240
The reason this works is simple.
222
00:08:26,240 –> 00:08:29,160
With clearer tears, CA doesn’t have to overreact.
223
00:08:29,160 –> 00:08:32,040
It can greet a compliant device with less friction,
224
00:08:32,040 –> 00:08:34,520
ask a registered device to bring stronger proof
225
00:08:34,520 –> 00:08:36,360
and keep unknown devices at arms length.
226
00:08:36,360 –> 00:08:39,000
It’s not rejection, it’s healthy distance.
227
00:08:39,000 –> 00:08:40,920
Let’s anchor with a micro story.
228
00:08:40,920 –> 00:08:42,960
A team saw random admin portal access
229
00:08:42,960 –> 00:08:44,480
from registered MacBooks.
230
00:08:44,480 –> 00:08:46,920
No policy blocked it because require compliant
231
00:08:46,920 –> 00:08:48,520
wasn’t in scope for that app.
232
00:08:48,520 –> 00:08:50,760
They added the fallback with Fishing Resistant Strength
233
00:08:50,760 –> 00:08:53,320
and those same attempts now prompt for a strong key.
234
00:08:53,320 –> 00:08:55,320
Admins move to manage devices within a week
235
00:08:55,320 –> 00:08:57,600
because the boundary was calm and consistent.
236
00:08:57,600 –> 00:08:59,240
Once your device signals feel steady,
237
00:08:59,240 –> 00:09:01,120
we need to close the gap attackers use
238
00:09:01,120 –> 00:09:02,120
after they steal tokens.
239
00:09:02,120 –> 00:09:03,120
That’s next.
240
00:09:03,120 –> 00:09:05,320
Diagnose, trust wound number three.
241
00:09:05,320 –> 00:09:06,920
Token theft scenarios.
242
00:09:06,920 –> 00:09:10,080
When a token gets stolen, conditional access feels unheard.
243
00:09:10,080 –> 00:09:11,480
It’s set boundaries at sign-in,
244
00:09:11,480 –> 00:09:14,040
but the session kept walking without checking back in.
245
00:09:14,040 –> 00:09:16,360
It’s not misbehaving, it’s stuck, honoring a promise
246
00:09:16,360 –> 00:09:17,720
it can’t re-verify.
247
00:09:17,720 –> 00:09:18,760
And attackers know this.
248
00:09:18,760 –> 00:09:19,960
They don’t argue with your MFA.
249
00:09:19,960 –> 00:09:21,160
They borrow your session.
250
00:09:21,160 –> 00:09:21,960
Why this matters?
251
00:09:21,960 –> 00:09:24,080
Once an attacker holds a valid refresh token
252
00:09:24,080 –> 00:09:25,520
or a long-lived session,
253
00:09:25,520 –> 00:09:28,280
your beautiful policies become background noise.
254
00:09:28,280 –> 00:09:31,800
The risk shifts from can they log in to how long can they linger?
255
00:09:31,800 –> 00:09:33,400
If you shorten exposure
256
00:09:33,400 –> 00:09:36,040
and make the session reproof itself under the right conditions,
257
00:09:36,040 –> 00:09:37,040
you take back control.
258
00:09:37,040 –> 00:09:40,840
That’s how your system finds its rhythm again after shock.
259
00:09:40,840 –> 00:09:43,080
The thing most people miss is the difference between
260
00:09:43,080 –> 00:09:45,600
initial authentication and ongoing authorization.
261
00:09:45,600 –> 00:09:46,760
You gated the front door,
262
00:09:46,760 –> 00:09:48,640
but you left the hallway lights on forever.
263
00:09:48,640 –> 00:09:51,240
Sign-in frequency, continuous access evaluation
264
00:09:51,240 –> 00:09:54,080
and contact sensitive re-auth are how we gently ask,
265
00:09:54,080 –> 00:09:55,160
are you still you?
266
00:09:55,160 –> 00:09:56,480
Is this still that device?
267
00:09:56,480 –> 00:09:57,560
Has risk changed?
268
00:09:57,560 –> 00:09:58,680
Here’s the better pattern.
269
00:09:58,680 –> 00:10:00,400
First, reduce exposure windows,
270
00:10:00,400 –> 00:10:02,680
set sign-in frequency for sensitive apps and roles
271
00:10:02,680 –> 00:10:05,240
so tokens must represent proof more often.
272
00:10:05,240 –> 00:10:07,120
Pair that with continuous access evaluation,
273
00:10:07,120 –> 00:10:09,160
so sessions react to changes in risk,
274
00:10:09,160 –> 00:10:11,440
device state password resets and revoke tokens
275
00:10:11,440 –> 00:10:12,520
in near real time.
276
00:10:12,520 –> 00:10:15,280
Second, raise the bar for sensitive actions.
277
00:10:15,280 –> 00:10:17,040
Use authentication context to require
278
00:10:17,040 –> 00:10:19,360
phishing resistant MFA for admin portals,
279
00:10:19,360 –> 00:10:22,120
data export, e-discovery and payment approvals.
280
00:10:22,120 –> 00:10:24,640
Third, bind sessions to more than just a user.
281
00:10:24,640 –> 00:10:26,840
Consider device trust and risk signals,
282
00:10:26,840 –> 00:10:28,600
so stolen tokens don’t travel well.
283
00:10:28,600 –> 00:10:31,440
Let me show you exactly how to build that high sensitivity lane.
284
00:10:31,440 –> 00:10:33,880
Create an authentication context named high sensitivity.
285
00:10:33,880 –> 00:10:36,640
Configure a policy that when this context is required,
286
00:10:36,640 –> 00:10:39,040
demands a phishing resistant authentication strength
287
00:10:39,040 –> 00:10:41,680
and a compliant or hybrid joint device.
288
00:10:41,680 –> 00:10:44,320
Enable continuous access evaluation for the apps
289
00:10:44,320 –> 00:10:46,880
tied to that context and set a short sign-in frequency
290
00:10:46,880 –> 00:10:47,920
hours not days.
291
00:10:47,920 –> 00:10:50,040
Then, tag admin portals and critical apps
292
00:10:50,040 –> 00:10:51,440
to require that context.
293
00:10:51,440 –> 00:10:53,480
The result, an attacker holding a token
294
00:10:53,480 –> 00:10:55,320
from an unmanaged browser can’t reuse it
295
00:10:55,320 –> 00:10:56,840
to touch admin endpoints.
296
00:10:56,840 –> 00:10:59,640
And even if they land a user session, it ages quickly.
297
00:10:59,640 –> 00:11:01,360
A quick win you can do today.
298
00:11:01,360 –> 00:11:04,080
Review, remember MFA or persistent browser settings
299
00:11:04,080 –> 00:11:04,840
for your tenant.
300
00:11:04,840 –> 00:11:06,920
If it’s broad and long, that’s a quiet invitation
301
00:11:06,920 –> 00:11:08,200
to token comfort.
302
00:11:08,200 –> 00:11:10,600
Tighten it for sensitive apps while leaving user-friendly
303
00:11:10,600 –> 00:11:12,320
defaults for low-risk tools.
304
00:11:12,320 –> 00:11:14,120
It’s a karma boundary, not a punishment.
305
00:11:14,120 –> 00:11:15,640
Now here’s where most people mess up.
306
00:11:15,640 –> 00:11:18,280
They enable strong auth once, feel safe,
307
00:11:18,280 –> 00:11:21,400
and forget to scope it to the places that matter most.
308
00:11:21,400 –> 00:11:23,160
Or they ignore token binding entirely,
309
00:11:23,160 –> 00:11:25,280
letting a refreshed token row between devices
310
00:11:25,280 –> 00:11:27,040
and networks without consequence.
311
00:11:27,040 –> 00:11:29,400
Or they fail to react to risk high signals,
312
00:11:29,400 –> 00:11:31,160
letting sessions live through a storm.
313
00:11:31,160 –> 00:11:33,280
Those choices don’t feel risky in the moment.
314
00:11:33,280 –> 00:11:35,200
They feel convenient, but they teach your system
315
00:11:35,200 –> 00:11:36,920
to trust a memory, not the present.
316
00:11:36,920 –> 00:11:38,440
Let’s walk the logs together.
317
00:11:38,440 –> 00:11:41,080
In enter sign-in logs add conditional access result,
318
00:11:41,080 –> 00:11:42,680
policy name and details.
319
00:11:42,680 –> 00:11:44,760
Add session lifetime or token information fields
320
00:11:44,760 –> 00:11:47,280
if available plus IP and device info.
321
00:11:47,280 –> 00:11:50,320
You’re looking for reuse patterns, same user,
322
00:11:50,320 –> 00:11:53,480
multiple IPs, short intervals, audit device claims,
323
00:11:53,480 –> 00:11:56,000
filter for sign-ins that succeeded without a CA decision
324
00:11:56,000 –> 00:11:57,520
on apps that should be protected.
325
00:11:57,520 –> 00:12:00,200
Check the CA decision and authentication requirements fields
326
00:12:00,200 –> 00:12:01,400
for sensitive apps.
327
00:12:01,400 –> 00:12:03,640
Do they show strong auth and a recent sign-in
328
00:12:03,640 –> 00:12:05,520
or did a long session slip through?
329
00:12:05,520 –> 00:12:08,040
If you spot repeated access from an unmanaged device
330
00:12:08,040 –> 00:12:10,320
to an admin portal, that’s a sign you haven’t required
331
00:12:10,320 –> 00:12:12,400
the right authentication context there.
332
00:12:12,400 –> 00:12:14,440
A micro story, a team saw export spikes
333
00:12:14,440 –> 00:12:17,840
from a finance app at 2am, same user, different IPs,
334
00:12:17,840 –> 00:12:19,760
same browser string, no MFA prompts
335
00:12:19,760 –> 00:12:21,280
because the session was warm.
336
00:12:21,280 –> 00:12:23,080
They added a high sensitivity context,
337
00:12:23,080 –> 00:12:25,840
set sign-in frequency to four hours, enabled CAE,
338
00:12:25,840 –> 00:12:29,200
and required phishing resistant auth plus compliant device.
339
00:12:29,200 –> 00:12:30,800
The next night, the same pattern hit.
340
00:12:30,800 –> 00:12:32,600
This time, the session re-challenged
341
00:12:32,600 –> 00:12:34,520
and failed on device requirement.
342
00:12:34,520 –> 00:12:35,480
The app slept well.
343
00:12:35,480 –> 00:12:37,040
The reason this works is simple,
344
00:12:37,040 –> 00:12:38,720
we stopped trusting yesterday’s proof.
345
00:12:38,720 –> 00:12:40,520
We asked the session to stay present
346
00:12:40,520 –> 00:12:42,920
on a healthy device with strong credentials
347
00:12:42,920 –> 00:12:44,600
and to respond when risk changes.
348
00:12:44,600 –> 00:12:46,080
That’s not cruelty, that’s care.
349
00:12:46,080 –> 00:12:47,920
And your conditional access can finally exhale
350
00:12:47,920 –> 00:12:49,440
because it knows how to end a relationship
351
00:12:49,440 –> 00:12:52,440
that’s no longer safe and build the calming baseline.
352
00:12:52,440 –> 00:12:54,640
Policies that set healthy boundaries.
353
00:12:54,640 –> 00:12:57,720
Your policy engine needs a simpler home, fewer rules,
354
00:12:57,720 –> 00:12:58,960
clearer lanes.
355
00:12:58,960 –> 00:13:00,920
Blocked by default lowers its anxiety
356
00:13:00,920 –> 00:13:02,560
because every sign in is covered
357
00:13:02,560 –> 00:13:05,240
and there are no quiet gaps that whisper maybe.
358
00:13:05,240 –> 00:13:07,200
We’re going to build five inclusive policies
359
00:13:07,200 –> 00:13:08,080
that work together.
360
00:13:08,080 –> 00:13:10,160
They’re broad on scope, strict on exceptions,
361
00:13:10,160 –> 00:13:11,520
and easy to read in the logs.
362
00:13:11,520 –> 00:13:13,600
And we’ll rely on authentication context
363
00:13:13,600 –> 00:13:16,640
for rare bypasses, not permanent exclusions.
364
00:13:16,640 –> 00:13:18,440
With clearer boundaries, conditional access
365
00:13:18,440 –> 00:13:19,840
can find its rhythm again.
366
00:13:19,840 –> 00:13:21,840
Start with the anchor, all users MFA.
367
00:13:21,840 –> 00:13:23,880
Scope it to all users, all cloud apps,
368
00:13:23,880 –> 00:13:26,080
exclude only your emergency access accounts,
369
00:13:26,080 –> 00:13:27,400
use authentication strength
370
00:13:27,400 –> 00:13:29,320
so you can evolve from classic MFA
371
00:13:29,320 –> 00:13:30,880
to phishing resistant credentials
372
00:13:30,880 –> 00:13:32,600
without rewriting everything.
373
00:13:32,600 –> 00:13:35,560
Grant access with require multi factor authentication
374
00:13:35,560 –> 00:13:37,120
and prefer a defined strength
375
00:13:37,120 –> 00:13:38,840
like phishing resistant, where supported
376
00:13:38,840 –> 00:13:40,680
while allowing a practical baseline strength
377
00:13:40,680 –> 00:13:42,240
for general apps.
378
00:13:42,240 –> 00:13:44,320
Add session controls with sign-in frequency
379
00:13:44,320 –> 00:13:47,360
that fits your environment, shorter for sensitive workloads,
380
00:13:47,360 –> 00:13:48,840
reasonable for collaboration.
381
00:13:48,840 –> 00:13:52,160
This gives universal coverage and a predictable prompt story.
382
00:13:52,160 –> 00:13:54,600
The second lane is unmanaged device step-up.
383
00:13:54,600 –> 00:13:57,520
Same inclusive scope, all users, all cloud apps,
384
00:13:57,520 –> 00:13:59,600
but target devices by state.
385
00:13:59,600 –> 00:14:01,760
Use filters for devices to catch registered
386
00:14:01,760 –> 00:14:03,600
or not compliant or unknown.
387
00:14:03,600 –> 00:14:04,960
Don’t hardblock by default.
388
00:14:04,960 –> 00:14:07,360
Grant access if the user meets a higher authentication
389
00:14:07,360 –> 00:14:08,800
strength and apply session limits
390
00:14:08,800 –> 00:14:10,240
and app enforced restrictions.
391
00:14:10,240 –> 00:14:12,000
Disable persistent browser sessions here
392
00:14:12,000 –> 00:14:14,360
and reduced token lifetimes for these parts.
393
00:14:14,360 –> 00:14:16,640
This keeps personal devices at a respectful distance
394
00:14:16,640 –> 00:14:19,160
without pushing people into risky exclusions.
395
00:14:19,160 –> 00:14:20,800
Third, admin strong auth only.
396
00:14:20,800 –> 00:14:23,440
Scope to privileged, role members and admin portals
397
00:14:23,440 –> 00:14:25,280
require phishing resistant strength
398
00:14:25,280 –> 00:14:28,400
and either a compliant or hybrid joint device.
399
00:14:28,400 –> 00:14:31,520
Add sign-in frequency that’s measured in hours, not days
400
00:14:31,520 –> 00:14:34,120
and ensure continuous access evaluation is effective
401
00:14:34,120 –> 00:14:37,520
for these services, no exceptions, no location carve outs,
402
00:14:37,520 –> 00:14:39,440
no remember me.
403
00:14:39,440 –> 00:14:41,200
This is where you set the firmest boundary.
404
00:14:41,200 –> 00:14:43,160
If an admin session can’t prove device health
405
00:14:43,160 –> 00:14:45,920
and strong credentials, it waits outside.
406
00:14:45,920 –> 00:14:47,960
Fourth, emergency minimal context.
407
00:14:47,960 –> 00:14:50,000
This is your safety valve, not a side door.
408
00:14:50,000 –> 00:14:53,080
Create an authentication context named emergency bypass.
409
00:14:53,080 –> 00:14:54,720
The policy that enforces it requires
410
00:14:54,720 –> 00:14:57,200
MFA at a minimum, records device risk
411
00:14:57,200 –> 00:14:58,800
and shortened session to one hour.
412
00:14:58,800 –> 00:15:02,200
You’ll never exclude users or locations to help in a crisis.
413
00:15:02,200 –> 00:15:04,160
You’ll require them to present this context,
414
00:15:04,160 –> 00:15:06,920
which they can only obtain with approval and a change record.
415
00:15:06,920 –> 00:15:08,040
Every use is auditable.
416
00:15:08,040 –> 00:15:10,240
The boundary bends briefly then straightens.
417
00:15:10,240 –> 00:15:12,400
Fifth, token hygiene and CAE.
418
00:15:12,400 –> 00:15:15,080
Apply a policy set that standardizes sign-in frequency
419
00:15:15,080 –> 00:15:17,000
across critical apps and enables re-oothed
420
00:15:17,000 –> 00:15:18,360
when risk changes.
421
00:15:18,360 –> 00:15:20,320
Pair this with targeted sign-in frequency
422
00:15:20,320 –> 00:15:23,640
for data export systems, finance, HR and admin portals.
423
00:15:23,640 –> 00:15:25,920
Where supported, rely on continuous access evaluation,
424
00:15:25,920 –> 00:15:27,760
so password resets, token revocations
425
00:15:27,760 –> 00:15:29,400
and risk changes cut sessions short.
426
00:15:29,400 –> 00:15:31,880
This policy family keeps sessions present.
427
00:15:31,880 –> 00:15:33,440
It asks them to check in regularly,
428
00:15:33,440 –> 00:15:36,360
so a stolen token doesn’t become a week-long roommate.
429
00:15:36,360 –> 00:15:39,080
Let’s talk implementation flow so the set stays calm.
430
00:15:39,080 –> 00:15:40,880
Template each policy with inclusive scopes
431
00:15:40,880 –> 00:15:42,480
and minimal interdependence.
432
00:15:42,480 –> 00:15:44,800
Prioritize evaluation order by clarity.
433
00:15:44,800 –> 00:15:47,400
Universal MFA first, then device step-up,
434
00:15:47,400 –> 00:15:50,360
then admin controls, then context, then hygiene.
435
00:15:50,360 –> 00:15:52,760
You’re not scripting order, you’re reducing overlap,
436
00:15:52,760 –> 00:15:54,600
so the combined result is obvious.
437
00:15:54,600 –> 00:15:57,720
In policy descriptions, write the intent in plain language.
438
00:15:57,720 –> 00:16:00,320
Baseline MFA for every user and app.
439
00:16:00,320 –> 00:16:03,040
Step-up for unmanaged devices, admins must use
440
00:16:03,040 –> 00:16:05,200
strong auth and managed devices on a sunny day.
441
00:16:05,200 –> 00:16:07,080
Your future self will thank you in the logs.
442
00:16:07,080 –> 00:16:09,280
Here’s a quick win that feels great immediately.
443
00:16:09,280 –> 00:16:13,160
Create the all-cloud apps, require MFA baseline with strengths.
444
00:16:13,160 –> 00:16:14,480
Deploy in report only for a week
445
00:16:14,480 –> 00:16:16,720
while you shadow it with the unmanaged device step-up policy
446
00:16:16,720 –> 00:16:17,760
also report only.
447
00:16:17,760 –> 00:16:21,720
Watch sign-ins move from not applied to MFA would be required
448
00:16:21,720 –> 00:16:24,560
and stronger auth would be required on BYOD.
449
00:16:24,560 –> 00:16:26,720
Fix the noisy edge cases then enforce.
450
00:16:26,720 –> 00:16:28,840
You’ll see coverage jump without chaos.
451
00:16:28,840 –> 00:16:30,160
Now, the mistakes to avoid.
452
00:16:30,160 –> 00:16:32,800
Don’t overlap apps scopes in ways that fight.
453
00:16:32,800 –> 00:16:36,400
All-cloud apps plus specific admin portals is fine,
454
00:16:36,400 –> 00:16:39,040
but two different all-cloud apps with conflicting grants
455
00:16:39,040 –> 00:16:40,520
will produce odd results.
456
00:16:40,520 –> 00:16:43,920
Don’t mix user exclusions with context-based exceptions.
457
00:16:43,920 –> 00:16:46,640
Pick context so the audit trail is clean.
458
00:16:46,640 –> 00:16:49,400
Don’t forget service accounts and workload identities.
459
00:16:49,400 –> 00:16:52,280
Give them dedicated policies that require managed identities
460
00:16:52,280 –> 00:16:53,680
or certificate-based flows
461
00:16:53,680 –> 00:16:56,480
and explicitly block interactive sign-in for them.
462
00:16:56,480 –> 00:16:58,040
Before and after matters.
463
00:16:58,040 –> 00:17:01,120
Before 10 narrow policies each with their own include groups
464
00:17:01,120 –> 00:17:03,960
and long exclude lists, inconsistent grant controls
465
00:17:03,960 –> 00:17:05,120
and special locations.
466
00:17:05,120 –> 00:17:08,440
After five larger policies with inclusive scopes,
467
00:17:08,440 –> 00:17:11,120
no permanent exclusions and one place,
468
00:17:11,120 –> 00:17:13,920
authentication context for controlled bypass,
469
00:17:13,920 –> 00:17:16,320
the engine stops juggling and starts protecting.
470
00:17:16,320 –> 00:17:18,000
The log stop whispering not applied
471
00:17:18,000 –> 00:17:20,920
and starts stating MFA required, strong auth required
472
00:17:20,920 –> 00:17:22,320
or blocked until healthier.
473
00:17:22,320 –> 00:17:24,720
Monitoring hooks keep this baseline peaceful.
474
00:17:24,720 –> 00:17:25,960
Track two, KPIs.
475
00:17:25,960 –> 00:17:28,440
Percentage of sign-ins covered by any conditional access
476
00:17:28,440 –> 00:17:31,320
decision and percentage that met MFA or your defined strengths,
477
00:17:31,320 –> 00:17:35,720
target at least 99% coverage and 98% MFA were applicable.
478
00:17:35,720 –> 00:17:39,000
When coverage dips, you’ll know a scope changed or an app escaped.
479
00:17:39,000 –> 00:17:41,160
When MFA drops, you’ll see where stronger auth
480
00:17:41,160 –> 00:17:43,200
isn’t being required as intended.
481
00:17:43,200 –> 00:17:45,040
Tie this baseline to your change process.
482
00:17:45,040 –> 00:17:48,440
Any change to a policy, its scope or its exclusion list demands
483
00:17:48,440 –> 00:17:50,520
a ticket and owner and an expiry.
484
00:17:50,520 –> 00:17:53,520
Authentication context grants need the same care,
485
00:17:53,520 –> 00:17:56,920
who asked, who approved, why and when it ends.
486
00:17:56,920 –> 00:17:58,760
And built-in alert for exclusion list changes
487
00:17:58,760 –> 00:18:00,920
so you hear the moment a boundary moves.
488
00:18:00,920 –> 00:18:03,880
With gentle discipline, your conditional access will feel heard,
489
00:18:03,880 –> 00:18:06,520
supported and ready for the next rollout.
490
00:18:06,520 –> 00:18:10,960
Unsafe rollout, test plan, report only and rollback checklists.
491
00:18:10,960 –> 00:18:13,840
Change scares identity, sudden enforcement spikes cortisol,
492
00:18:13,840 –> 00:18:16,440
so we coach conditional access through rehearsal first,
493
00:18:16,440 –> 00:18:18,680
then performance report only is rehearsal,
494
00:18:18,680 –> 00:18:21,880
no harm for learning, here’s the plan, three waves, one rhythm.
495
00:18:21,880 –> 00:18:25,600
Wave one, admins and admin portals, wave two, high-risk apps and rolls,
496
00:18:25,600 –> 00:18:26,480
wave three.
497
00:18:26,480 –> 00:18:29,440
Everyone, all apps, each wave spends a week in report only,
498
00:18:29,440 –> 00:18:31,600
then enforces once the noise is quiet.
499
00:18:31,600 –> 00:18:34,880
And boundaries are a gift, so we keep a rollback ready at every step.
500
00:18:34,880 –> 00:18:36,400
Start by shadowing your baseline.
501
00:18:36,400 –> 00:18:39,080
Duplicate each policy you built and set it to report only.
502
00:18:39,080 –> 00:18:42,440
Scope is inclusive, exclude only emergency access.
503
00:18:42,440 –> 00:18:45,720
In descriptions, write shadow baseline report only,
504
00:18:45,720 –> 00:18:47,920
so ops can see its intent in the logs.
505
00:18:47,920 –> 00:18:50,600
Now with patience, let it watch traffic for seven days.
506
00:18:50,600 –> 00:18:53,000
You’re listening for stress points, not perfection.
507
00:18:53,000 –> 00:18:56,000
Use the what if tool to pre-flight edge cases.
508
00:18:56,000 –> 00:18:59,240
Pick a test user, device state, location and the app.
509
00:18:59,240 –> 00:19:02,760
Validate the expected grant controls and session rules.
510
00:19:02,760 –> 00:19:07,200
If the what if says MFA required, but sign-in logs show not applied,
511
00:19:07,200 –> 00:19:09,040
you found a scope mismatch.
512
00:19:09,040 –> 00:19:10,240
Fix that before you move.
513
00:19:10,240 –> 00:19:11,720
Now read the room through logs.
514
00:19:11,720 –> 00:19:13,160
Open sign-in logs.
515
00:19:13,160 –> 00:19:17,280
Add conditional access result, policy name applied, not applied and grant controls.
516
00:19:17,280 –> 00:19:20,160
For report only policies, look at report only would have decisions.
517
00:19:20,160 –> 00:19:24,240
You want to see MFA would be required, strong auth would be required,
518
00:19:24,240 –> 00:19:26,800
and minimal unexpected block would be applied.
519
00:19:26,800 –> 00:19:31,040
Investigate any surge in block for service principles or legacy flows.
520
00:19:31,040 –> 00:19:33,840
Those need their own policies or migration plans.
521
00:19:33,840 –> 00:19:35,720
Before you enforce, stage comes.
522
00:19:35,720 –> 00:19:38,760
Tell admins what will change, how strong auth feels and where to get help.
523
00:19:38,760 –> 00:19:40,880
Share the emergency context process.
524
00:19:40,880 –> 00:19:42,480
Calm voices lower friction.
525
00:19:42,480 –> 00:19:45,280
Enforced wave 1 on a weekday morning with support on standby,
526
00:19:45,280 –> 00:19:48,640
flip admin strong auth and token hygiene from report only to own.
527
00:19:48,640 –> 00:19:49,800
Keep the others shadowing.
528
00:19:49,800 –> 00:19:51,960
Watch for entra errors, bikes and ticket volume.
529
00:19:51,960 –> 00:19:56,760
If failure rates climb beyond your agreed threshold, pause, diagnose or rollback.
530
00:19:56,760 –> 00:19:58,360
Your rollback is simple and kind.
531
00:19:58,360 –> 00:20:01,680
Pre-approved toggles to revert policies to report only.
532
00:20:01,680 –> 00:20:03,760
Document the exact settings you’d restore.
533
00:20:03,760 –> 00:20:06,240
Keep the emergency bypass context live and tested.
534
00:20:06,240 –> 00:20:10,960
Maintain a change ticket per policy with owner and timestamp so you can unwind confidently.
535
00:20:10,960 –> 00:20:12,600
Wave 2 brings high risk apps.
536
00:20:12,600 –> 00:20:17,040
Attach the high sensitivity context to finance, HRE discovery and export paths.
537
00:20:17,040 –> 00:20:20,080
Again, a week of report only, then enforce.
538
00:20:20,080 –> 00:20:24,840
Confirm that unmanaged devices hit step up and that CE-driven re-auth events behave.
539
00:20:24,840 –> 00:20:26,360
Wave 3 is everyone.
540
00:20:26,360 –> 00:20:29,480
Turn on all users, MFA and unmanaged device step up.
541
00:20:29,480 –> 00:20:33,080
Validate that coverage rises and failure rates stay stable.
542
00:20:33,080 –> 00:20:33,720
Then breathe.
543
00:20:33,720 –> 00:20:34,640
You didn’t force it.
544
00:20:34,640 –> 00:20:40,440
You let conditional access find its rhythm with rehearsal, permission and a safety net.
545
00:20:40,440 –> 00:20:41,520
Watchful piece.
546
00:20:41,520 –> 00:20:43,480
Monitoring and alerts that actually help.
547
00:20:43,480 –> 00:20:46,160
Once live, your conditional access needs steady feedback.
548
00:20:46,160 –> 00:20:47,440
Not noise, not panic.
549
00:20:47,440 –> 00:20:51,360
A calm heartbeat that tells you it’s present, it’s protecting and where it needs care.
550
00:20:51,360 –> 00:20:56,280
We’ll set up three signals and a weekly rhythm that keeps trust intact without burning anyone out.
551
00:20:56,280 –> 00:20:59,600
The thing most people miss is that coverage is your north star.
552
00:20:59,600 –> 00:21:04,280
If a sign isn’t touched by any CA policy, it’s living outside the boundaries you just set.
553
00:21:04,280 –> 00:21:06,160
So we start with two simple KPIs.
554
00:21:06,160 –> 00:21:07,320
Coverage and strength.
555
00:21:07,320 –> 00:21:11,560
Coverage is the percentage of interactive sign-ins with any conditional access decision.
556
00:21:11,560 –> 00:21:15,880
Strength is the percentage of those sign-ins that satisfy MFA or your defined authentication
557
00:21:15,880 –> 00:21:16,880
strength.
558
00:21:16,880 –> 00:21:18,760
If you remember nothing else, remember this.
559
00:21:18,760 –> 00:21:19,760
Track both.
560
00:21:19,760 –> 00:21:21,960
High coverage without strength is comfort theater.
561
00:21:21,960 –> 00:21:24,160
High strength without coverage is selective care.
562
00:21:24,160 –> 00:21:26,760
Let’s help it find its rhythm with practical queries.
563
00:21:26,760 –> 00:21:31,480
In your sign-in logs, add columns for conditional access result, policy name and authentication
564
00:21:31,480 –> 00:21:32,480
requirements.
565
00:21:32,480 –> 00:21:37,040
A saved view that counts sign-ins by day where CA decision is present versus not applied.
566
00:21:37,040 –> 00:21:38,320
That’s your coverage line.
567
00:21:38,320 –> 00:21:42,320
Create a second view that counts sign-ins where MFA or your chosen strength was required
568
00:21:42,320 –> 00:21:43,320
and satisfied.
569
00:21:43,320 –> 00:21:44,560
That’s your strength line.
570
00:21:44,560 –> 00:21:47,040
Keep both lines visible on a simple dashboard.
571
00:21:47,040 –> 00:21:48,960
The goal is boring consistency.
572
00:21:48,960 –> 00:21:53,080
Coverage add or above 99% strength add or above 98% where applicable.
573
00:21:53,080 –> 00:21:55,040
Now the three alerts that actually help.
574
00:21:55,040 –> 00:21:56,640
First a coverage drop alert.
575
00:21:56,640 –> 00:22:01,080
If coverage dips below your threshold for any 30-minute window, you get a nudge.
576
00:22:01,080 –> 00:22:02,080
First a siren.
577
00:22:02,080 –> 00:22:07,240
A nudge to check whether a scope changed a new app onboarded without CA or a policy was disabled.
578
00:22:07,240 –> 00:22:09,040
Second an exclusion growth alert.
579
00:22:09,040 –> 00:22:14,240
Whenever any CA policies exclusion list changes, user group application you get a change notification
580
00:22:14,240 –> 00:22:16,080
with who edited it and what changed.
581
00:22:16,080 –> 00:22:17,080
That’s not about blame.
582
00:22:17,080 –> 00:22:18,080
It’s about awareness.
583
00:22:18,080 –> 00:22:19,080
Boundaries moved.
584
00:22:19,080 –> 00:22:20,080
Let’s see why.
585
00:22:20,080 –> 00:22:22,080
Third high risk sign-ins with not applied.
586
00:22:22,080 –> 00:22:25,960
If any high risk sign-in lands without a CA decision, raise a flag.
587
00:22:25,960 –> 00:22:29,560
That means risk saw something but your boundaries didn’t show up to help.
588
00:22:29,560 –> 00:22:31,320
When is the shortcut nobody teaches?
589
00:22:31,320 –> 00:22:33,640
Tie these alerts to owners, not inboxes.
590
00:22:33,640 –> 00:22:36,520
Each policy and each KPI has a name steward.
591
00:22:36,520 –> 00:22:38,640
When coverage dips an owner checks scope.
592
00:22:38,640 –> 00:22:41,680
When exclusions change an owner confirms expiry and purpose.
593
00:22:41,680 –> 00:22:46,320
When high risk bypasses appear an owner validates that the right apps require the right context.
594
00:22:46,320 –> 00:22:47,320
You’re not just watching.
595
00:22:47,320 –> 00:22:48,320
You’re caring with intention.
596
00:22:48,320 –> 00:22:51,120
Let me show you exactly how to read the bypasses.
597
00:22:51,120 –> 00:22:55,400
Build a saved filter for sign-ins where conditional access result equals not applied.
598
00:22:55,400 –> 00:22:58,280
Add app, user client app and location.
599
00:22:58,280 –> 00:22:59,280
Sort by count.
600
00:22:59,280 –> 00:23:01,040
You’re looking for clusters that shouldn’t exist.
601
00:23:01,040 –> 00:23:04,240
A service principle signing in interactively, that’s a misscoped identity.
602
00:23:04,240 –> 00:23:08,120
A legacy protocol touching a protected app, that’s a migration task.
603
00:23:08,120 –> 00:23:11,760
A guest user hitting an internal app with no CA decision.
604
00:23:11,760 –> 00:23:16,760
That app likely missed all cloud apps or sits under a different publisher and needs tagging.
605
00:23:16,760 –> 00:23:18,680
This filter is your quiet detective.
606
00:23:18,680 –> 00:23:19,960
A quick win you can do today.
607
00:23:19,960 –> 00:23:24,200
Turn on and alert for any policy moving from enable to report only or to disabled and
608
00:23:24,200 –> 00:23:26,760
for any change to the all-user scope.
609
00:23:26,760 –> 00:23:28,880
These two movements cause most surprises.
610
00:23:28,880 –> 00:23:34,440
I’ve prepared that with a daily digest listing top 10 apps by not applied sign-ins and top 10 users by MFA not satisfied.
611
00:23:34,440 –> 00:23:35,720
It’s not a wall of data.
612
00:23:35,720 –> 00:23:37,200
It’s a morning check-in.
613
00:23:37,200 –> 00:23:38,560
Now here’s where most people mess up.
614
00:23:38,560 –> 00:23:41,920
They set thresholds so tight that every blip becomes an alarm.
615
00:23:41,920 –> 00:23:46,760
Or they ignore service principles and non-interactive flows, even though those identities hold powerful keys.
616
00:23:46,760 –> 00:23:49,840
Or they never review the report only would have lines.
617
00:23:49,840 –> 00:23:52,440
So there are shadow policies drift from reality.
618
00:23:52,440 –> 00:23:54,320
We want to avoid learned helplessness.
619
00:23:54,320 –> 00:23:56,680
If the system cries wolf people stop listening.
620
00:23:56,680 –> 00:23:58,800
Keep alert scarce, specific and owned.
621
00:23:58,800 –> 00:24:01,160
Let’s anchor with the KPI board you’ll actually use.
622
00:24:01,160 –> 00:24:05,080
Top row, coverage percentage, strength percentage and exclusions count trend.
623
00:24:05,080 –> 00:24:06,720
Info flatlines at healthy levels.
624
00:24:06,720 –> 00:24:13,240
Second row, top bypassing apps, top bypassing locations and changes in CA policy scopes over the last seven days.
625
00:24:13,240 –> 00:24:18,760
Third row, high risk sign-ins without CA decision and admin sign-ins that lack strong auth.
626
00:24:18,760 –> 00:24:19,920
Review weekly.
627
00:24:19,920 –> 00:24:22,120
Investigate deviations within 24 hours.
628
00:24:22,120 –> 00:24:23,960
Not with blame with curiosity.
629
00:24:23,960 –> 00:24:26,360
Why did coverage dip yesterday at noon?
630
00:24:26,360 –> 00:24:27,560
Maybe a new app launched.
631
00:24:27,560 –> 00:24:28,080
Great.
632
00:24:28,080 –> 00:24:31,120
Tag it, bring it under all cloud apps, confirm the right context.
633
00:24:31,120 –> 00:24:32,760
Close the loop with change management.
634
00:24:32,760 –> 00:24:38,280
Every policy edit requires an owner, a reason and an expiry when it’s a temporary exception.
635
00:24:38,280 –> 00:24:41,040
Your exclusion growth alert isn’t just a notification.
636
00:24:41,040 –> 00:24:43,840
It’s a prompt to add that expiry and book a review.
637
00:24:43,840 –> 00:24:45,800
Your coverage drop alert isn’t a failure.
638
00:24:45,800 –> 00:24:47,960
It’s the system asking for alignment.
639
00:24:47,960 –> 00:24:51,360
This is how you keep conditional access in therapy, not triage.
640
00:24:51,360 –> 00:24:53,560
It gets to be transparent, consistent and hurt.
641
00:24:53,560 –> 00:24:54,720
And boundaries are a gift.
642
00:24:54,720 –> 00:24:57,000
With gentle monitoring, you’re not micromanaging.
643
00:24:57,000 –> 00:25:00,720
You’re holding a steady container so CA can keep doing the quiet work protecting everyone
644
00:25:00,720 –> 00:25:02,800
all day without drama.
645
00:25:02,800 –> 00:25:04,120
Here’s the takeaway.
646
00:25:04,120 –> 00:25:06,040
Your conditional access wasn’t broken.
647
00:25:06,040 –> 00:25:08,360
It was trusting without boundaries.
648
00:25:08,360 –> 00:25:12,560
Inclusive scopes, time-bound contexts and steady monitoring restore its balance.
649
00:25:12,560 –> 00:25:17,160
If this helped, try the baseline template, shadow it in report only for seven days and
650
00:25:17,160 –> 00:25:20,120
wire the three alerts so changes never go silent.
651
00:25:20,120 –> 00:25:24,560
Subscribe and watch the next episode on authentication context patterns and token binding hardening.