דלג לתוכן

עדכון: Token Protection ב-Conditional Access תומך כעת ב-Windows App

פורסם ב-28 באפריל 2025

מבוא:

Microsoft Entra Conditional Access הציג שיפור קריטי: Token Protection תומך כעת ב-Windows App, ומרחיב את הכיסוי ל-Azure Virtual Desktop (AVD) ול-Windows 365. זה מאפשר לארגונים להחיל הגנות זהות חזקות יותר גם בסביבות וירטואליות או בסביבות Cloud PC.

מהו Token Protection?

Token Protection (ידוע גם כ-token binding) מבטיח שטוקני התחברות תקפים רק בהתקן שבו הונפקו. הוא יוצר קשר קריפטוגרפי בין הטוקן להתקן, כך שהטוקן אינו שמיש אם נגנב ומשוחזר (replay) ממערכת אחרת.

היכולת הזו:

  • עוזרת למנוע תנועה רוחבית באמצעות טוקנים גנובים
  • מחזקת את אכיפת הגישה מבוססת ההתקן
  • משלימה את מדיניות ה-MFA ותאימות ההתקנים

מה חדש בעדכון הזה?

שיפורים עיקריים שזמינים כעת בתצוגה מקדימה ציבורית:

  • תמיכה ב-Windows App (גרסה 2.0.379.0 ואילך)
  • הרחבת ההיקף ל-AVD ול-Windows 365
  • אכיפה על טוקני סשן בהתקני Windows 10 ואילך ו-Server 2019 ואילך שמצורפים ל-Entra או ב-hybrid join
  • עובד עם אפליקציות שולחן עבודה כמו Teams, OneDrive, Power BI Desktop, Visual Studio ועוד

המלצות לפריסה

כדי ליישם Token Protection:

  • צרו מדיניות Conditional Access ב-Report-only mode.
  • החילו את המדיניות רק על אפליקציות נתמכות: Exchange Online, SharePoint Online, AVD ו-Windows 365.
  • החריגו פלטפורמות שאינן נתמכות (למשל Surface Hub, Cloud PCs שנרשמו ב-bulk enrollment).
  • סקרו את לוגי ה-sign-in כדי להעריך את ההשפעה לפני מעבר לאכיפה.

אינטגרציה עם Log Analytics

אפשר לנטר את השפעת המדיניות באמצעות שאילתות על Sign-in Logs דרך Log Analytics. זה עוזר לזהות אילו אפליקציות או משתמשים נחסמים בגלל בעיות של token protection.

חשוב: מאז יוני 2023, הערכים של enforcedSessionControls ושל sessionControlsNotSatisfied השתנו מ-“Binding” ל-“SignInTokenProtection”, והשאילתות צריכות לשקף את העדכון הזה.

שאילתה לפי אפליקציה:

AADNonInteractiveUserSignInLogs
| where TimeGenerated > ago(7d)
| project Id, ConditionalAccessPolicies, Status, UserPrincipalName, AppDisplayName, ResourceDisplayName
| where ConditionalAccessPolicies != "[]"
| where ResourceDisplayName in ("Office 365 Exchange Online", "Office 365 SharePoint Online", "Azure Virtual Desktop", "Windows 365", "Windows Cloud Login")
| mv-expand todynamic(ConditionalAccessPolicies)
| where ConditionalAccessPolicies["enforcedSessionControls"] contains '["Binding"]'
or ConditionalAccessPolicies["enforcedSessionControls"] contains '["SignInTokenProtection"]'
| where ConditionalAccessPolicies.result !="reportOnlyNotApplied" and ConditionalAccessPolicies.result !="notApplied"
| extend SessionNotSatisfyResult = ConditionalAccessPolicies["sessionControlsNotSatisfied"]

שאילתה לפי משתמש:

AADNonInteractiveUserSignInLogs
| where TimeGenerated > ago(7d)
| project Id, ConditionalAccessPolicies, UserPrincipalName, AppDisplayName, ResourceDisplayName
| where ConditionalAccessPolicies != "[]"
| where ResourceDisplayName in ("Office 365 Exchange Online", "Office 365 SharePoint Online", "Azure Virtual Desktop", "Windows 365", "Windows Cloud Login")
| mv-expand todynamic(ConditionalAccessPolicies)
| where ConditionalAccessPolicies["enforcedSessionControls"] contains '["Binding"]'
or ConditionalAccessPolicies["enforcedSessionControls"] contains '["SignInTokenProtection"]'
| where ConditionalAccessPolicies.result !="reportOnlyNotApplied" and ConditionalAccessPolicies.result !="notApplied"
| extend SessionNotSatisfyResult = ConditionalAccessPolicies["sessionControlsNotSatisfied"]

זיהוי התקנים שאינם נתמכים:

AADNonInteractiveUserSignInLogs
| where TimeGenerated > ago(7d)
| where TokenProtectionStatusDetails != ""
| extend parsedBindingDetails = parse_json(TokenProtectionStatusDetails)
| extend bindingStatus = tostring(parsedBindingDetails["signInSessionStatus"])
| extend bindingStatusCode = tostring(parsedBindingDetails["signInSessionStatusCode"]

מה לא נתמך: מגבלות מרכזיות שחשוב להכיר

לפני שפורסים את Token Protection באופן רחב, חשוב להבין איפה הוא לא יעבוד (עדיין):

  • לקוחות Office Perpetual אינם נתמכים.

  • אפליקציות שלא תומכות בזרימות טוקן מוגנות ייחסמו בגישה ל-Exchange או ל-SharePoint:

  • מודולי PowerShell ל-SharePoint

  • PowerQuery ל-Excel

  • תוספי VS Code שניגשים ל-Exchange או ל-SharePoint

  • סוגי התקנים שאינם נתמכים:

  • Surface Hub

  • Microsoft Teams Rooms (MTR) ב-Windows

  • משתמשים חיצוניים: אם רישום ההתקן שלהם לא עומד בדרישות ב-tenant הביתי שלהם, הגישה תיחסם, והודעת השגיאה לא תסביר למה.

  • שיטות רישום התקנים ב-Entra שאינן נתמכות:

  • מארחי סשן של Azure Virtual Desktop שמצורפים ל-Entra

  • Cloud PCs (Windows 365) שמצורפים ל-Entra

  • התקנים שנרשמו באמצעות bulk enrollment

  • קבוצות מכונות מארחות של Power Automate

  • התקני Autopilot במצב self-deploying

  • Azure VMs שמשתמשות בתוסף Entra ID VM extension לאימות

📌 אם התחברות נכשלת בגלל תרחיש שאינו נתמך, חפשו signInSessionStatusCode = 1003 ב-Sign-in Logs (תחת TokenProtectionStatusDetails).

איך נמנעים מבעיות הטמעה?

כדי למנוע הפרעות במהלך הפריסה, אפשר לסנן החוצה התקנים שאינם נתמכים ישירות במדיניות ה-Conditional Access באמצעות device filters.

דוגמאות:

  • החריגו Cloud PCs:
  • החריגו AVD (מצורפים ל-Entra):
  • החריגו מכונות מארחות של Power Automate:
  • החריגו Azure VMs:

מילות סיכום

Token Protection הוא חלק מרכזי ביישום שליטה ברמת הסשן באפליקציות ענן ובנקודות קצה של Windows. עכשיו, כשהתמיכה כוללת את Windows App, ההגנה הזו מגיעה סוף סוף לסביבות שבהן הכי צריך אותה: VDI ו-Cloud PCs.

סקרו את מדיניות ה-Conditional Access הקיימת שלכם והתחילו להריץ פיילוט של היכולת הזו כבר היום.

למידע נוסף:

https://learn.microsoft.com/en-us/entra/identity/conditional-access/concept-token-protection