Условный доступ: защита маркеров (предварительная версия)
Защита маркеров (иногда называемая привязкой маркеров в отрасли) пытается уменьшить атаки с помощью кражи маркеров, гарантируя, что маркер доступен только с предполагаемого устройства. Когда злоумышленник может украсть токен, перехватив или переиграв, он может олицетворить свою жертву до истечения срока действия или отзыва маркера. Кража маркеров считается относительно редким событием, но ущерб от него может быть значительным.
Защита маркеров создает криптографическую безопасную связь между маркером и устройством (секретом клиента), в который он выдан. Без секрета клиента привязанный маркер не используется. Когда пользователь регистрирует устройство Windows 10 или более поздней версии в идентификаторе Microsoft Entra, его основное удостоверение привязано к устройству. Это означает: политика может гарантировать, что используются приложениями только привязанные маркеры сеанса входа (или обновления), известные как первичные маркеры обновления (PRT), используются приложениями при запросе доступа к ресурсу.
Маңызды
Защита маркеров в настоящее время доступна в общедоступной предварительной версии. Дополнительные сведения о предварительных версиях см. в разделе "Условия универсальной лицензии для веб-служб". С помощью этой предварительной версии мы предоставляем возможность создать политику условного доступа, чтобы требовать защиту маркеров для маркеров входа (маркеров обновления) для определенных служб. Мы поддерживаем защиту маркеров для маркеров входа в условном доступе для классических приложений, обращаюющихся к Exchange Online и SharePoint Online на устройствах Windows.
Маңызды
Следующие изменения были внесены в защиту токенов с момента первоначального общедоступного предварительного выпуска:
- Выходные данные журнала входа: значение строки, используемой в "enforcedSessionControls" и "sessionControlsNotSatisfied", изменилось с Binding на SignInTokenProtection в конце июня 2023 года. Запросы к данным журнала входа должны обновляться, чтобы отразить это изменение.
Ескерім
Мы можем обменять маркерами входа и маркерами обновления в этом содержимом. Если вы хотите обеспечить защиту маркеров доступа Microsoft 365 и файлов cookie сеансов приложений, попробуйте выполнить проверку сети, соответствующую требованиям.
Эта предварительная версия поддерживает следующие конфигурации для доступа к ресурсам с примененными политиками условного доступа защиты маркеров:
- Устройства с 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 в общедоступной доступности.
Для пользователей развертывание политики условного доступа для принудительного применения защиты маркеров должно быть невидимым при использовании совместимых клиентских платформ на зарегистрированных устройствах и совместимых приложениях.
Чтобы свести к минимуму вероятность нарушения работы пользователей из-за несовместимости приложений или устройств, настоятельно рекомендуется:
- Начните с пилотной группы пользователей и развернитесь со временем.
- Создайте политику условного доступа в режиме только для отчетов перед переходом к принудительному применению защиты маркеров.
- Записывайте журналы интерактивного и неинтерактивного входа.
- Анализ этих журналов достаточно долго, чтобы покрыть обычное использование приложения.
- Добавьте известных хороших пользователей в политику принудительного применения.
Этот процесс помогает оценить совместимость клиента и приложений пользователей для применения защиты маркеров.
Пользователи, выполняющие специализированные роли, такие как описанные в разделе "Уровни безопасности привилегированного доступа", являются возможными целевыми объектами для этой функции. Мы рекомендуем начать пилотную работу с небольшим подмножеством.
Описанные ниже действия помогут создать политику условного доступа, чтобы требовать защиту маркеров для Exchange Online и SharePoint Online на устройствах Windows.
- Войдите в Центр администрирования Microsoft Entra в качестве администратора условного доступа.
- Перейдите к политикам условного доступа>защиты>.
- Выберите Новая политика.
- Присвойте политике имя. Мы рекомендуем организациям присваивать политикам понятные имена.
- В разделе Назначения выберите Идентификаторы пользователей или рабочих нагрузок.
- В разделе "Включить" выберите пользователей или группы, которые тестируют эту политику.
- В разделе Исключить выберите Пользователи и группы, а затем выберите учетные записи для аварийного доступа или для обхода стандартной системы контроля доступа в вашей организации.
- В разделе "Целевые ресурсы>" (ранее облачные приложения)>Включить>ресурсы select
В разделе "Выбор" выберите следующие приложения, поддерживаемые предварительной версией:
- Office 365 Exchange Online
- Office 365 SharePoint Online
Ескерту
Политика условного доступа должна быть настроена только для этих приложений. Выбор группы приложений Office 365 может привести к непредвиденным сбоям. Это исключение из общего правила, которое группа приложений Office 365 должна быть выбрана в политике условного доступа.
Выберите Выбрать.
- В условиях:
- На платформах устройств:
- Задайте для параметра Настроить значение Да.
- Включить>выбор платформ>устройств Windows.
- Нажмите кнопку Готово.
- В клиентских приложениях:
- Задайте для параметра Настроить значение Да.
Ескерту
Не настраивая условие клиентских приложений или оставляя выбранный браузер , может привести к блокировке приложений, использующих MSAL.js, таких как Веб-сайт Teams.
- В разделе "Современные клиенты проверки подлинности" выберите только мобильные приложения и классические клиенты. Оставьте остальные элементы без флажка.
- Нажмите кнопку Готово.
- Задайте для параметра Настроить значение Да.
- На платформах устройств:
- В разделе "Сеанс управления доступом>" выберите "Требовать защиту маркеров" для сеансов входа и нажмите кнопку "Выбрать".
- Подтвердите параметры и задайте для параметра Включить политику значение Только отчет.
- Нажмите Создать, чтобы создать и включить политику.
После подтверждения параметров в режиме "только отчет" администратор может перевести переключатель Включить политику из положения Только отчет в положение Вкл.
Мониторинг принудительного применения условного доступа защиты маркеров до и после применения.
Используйте журнал входа Microsoft Entra, чтобы проверить результат политики применения защиты маркеров только в режиме отчета или в включенном режиме.
- Войдите в Центр администрирования Microsoft Entra в качестве администратора условного доступа.
- Перейдите к журналам мониторинга удостоверений и работоспособности>>входа.
- Выберите конкретный запрос, чтобы определить, применяется ли политика.
- Перейдите в область условного доступа или только для отчетов в зависимости от его состояния и выберите имя политики, требующей защиты маркеров.
- В разделе "Элементы управления сеансами" проверьте, выполнены ли требования политики.
Вы также можете использовать 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
Результат предыдущего запроса должен быть похож на следующий снимок экрана:
В следующем примере запроса рассматривается журнал неинтерактивного входа за последние семь дней, выделение заблокированных и разрешенных запросов пользователем.
//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