Условный доступ: защита маркеров (предварительная версия)

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

Защита маркеров создает криптографическую безопасную связь между маркером и устройством (секретом клиента), в который он выдан. Без секрета клиента привязанный маркер не используется. Когда пользователь регистрирует устройство Windows 10 или более поздней версии в идентификаторе Microsoft Entra, его основное удостоверение привязано к устройству. Это означает: политика может гарантировать, что используются приложениями только привязанные маркеры сеанса входа (или обновления), известные как первичные маркеры обновления (PRT), используются приложениями при запросе доступа к ресурсу.

Внимание

Защита маркеров в настоящее время доступна в общедоступной предварительной версии. Дополнительные сведения о предварительных версиях см. в разделе "Условия универсальной лицензии для веб-служб". С помощью этой предварительной версии мы предоставляем возможность создать политику условного доступа, чтобы требовать защиту маркеров для маркеров входа (маркеров обновления) для определенных служб. Мы поддерживаем защиту маркеров для маркеров входа в условном доступе для классических приложений, обращаюющихся к Exchange Online и SharePoint Online на устройствах Windows.

Внимание

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

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

Примечание.

Мы можем обменять маркерами входа и маркерами обновления в этом содержимом. Эта предварительная версия в настоящее время не поддерживает маркеры доступа или веб-файлы cookie.

Screenshot showing a Conditional Access policy requiring token protection as the session control

Требования

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

  • Устройства с Windows 10 или более поздней версии, присоединенные к Microsoft Entra, гибридные присоединены к Microsoft Entra или зарегистрированные в Microsoft Entra.
  • приложение синхронизации OneDrive клиент версии 22.217 или более поздней версии
  • Собственный клиент Teams версии 1.6.00.1331 или более поздней
  • Power BI Desktop версии 2.117.841.0 (май 2023) или более поздней версии
  • Visual Studio 2022 или более поздней версии при использовании параметра входа проверка подлинности Windows брокера
  • Клиенты Office perpetual не поддерживаются

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

  • Внешние пользователи (Microsoft Entra B2B) не поддерживаются и не должны включаться в политику условного доступа.
  • Следующие приложения не поддерживают вход с помощью защищенных потоков маркеров, и пользователи блокируются при доступе к Exchange и SharePoint:
    • Модули PowerShell, обращающиеся к Exchange, SharePoint или Microsoft Graph область, обслуживаемые Exchange или SharePoint
    • Расширение PowerQuery для Excel
    • Расширения в Visual Studio Code с доступом к Exchange или SharePoint
    • Новый клиент предварительной версии Teams 2.1 блокируется после выхода из-за ошибки. Эта ошибка должна быть исправлена в будущем обновлении службы.
  • Следующие клиентские устройства Windows не поддерживаются:
    • Windows Server
    • Surface Hub
    • Системы Комнаты Microsoft Teams на основе Windows (MTR)

Требования к лицензированию

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

Примечание.

Принудительное применение маркеров является частью Защита идентификации Microsoft Entra и будет частью лицензии P2 в общедоступной доступности.

Развертывание

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

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

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

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

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

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

Screenshot of a configured Conditional Access policy and its components.

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

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

      1. Office 365 Exchange Online
      2. Office 365 SharePoint Online

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

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

    2. Выберите Выбрать.

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

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

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

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

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

Сбор журналов и анализ

Мониторинг принудительного применения условного доступа защиты маркеров до и после применения.

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

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

  1. Войдите в Центр администрирования Microsoft Entra как минимум условный доступ Администратор istrator.
  2. Перейдите к журналам мониторинга удостоверений и работоспособности>>входа.
  3. Выберите конкретный запрос, чтобы определить, применяется ли политика.
  4. Перейдите в область условного доступа или только для отчетов в зависимости от его состояния и выберите имя политики, требующей защиты маркеров.
  5. В разделе "Элементы управления сеансами" проверка, чтобы узнать, были ли выполнены требования политики.

Screenshot showing an example of a policy not being satisfied.

Служба Log Analytics

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

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

Примечание.

Выходные данные журнала входа: значение строки, используемой в "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" 
//Add userPrinicpalName 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 

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

Screenshot showing example results of a Log Analytics query looking for token protection policies

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

//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" 
//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   

Следующие шаги