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

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

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

Важно!

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

Важно!

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

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

Примечание

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

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

Требования

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

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

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

  • Внешние пользователи (Azure AD 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)

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

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

Примечание

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

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

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

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

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

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

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

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

Снимок экрана: настроенная политика условного доступа и ее компоненты.

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

  1. Войдите в Центр администрирования Microsoft Entra как минимум администратор условного доступа.
  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 Web, будут заблокированы.

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

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

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

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

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

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

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

Снимок экрана: пример неуправляемой политики.

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 

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

Снимок экрана: пример результатов запроса 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" 
//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   

Дальнейшие действия