Поделиться через


Защита токенов в условном доступе Microsoft Entra

Защита токенов — это управление сеансами условного доступа, которое пытается уменьшить атаки на воспроизведение токенов, гарантируя, что только маркеры сеанса, привязанные к устройствам, такие как Первичные Маркеры Обновления (PRT), принимаются Entra ID, когда приложения запрашивают доступ к защищаемым ресурсам.

Когда пользователь регистрирует устройство с Windows 10 или более поздней версией в Microsoft Entra, выдается PRT, который криптографически привязан к этому устройству. Эта привязка гарантирует, что даже если субъект угроз украл токен, его нельзя использовать с другого устройства. При принудительном применении защиты маркеров, Microsoft Entra проверяет, используются ли только эти привязанные маркеры сеанса аутентификации поддерживаемыми приложениями.

Вы можете применить политику защиты токенов в ресурсах Exchange Online, SharePoint Online и Teams. Она поддерживается многими собственными приложениями Microsoft 365. Полный список поддерживаемых приложений и ресурсов см. в разделе "Требования".

Note

Используйте эту политику в рамках более широкой стратегии против кражи токенов, как описано в разделе "Защита токенов" в Microsoft Entra.

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

Requirements

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

Следующие устройства и приложения поддерживают доступ к ресурсам, к которым применяется политика условного доступа защиты токена:

Поддерживаемые устройства

  • Устройства с Windows 10 или более поздней версии, присоединенные к Microsoft Entra, гибридно присоединенные к Microsoft Entra или зарегистрированные в Microsoft Entra. Ознакомьтесь с разделом известных ограничений для неподдерживаемых типов устройств.
  • Windows Server 2019 или более поздняя версия, подключенные к гибридной среде Microsoft Entra.

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

  • Клиент синхронизации OneDrive версии 22.217 или более поздней версии
  • Собственный клиент Teams версии 1.6.00.1331 или более поздней
  • Power BI Desktop версии 2.117.841.0 (май 2023) или новее
  • Модуль Exchange PowerShell версии 3.7.0 или более поздней версии
  • Microsoft Graph PowerShell версии 2.0.0 или более поздней с параметром EnableLoginByWAM
  • Visual Studio 2022 или более поздней версии при использовании параметра входа брокера проверки подлинности Windows
  • Windows App версии 2.0.379.0 или более поздней

Следующие ресурсы поддерживают защиту токенов:

  • Office 365Exchange Online
  • Office 365 SharePoint Online
  • Службы Microsoft Teams
  • Виртуальный рабочий стол Azure
  • Windows 365

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

  • Бессрочные клиенты Office не поддерживаются.
  • Следующие приложения не поддерживают вход с помощью защищенных потоков маркеров, и пользователи блокируются при доступе к Exchange и SharePoint:
    • Модули PowerShell, обращающиеся к SharePoint
    • Расширение PowerQuery для Excel
    • Расширения в Visual Studio Code с доступом к Exchange или SharePoint
  • Следующие клиентские устройства Windows не поддерживаются:
    • Surface Hub
    • Системы залы Microsoft Teams на платформе Windows (MTR)
  • Поддерживаются внешние пользователи, отвечающие требованиям к регистрации устройств защиты токенов в своем домашнем арендодателе. Однако пользователи, которые не соответствуют этим требованиям, видят неясное сообщение об ошибке без указания первопричины.
  • Устройства, зарегистрированные в идентификаторе Microsoft Entra с помощью следующих методов, не поддерживаются:
    • Microsoft Entra присоединился к серверам сеансов Azure Virtual Desktop.
    • Устройства Windows, развернутые с использованием массовой регистрации .
    • Облачные компьютеры, развернутые с помощью Windows 365, подключенные к Microsoft Entra.
    • Группы размещенных машин Power Automate, присоединенные к Microsoft Entra.
    • Устройства Windows Autopilot, развернутые с помощью режима самостоятельного развертывания.
    • Виртуальные машины Windows, развернутые в Azure с использованием расширения виртуальной машины (VM), настроенные для аутентификации по идентификатору Microsoft Entra.

Чтобы определить затронутые устройства из-за неподдерживаемых типов регистрации, перечисленных ранее, проверьте 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".
  • Виртуальные машины Windows в Azure, подключенные к Microsoft Entra, можно использовать profileType -eq "SecureVM" and trustType -eq "AzureAD".

Deployment

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

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

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

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

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

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

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

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

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

      Warning

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

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

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

        Warning

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

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

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

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

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

Tip

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

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

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

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

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

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

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

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

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

Log Analytics

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

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

Note

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

//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, который не удовлетворяет требованиям политики условного доступа (CA) защиты токенов.

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 

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

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

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

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

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

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

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