Руководство по развертыванию защиты маркеров — Windows

Обзор

В этом руководстве рассматриваются действия, необходимые для развертывания и настройки защиты токенов для токенов сеансов входа на платформе Windows.

Общие сведения о защите маркеров и поддерживаемых платформах см. в разделе защиты маркеров в Microsoft Entra Conditional Access. Ознакомьтесь с документацией по обзору перед использованием этого руководства по развертыванию.

Необходимые условия

Для использования этой функции требуются лицензии Microsoft Entra ID P1. Чтобы найти нужную лицензию для ваших требований, см. статью Сравнение общедоступных функций Microsoft Entra ID.

Поддерживаемые приложения и ресурсы

Перед применением политики убедитесь, что пользователи используют поддерживаемые и актуальные версии клиента. Более старые или устаревшие версии могут быть несовместимы и могут быть заблокированы.

Приложения

Защита маркеров может применяться к следующим приложениям:

  • Модуль Exchange PowerShell
  • Microsoft 365 Copilot
  • Microsoft Edge (поддержка входа только в профиль Edge)*
  • Microsoft Graph PowerShell с параметром EnableLoginByWAM
  • Цикл Майкрософт
  • Microsoft Teams
  • Microsoft To Do (Электронный список дел)
  • OneNote
  • OneDrive
  • Outlook
  • Power BI настольный компьютер
  • Расширение PowerQuery для Excel (доступно только для пользователей в Current Channel)
  • Visual Studio Code
  • Visual Studio при использовании опции входа «Windows Authentication Broker»
  • Приложение Windows
  • Word, Excel, PowerPoint

*Защита маркеров в настоящее время поддерживает только нативные приложения. Приложения на основе браузера не поддерживаются.

Ресурсы

Защиту маркеров на платформах Windows можно использовать для защиты следующих ресурсов:

  • Обмен онлайн
  • SharePoint Online
  • Microsoft Teams
  • Azure Virtual Desktop
  • Windows 365

Известные ограничения

  • Бессрочные клиенты Office не поддерживаются.
  • Следующие приложения не поддерживают вход с помощью защищенных потоков маркеров, и пользователи блокируются при доступе к Exchange и SharePoint:
    • Модули PowerShell, обращающиеся к SharePoint
    • Расширение PowerQuery для Excel для пользователей без обновлений Current Channel
    • Расширения для Visual Studio Code для доступа к Exchange или SharePoint
  • Следующие Windows клиентские устройства не поддерживаются:
    • Центр Surface
    • системы Microsoft Teams Rooms (MTR) на Windows
  • Поддерживаются внешние пользователи, отвечающие требованиям к регистрации устройств защиты токенов в своем домашнем арендодателе. Однако пользователи, которые не соответствуют этим требованиям, видят неясное сообщение об ошибке без указания первопричины.
  • Устройства, зарегистрированные в Microsoft Entra ID с помощью следующих методов, не поддерживаются:

Чтобы определить затронутые устройства из-за неподдерживаемых типов регистрации, перечисленных ранее, проверьте tokenProtectionStatusDetails атрибут в журналах входа. Запросы токенов, заблокированные из-за неподдерживаемого типа регистрации устройства, можно определить по значению signInSessionStatusCode 1003.

Чтобы предотвратить сбои при подключении, измените политику условного доступа для защиты токенов, добавив условие фильтрации устройств, которое исключает устройства из ранее описанной категории развертывания. Например, чтобы исключить:

  • Облачные компьютеры, присоединенные к Microsoft Entra, можно использовать systemLabels -eq "CloudPC" and trustType -eq "AzureAD".
  • Виртуальные рабочие столы Azure, присоединенные к Microsoft Entra, можно использовать systemLabels -eq "AzureVirtualDesktop" and trustType -eq "AzureAD".
  • Группы машин, размещенные в Power Automate и присоединенные к Microsoft Entra, можно использовать systemLabels -eq "MicrosoftPowerAutomate" and trustType -eq "AzureAD".
  • Для устройств Windows Autopilot, развернутых с использованием режима самостоятельного развертывания, необходимо использовать свойство enrollmentProfileName. Например, если вы создали профиль регистрации в Intune для устройств режима самостоятельного развертывания Autopilot под названием "профиль самостоятельного развертывания Autopilot", можно использовать enrollmentProfileName -eq "Autopilot self-deployment profile".
  • Виртуальные машины Windows в Azure, присоединенные к Microsoft Entra, можно использовать profileType -eq "SecureVM" and trustType -eq "AzureAD".

Включение защиты токенов на Windows

Для пользователей развертывание политики условного доступа для принудительного применения защиты маркеров должно быть невидимым при использовании совместимых клиентских платформ на зарегистрированных устройствах и совместимых приложениях.

Чтобы свести к минимуму вероятность нарушения работы пользователей из-за несовместимости приложения или устройства, выполните следующие рекомендации.

  • Начните с пилотной группы пользователей и развернитесь со временем.
  • Создайте политику условного доступа в режиме только отчетов перед применением защиты токенов.
  • Записывайте как интерактивные, так и неинтерактивные журналы входа.
  • Выполните анализ этих журналов в течение достаточно длительного периода, чтобы охватить нормальное использование приложения.
  • Добавьте известных, надежных пользователей в политику соблюдения.

Этот процесс помогает оценить совместимость приложений и клиентов ваших пользователей для применения защиты токенов.

Создание политики условного доступа

Пользователи, выполняющие специализированные роли, такие как описанные в разделе "Уровни безопасности привилегированного доступа ", являются возможными целевыми объектами для этой функции. Начните с пилотного проекта на небольшом подмножестве.

Ниже приведены шаги по созданию политики условного доступа, требующей защиты токенов для Exchange Online и SharePoint Online на устройствах Windows.

  1. Войдите в центр администрирования Microsoft Entra как минимум в качестве администратора условного доступа.
  2. Перейдите к Entra ID>условному доступу>политикам.
  3. Выберите Новая политика.
  4. Присвойте политике имя. Создайте значимый стандарт для наименований ваших политик.
  5. В разделе "Назначения" выберите "Пользователи" или "Идентификаторы рабочей нагрузки".
    1. В разделе "Включить" выберите пользователей или группы, которые тестируют эту политику.
    2. В разделе Исключить выберите Пользователи и группы и укажите учетные записи аварийного доступа или обходные учетные записи вашей организации.
  6. В разделе Целевые ресурсы>Ресурсы (ранее облачные приложения)>Включить>Выберите ресурсы
    1. В разделе "Выбрать" выберите следующие приложения:

      1. Office 365 Exchange Online
      2. Office 365 SharePoint Online
      3. службы Microsoft Teams
      4. Если вы развернули приложение Windows в вашей среде, включите:
        1. Azure Virtual Desktop
        2. Windows 365
        3. Вход в облако Windows

      Предупреждение

      Политика условного доступа должна быть настроена только для этих приложений. Выбор группы приложений Office 365 может привести к непредвиденным сбоям. Это изменение является исключением из общего правила, что в политике условного доступа следует выбрать группу приложений Office 365.

    2. Нажмите кнопку "Выбрать".

  7. В разделе Условия:
    1. В разделе Платформы устройств:
      1. Задайте для параметра Настроить значение Да.
      2. Include>Выберите платформы устройств>Windows.
      3. Нажмите кнопку Готово.
    2. В клиентских приложениях:
      1. Задайте для параметра Настроить значение Да.

        Предупреждение

        Не настраивая условие клиентских приложений или оставляя выбранным браузер, может привести к блокировке приложений, использующих MSAL.js, таких как Teams Web.

      2. В разделе "Клиенты с современной проверкой подлинности" выберите только мобильные приложения и настольные клиенты. Оставьте остальные элементы без флажка.

      3. Нажмите кнопку Готово.

  8. В разделе управления доступомСеанс выберите "Требовать защиту токенов для сеансов входа" и нажмите "Выбрать".
  9. Подтвердите параметры и установите включение политики в режим только для отчетов.
  10. Щелкните Создать, чтобы включить эту политику.

После подтверждения параметров с помощью режима воздействия политики или режима только для отчетов переместите переключатель "Включить политику" из режима "Только для отчетов" в "Включено".

Подсказка

Так как политики условного доступа, требующие защиты маркеров, в настоящее время доступны только для Windows и устройств Apple, необходимо защитить среду от потенциального обхода политики, когда злоумышленник может появиться на другой платформе.

Кроме того, следует настроить следующие политики:

Сбор лог-файлов и анализ

Отслеживайте принудительное применение защиты токенов до и после применения с помощью таких функций, как Влияние политики, журналы входа и Log Analytics.

Журналы логов входа

Используйте журнал входа Microsoft Entra, чтобы проверить результат политики применения защиты токенов в режиме только отчетов или в активированном режиме.

Снимок экрана, показывающий пример несоблюдения политики.

  1. Войдите в центр администрирования Microsoft Entra как минимум в качестве администратора условного доступа.
  2. Перейдите к Entra ID>Мониторинг и работоспособность>Журналы входов в систему.
  3. Выберите конкретный запрос, чтобы определить, применяется ли политика.
  4. Перейдите в область Условного доступа или Только для отчетов в зависимости от его состояния и выберите имя политики, требующей защиты токенов.
  5. В разделе "Элементы управления сеансами" проверьте, выполнены ли требования политики.
  6. Чтобы узнать больше о состоянии привязки запроса, выберите область "Основные сведения " и просмотрите поле "Защита маркеров" — сеанс входа. Возможные значения:
    1. Привязан: запрос использовал связанные протоколы. Некоторые входы могут включать несколько запросов, и все запросы должны соответствовать требованиям политики защиты токенов. Даже если отдельный запрос, как представляется, привязан, он не гарантирует соответствие политике, если другие запросы не связаны. Чтобы просмотреть все запросы для входа, можно отфильтровать все запросы для конкретного пользователя или просмотреть по идентификатору корреляции.
    2. Несвязанный запрос: запрос не использовал связанные протоколы. Возможные statusCodes при отсутствии привязки запроса:
      1. 1002: Запрос расторгнут из-за отсутствия состояния устройства Microsoft Entra ID.
      2. 1003. Запрос не привязан, так как состояние устройства Microsoft Entra ID не удовлетворяет требованиям политики условного доступа для защиты токенов. Эта ошибка может возникнуть из-за неподдерживаемого типа регистрации устройства, или устройство не зарегистрировано с помощью новых учетных данных входа.
      3. 1005: запрос не ограничен по другим неуказанным причинам.
      4. 1006: запрос не связан, так как версия ОС не поддерживается.
      5. 1008: Запрос не связан, так как клиент не интегрирован с брокером платформы, например, Windows Диспетчером учетных записей (WAM).

Снимок экрана, показывающий пример входа с выделенным атрибутом

Замечание

Выходные данные журналов входа: Значение строки, используемой в enforcedSessionControls и sessionControlsNotSatisfied, изменилось с Binding на SignInTokenProtection в конце июня 2023 года. Чтобы отразить это изменение, необходимо обновить запросы к данным журнала входа. В примерах рассматриваются оба значения для включения исторических данных.

Log Analytics

Вы также можете использовать Log Analytics для запроса журналов входа (интерактивных и неинтерактивных) для заблокированных запросов из-за сбоя применения защиты маркеров. Эти запросы являются только примерами и подлежат изменению.

Примеры запросов:

В следующем примере запроса Log Analytics выполняется поиск журналов неинтерактивного входа за последние семь дней, выделены запросы Blocked и Allowed по Application.

Запросы по приложению
//Per Apps query 
// Select the log you want to query (SigninLogs or AADNonInteractiveUserSignInLogs ) 
//SigninLogs 
AADNonInteractiveUserSignInLogs 
// Adjust the time range below 
| where TimeGenerated > ago(7d) 
| project Id,ConditionalAccessPolicies, Status,UserPrincipalName, AppDisplayName, ResourceDisplayName 
| where ConditionalAccessPolicies != "[]" 
| where ResourceDisplayName == "Office 365 Exchange Online" or ResourceDisplayName =="Office 365 SharePoint Online" or ResourceDisplayName =="Azure Virtual Desktop" or ResourceDisplayName =="Windows 365" or ResourceDisplayName =="Windows Cloud Login"
| where ResourceDisplayName == "Office 365 Exchange Online" or ResourceDisplayName =="Office 365 SharePoint Online" 
//Add userPrincipalName if you want to filter  
// | where UserPrincipalName =="<user_principal_Name>" 
| 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"] 
| extend Result = case (SessionNotSatisfyResult contains 'SignInTokenProtection' or SessionNotSatisfyResult contains 'SignInTokenProtection', 'Block','Allow')
| summarize by Id,UserPrincipalName, AppDisplayName, Result 
| summarize Requests = count(), Users = dcount(UserPrincipalName), Block = countif(Result == "Block"), Allow = countif(Result == "Allow"), BlockedUsers = dcountif(UserPrincipalName, Result == "Block") by AppDisplayName 
| extend PctAllowed = round(100.0 * Allow/(Allow+Block), 2) 
| sort by Requests desc 

Результат этого запроса должен быть похож на следующий снимок экрана:

Снимок экрана с примером результатов запроса Log Analytics для поиска политик защиты маркеров.

В следующем примере запроса рассматривается журнал неинтерактивного входа за последние семь дней, выделяя заблокированные и разрешенные запросы пользователем.

Запросы пользователем
//Per users query 
// Select the log you want to query (SigninLogs or AADNonInteractiveUserSignInLogs ) 
//SigninLogs 
AADNonInteractiveUserSignInLogs 
// Adjust the time range below 
| where TimeGenerated > ago(7d) 
| project Id,ConditionalAccessPolicies, UserPrincipalName, AppDisplayName, ResourceDisplayName 
| where ConditionalAccessPolicies != "[]" 
| where ResourceDisplayName == "Office 365 Exchange Online" or ResourceDisplayName =="Office 365 SharePoint Online" or ResourceDisplayName =="Azure Virtual Desktop" or ResourceDisplayName =="Windows 365" or ResourceDisplayName =="Windows Cloud Login"
| where ResourceDisplayName == "Office 365 Exchange Online" or ResourceDisplayName =="Office 365 SharePoint Online" 
//Add userPrincipalName if you want to filter  
// | where UserPrincipalName =="<user_principal_Name>" 
| 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 
| extend Result = case (SessionNotSatisfyResult contains 'SignInTokenProtection' or SessionNotSatisfyResult contains 'SignInTokenProtection', 'Block','Allow')
| summarize by Id, UserPrincipalName, AppDisplayName, ResourceDisplayName,Result  
| summarize Requests = count(),Block = countif(Result == "Block"), Allow = countif(Result == "Allow") by UserPrincipalName, AppDisplayName,ResourceDisplayName 
| extend PctAllowed = round(100.0 * Allow/(Allow+Block), 2) 
| sort by UserPrincipalName asc   

В следующем примере запроса рассматривается журнал неинтерактивного входа за последние семь дней, который выделяет пользователей, использующих устройства, где состояние устройства Microsoft Entra ID не удовлетворяет требованиям политики условного доступа по защите токенов.

Устройства не соответствуют требованиям политики
AADNonInteractiveUserSignInLogs 
// Adjust the time range below 
| where TimeGenerated > ago(7d) 
| where TokenProtectionStatusDetails!= "" 
| extend parsedBindingDetails = parse_json(TokenProtectionStatusDetails) 
| extend bindingStatus = tostring(parsedBindingDetails["signInSessionStatus"]) 
| extend bindingStatusCode = tostring(parsedBindingDetails["signInSessionStatusCode"]) 
| where bindingStatusCode == 1003 
| summarize count() by UserPrincipalName 

Взаимодействие с конечным пользователем

Пользователь, зарегистрировавшийся или авторизовавшийся на своём поддерживаемом устройстве, не испытывает изменений при входе в приложение с поддержкой защиты токенов, когда включено требование использования защиты токенов.

Пользователь, который не зарегистрировал или не привязал свое устройство, и если политика защиты токенов включена, увидит следующий снимок экрана после аутентификации.

Снимок экрана с сообщением об ошибке защиты токена, когда устройство не зарегистрировано или не подключено.

Пользователь, не использующий поддерживаемое приложение, когда политика защиты токенов включена, увидит следующий снимок экрана после аутентификации.

Снимок экрана: сообщение об ошибке, когда политика защиты маркеров блокирует доступ.

Что такое основной маркер обновления?