Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обзор
В этом руководстве рассматриваются действия, необходимые для развертывания и обеспечения защиты сессионных токенов входа на платформах Apple (iOS, iPadOS и macOS). Защита токенов на платформах Apple в настоящее время находится в предварительной версии.
Перед использованием этого руководства по развертыванию ознакомьтесь с защитой токенов в условном доступе Microsoft Entra для обзора функциональных возможностей и поддерживаемых платформ.
Это важно
Собственные приложения Почты и календаря Apple не поддерживают защиту маркеров. При применении политики будет заблокирован доступ пользователей к ресурсам, защищенным с помощью защиты токенов. Сообщите об этом поведении затронутым пользователям перед развертыванием.
Необходимые условия
Для использования этой функции требуются лицензии Microsoft Entra ID P1. Чтобы найти нужную лицензию для ваших требований, см. статью Сравнение общедоступных функций Microsoft Entra ID.
Поддерживаемые приложения и ресурсы
Следующие приложения и ресурсы охватываются защитой токенов на платформах Apple. Просмотрите эти списки перед применением политики.
Приложения
Защита токенов может применяться к следующим приложениям.
| Application | iOS/iPadOS | macOS |
|---|---|---|
| Портал компании Intune | ✅ | ✅ |
| Microsoft Authenticator | ✅ | |
| Microsoft Edge (поддержка входа только в профиль Edge)* | ✅ | ✅ |
| Цикл Майкрософт | ✅ | |
| Microsoft OneNote | ✅ | ✅ |
| Microsoft SharePoint | ✅ | |
| Microsoft Teams | ✅ | ✅ |
| Microsoft To Do (Электронный список дел) | ✅ | ✅ |
| OneDrive | ✅ | ✅ |
| Outlook | ✅ | ✅ |
| Visual Studio Code | ✅ | |
| Word, Excel, PowerPoint | ✅ | ✅ |
*Защита маркеров в настоящее время поддерживает только нативные приложения. Приложения на основе браузера не поддерживаются.
Поддерживаемые ресурсы
Защита токенов на платформах Apple может использоваться для защиты следующих ресурсов:
- Обмен онлайн
- SharePoint Online
- Microsoft Teams
Известные ограничения
- В настоящее время для защиты токенов требуется подключаемый модуль единого входа Microsoft Enterprise, для которого требуется Управление мобильными устройствами (MDM). В настоящее время неуправляемые устройства iOS и macOS не поддерживаются.
- Собственные приложения Почты и календаря Apple не поддерживают защиту маркеров. При применении политики будет заблокирован доступ пользователей к ресурсам, защищенным с помощью защиты токенов.
- В режиме только для отчетов запросы, которые не используют регистрацию устройства с поддержкой оборудования, отображаются как несоответствующие, даже если пользователь имеет право на обновление до регистрации устройства с поддержкой оборудования. Используйте журналы входа и коды состояния для оценки истинной готовности. Ознакомьтесь с разделом "Проверка готовности к просмотру" с журналами и метриками .
- Защита токенов — столбец "Сеанс входа" в журналах входа отображает все запросы без аппаратного удостоверения устройства как "Unbound". Эти журналы включают запросы от пользователей, которые имеют право обновить регистрацию.
- Поддерживаются внешние пользователи, отвечающие требованиям к регистрации устройств защиты токенов в своем домашнем арендодателе. Пользователи, которые не соответствуют этим требованиям, увидят сообщение об ошибке без четкого указания первопричины.
Как включить защиту токенов на платформах Apple
В отличие от Windows, платформы Apple не используют доверенный модуль платформы (TPM). Вместо этого Microsoft Entra ID использует Apple Secure Enclave для хранения ключей подтверждения владения. На устройствах macOS без безопасного анклава (например, некоторые старые модели Mac mini), Microsoft Entra ID возвращается к расширенной версии цепочки ключей Apple (цепочка ключей защиты данных).
Это различие означает, что требуется определенная конфигурация предварительных требований, прежде чем пользователи смогут регистрировать устройства таким образом, чтобы обеспечить принудительное применение защиты маркеров.
Ниже приведены высокоуровневые шаги по включению защиты токенов на платформах Apple.
- Настройка регистрации устройства с аппаратной защитой
- Настройка политики условного доступа только для отчета
- Проверка готовности с помощью журналов и метрик
- Принудительное применение политики
Настройка регистрации устройства с поддержкой оборудования
Выполните следующие действия для каждой платформы, в которую вы развертываете. Эти действия необходимо выполнить перед регистрацией устройств пользователями.
Замечание
Пользователям, зарегистрированным перед выполнением этих действий, будет предложено ввести свои учетные данные при первом доступе к ресурсу, защищенному политикой защиты маркеров. После успешного прохождения аутентификации регистрация устройства автоматически переводится на аппаратное хранилище. Дополнительные сведения см. в разделе "Обновление регистрации устройств".
- Установите Microsoft Authenticator из Apple App Store или разверните его с помощью решения MDM. Authenticator служит брокером аутентификации для входа в Microsoft Entra.
- Включите аппаратную регистрацию с помощью плагина Microsoft Enterprise SSO для устройств Apple.
- Установите флаг
use_most_secure_storage.- Флаг применяется только к новым регистрациям устройств после настройки флага.
- Для устройств, зарегистрированных в Intune, флаг применяется также к регистрациям, сделанным через приложение Intune Company Portal, даже до того, как устройство стало управляемым MDM.
- Для всех остальных регистраций флаг вступает в силу только после того, как устройство находится под управлением MDM, и активен профиль подключаемого модуля Microsoft Enterprise SSO.
Настройка политики режима отчетности
Перед применением политики разверните его в режиме только для отчета, чтобы оценить эффект и определить несоответствующие сеансы входа.
- Войдите в центр администрирования Microsoft Entra как минимум в качестве администратора условного доступа.
- Перейдите к Entra ID>условному доступу>политикам.
- Присвойте политике имя. Создайте значимый стандарт для наименований ваших политик.
- В разделе «Назначения» выберите «Пользователи», «Агенты» или «Идентификаторы рабочих нагрузок».
- В разделе "Включить" выберите пользователей или группы для целевого объекта.
- В разделе Исключить выберите Пользователи и группы и укажите учетные записи аварийного доступа или обходные учетные записи вашей организации.
- В разделе Целевые ресурсы>Ресурсы (ранее облачные приложения)>Включить>Выберите ресурсы
В разделе "Выбрать" выберите следующие приложения:
- Office 365 Exchange Online
- Office 365 SharePoint Online
Предупреждение
Политика условного доступа должна быть настроена только для этих приложений. Выбор группы приложений Office 365 может привести к непредвиденным сбоям. Это изменение является исключением из общего правила, что в политике условного доступа следует выбрать группу приложений Office 365.
Нажмите кнопку "Выбрать".
- В разделе Условия:
- В разделе Платформы устройств:
- Задайте для параметра Настроить значение Да.
- Включить>Выберите платформы устройств>iOS и macOS.
- Нажмите кнопку Готово.
- В клиентских приложениях:
Задайте для параметра Настроить значение Да.
Предупреждение
Не настраивая условие клиентских приложений или оставляя выбранным браузер, может привести к блокировке приложений, использующих MSAL.js, таких как Teams Web.
В разделе "Клиенты с современной проверкой подлинности" выберите только мобильные приложения и настольные клиенты. Оставьте остальные элементы без флажка.
Нажмите кнопку Готово.
- В разделе Платформы устройств:
- В разделе
управления доступом Сеанс выберите"Требовать защиту токенов для сеансов входа" и нажмите"Выбрать". - Подтвердите параметры и установите включение политики в режим только для отчетов.
- Щелкните Создать, чтобы включить эту политику.
Подсказка
Так как политики условного доступа, требующие защиты маркеров, в настоящее время доступны только для Windows и устройств Apple, необходимо защитить среду от потенциального обхода политики, когда злоумышленник может появиться на другой платформе.
Кроме того, следует настроить следующие политики:
Проверка готовности с помощью журналов и метрик
После внедрения и запуска политики только для отчета, важно просмотреть влияние политики, проанализировать журналы входа и исследовать с помощью Log Analytics для проверки готовности к применению.
Журналы логов входа
Чтобы просмотреть события входа, связанные с защитой токенов, в центре администрирования:
- Войдите в центр администрирования Microsoft Entra как минимум в качестве администратора условного доступа.
- Перейдите к Entra ID>Мониторинг и работоспособность>Журналы входов в систему.
- Добавьте в представление столбец Код состояния сеанса для защиты токенов, чтобы быстро увидеть связанные события входа.
- Выберите событие входа, которое вы изучаете.
- Просмотрите вкладки условного доступа и только для отчетов (в зависимости от состояния политики) и выберите политику защиты маркеров.
- В разделе "Элементы управления сеансами" проверьте, выполнены ли требования политики.
- Перейдите на вкладку "Основные сведения" и проверьте поле "Защита маркеров - Сеанс входа" для получения дополнительной информации.
Журналы входа включают tokenProtectionStatusDetails свойство, указывающее, использует ли запрос токен, привязанный к устройству.
"tokenProtectionStatusDetails": {
"signInSessionStatus": "bound | unbound",
"signInSessionStatusCode": <code>
}
Замечание
Пользователям на устройствах, зарегистрированных в Microsoft Entra ID до применения политики защиты маркеров, будет предложено повторно выполнить проверку подлинности после применения политики. Для доступа к ресурсам им потребуется выполнить однократное обновление регистрации устройства, а затем снова войти в систему. Эти пользователи могут быть идентифицированы кодами состояния 1003 и 1004. Так как пользователи в этом состоянии могут самостоятельно исправляться, они имеют право на применение политик.
Чтобы определить, к каким пользователям можно применить политику, см. следующие коды состояния.
| Код состояния | Описание | Требуется действие |
|---|---|---|
| 1002 | Несвязанный — запрос не ограничен из-за отсутствия состояния устройства Microsoft Entra ID. | Пользователь должен зарегистрировать устройство |
| 1003 | Не связано — устройство не зарегистрировано с безопасными учетными данными (прошлая регистрация) | Пользователь должен выполнить однократное обновление регистрации |
| 1004 | Отмена подключения — регистрация устройств не поддерживается оборудованием | Пользователь должен выполнить однократное обновление регистрации |
| 1005 | Отмена подключения — неопределенная причина | Меняется |
| 1006 | Отмена подключения — версия ОС не поддерживается | Пользователь должен обновить ОС |
| 1007 | Несвязанный — не поддерживается оборудованием; Вошедший пользователь не является зарегистрированным владельцем устройства. | Пользователь должен повторно зарегистрировать или зарегистрированный владелец должен выполнить обновление |
| 1008 | Unbound — клиент не использует брокер удостоверений | Запрос не привязан, так как клиент не интегрирован с брокером платформы или приложение брокера не установлено на устройстве. |
Чтобы определить запросы, совместимые или обновляемые с помощью действия пользователя, отфильтруйте следующие параметры:
-
signInSessionStatus== ограничивающий или -
signInSessionStatus== непривязан сsignInSessionStatusCode1003 или 1004
Пример запроса Microsoft Graph (неинтерактивные входы в систему): GET https://graph.microsoft.com/beta/auditLogs/signIns?$filter=(signInEventTypes/any(t: t eq 'nonInteractiveUser') and (tokenProtectionStatusDetails/signInSessionStatusCode eq 1003 or tokenProtectionStatusDetails/signInSessionStatusCode eq 1004 or tokenProtectionStatusDetails/signInSessionStatus eq 'bound'))
Log Analytics
Вы также можете использовать Log Analytics для запросов к интерактивным и неинтерактивным журналам регистрации для заблокированных запросов из-за сбоя применения политики защиты токенов.
В следующем примере запроса выполняется поиск журналов неинтерактивного входа за последние семь дней, выделение заблокированных и разрешенных запросов по приложению. Эти запросы являются только примерами и подлежат изменению.
Примеры запросов:
В следующем примере запроса Log Analytics выполняется поиск журналов неинтерактивного входа за последние семь дней, выделены запросы Blocked и Allowed по Application.
Запросы по приложению
// Per-app 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, TokenProtectionStatusDetails
| where ConditionalAccessPolicies != "[]"
| where ResourceDisplayName == "Office 365 Exchange Online"
or ResourceDisplayName == "Office 365 SharePoint Online"
// Add UserPrincipalName if you want to filter to a specific user
// | 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 'Binding', 'Block', 'Allow')
| extend parsedBindingDetails = parse_json(TokenProtectionStatusDetails)
| extend bindingStatusCode = tostring(parsedBindingDetails["signInSessionStatusCode"])
| extend IsSelfRemediable = Result == "Block"
and (bindingStatusCode == "1003" or bindingStatusCode == "1004")
| summarize by Id, UserPrincipalName, AppDisplayName, Result, IsSelfRemediable
| summarize Requests = count(),
Users = dcount(UserPrincipalName),
Allow = countif(Result == "Allow"),
Block = countif(Result == "Block"),
BlockSelfRemediable = countif(IsSelfRemediable == true),
BlockedUsers = dcountif(UserPrincipalName, Result == "Block"),
BlockedUsersSelfRemediable = dcountif(UserPrincipalName, IsSelfRemediable == true)
by AppDisplayName
| extend PctAllowed = round(100.0 * Allow / (Allow + Block), 2)
| extend PctEnforceable = round(100.0 * (Allow + BlockSelfRemediable) / (Allow + Block), 2)
| project AppDisplayName, Requests, Users, Allow, Block,
BlockSelfRemediable,
BlockedUsers, BlockedUsersSelfRemediable,
PctAllowed, PctEnforceable
| sort by Requests desc
В следующем примере запроса рассматривается журнал неинтерактивного входа за последние семь дней, выделяя заблокированные и разрешенные запросы пользователем.
Запросы пользователем
Следующий запрос выполняет поиск журналов неинтерактивного входа за последние семь дней, выделение заблокированных и разрешенных запросов пользователем.
// Per-user 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, TokenProtectionStatusDetails
| where ConditionalAccessPolicies != "[]"
| where ResourceDisplayName == "Office 365 Exchange Online"
or ResourceDisplayName == "Office 365 SharePoint Online"
// Add UserPrincipalName if you want to filter to a specific user
// | 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 'Binding', 'Block', 'Allow')
| extend parsedBindingDetails = parse_json(TokenProtectionStatusDetails)
| extend bindingStatusCode = tostring(parsedBindingDetails["signInSessionStatusCode"])
| extend IsSelfRemediable = Result == "Block"
and (bindingStatusCode == "1003" or bindingStatusCode == "1004")
| summarize by Id, UserPrincipalName, AppDisplayName, ResourceDisplayName, Result, IsSelfRemediable
| summarize Requests = count(),
Allow = countif(Result == "Allow"),
Block = countif(Result == "Block"),
BlockSelfRemediable = countif(IsSelfRemediable == true)
by UserPrincipalName, AppDisplayName, ResourceDisplayName
| extend PctAllowed = round(100.0 * Allow / (Allow + Block), 2)
| extend PctEnforceable = round(100.0 * (Allow + BlockSelfRemediable) / (Allow + Block), 2)
| project UserPrincipalName, AppDisplayName, ResourceDisplayName,
Requests, Allow, Block, BlockSelfRemediable,
PctAllowed, PctEnforceable
| sort by UserPrincipalName asc
В следующем примере запроса рассматривается журнал неинтерактивного входа за последние семь дней, который выделяет пользователей, использующих устройства, где состояние устройства Microsoft Entra ID не удовлетворяет требованиям политики условного доступа по защите токенов.
Устройства не соответствуют требованиям политики
Следующий запрос выполняет поиск в журналах неинтерактивных входов за последние семь дней, чтобы определить пользователей, чьи устройства не соответствуют требованиям политики защиты токенов и подходят для обновления регистрации устройства. Этот запрос полезен на этапе, когда система работает только в режиме отчетности. Определяемые пользователи с кодами состояния 1003 и 1004 будут запрашивать однократное обновление регистрации при применении политики, что позволяет заранее сообщить об изменении или предоставить рекомендации перед применением.
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"])
// Status code 1003: legacy registration — user can self-remediate with a one-time upgrade
// Status code 1004: not hardware-backed — user can self-remediate with a one-time upgrade
| where bindingStatusCode == "1003" or bindingStatusCode == "1004"
| summarize count() by UserPrincipalName
Принудительное применение политики
После просмотра данных журнала входа и подтверждения готовности целевых пользователей и устройств, переместите переключатель политики Включить из положения Только отчетность в Включено.
Сообщите об изменении затронутых пользователей и вашей группе технической поддержки заранее, особенно отметив:
- Пользователям, которым будет предложено обновить регистрацию устройства.
- Пользователи собственных приложений Почты и календаря Apple, которые будут заблокированы.
Взаимодействие с конечным пользователем
1. При развертывании защиты токенов необходимо учитывать определенные аспекты опыта конечных пользователей.
Обновление регистрации устройства
Пользователям на устройствах, зарегистрированных в Microsoft Entra ID до применения политики защиты маркеров, будет предложено повторно выполнить проверку подлинности после применения политики. Для доступа к ресурсам им потребуется снова войти.
Неподдерживаемые приложения
Если включена политика защиты токенов, пользователи, не использующие поддерживаемое приложение, увидят следующий экран после аутентификации.