Пакет SDK для приложений Intune для iOS — несколько удостоверений
Примечание.
Это руководство разделено на несколько отдельных этапов. Начните с просмотра этапа 1. Планирование интеграции.
Этап 5. Несколько удостоверений (необязательно)
По умолчанию пакет SDK применяет политику к приложению в целом. Использование нескольких удостоверений — это функция MAM, которую можно включить для применения политики на уровне каждого удостоверения. Для этого требуется большее участие приложений, чем другие функции MAM.
Приложение должно сообщить пакету SDK для приложения, когда оно намерено изменить активное удостоверение. Пакет SDK также уведомляет приложение о необходимости изменения удостоверения. В настоящее время поддерживается только одно управляемое удостоверение. После регистрации устройства или приложения пакет SDK использует это удостоверение и считает его основным управляемым удостоверением. Другие пользователи в приложении будут рассматриваться как неуправляемые с неограниченными параметрами политики.
Обратите внимание, что удостоверение просто определяется как строка. Удостоверения не учитывают регистр. Запросы к пакету SDK для удостоверения могут не возвращать тот же регистр, который использовался при установке удостоверения.
Цели этапа
- Определите, требуется ли приложению поддержка нескольких удостоверений.
- Узнайте, как пакет SDK для приложений Intune воспринимает удостоверения.
- Рефакторинг приложения для информирования о удостоверении.
- Добавьте код для информирования пакета SDK об активных и изменяющихся удостоверениях во всем приложении.
- Тщательно протестируйте применение политики защиты приложений для управляемых и неуправляемых удостоверений.
Обзор удостоверений
Удостоверение — это просто имя пользователя учетной записи (например, user@contoso.com). Разработчики могут задать удостоверение приложения на следующих уровнях:
Удостоверение процесса. Задает удостоверение на уровне процесса и в основном используется для приложений с одним удостоверением. Это удостоверение влияет на все задачи, файлы и пользовательский интерфейс.
Удостоверение пользовательского интерфейса. Определяет, какие политики применяются к задачам пользовательского интерфейса в основном потоке, таким как вырезать, копировать и вставить, ПИН-код, проверку подлинности и общий доступ к данным. Удостоверение пользовательского интерфейса не влияет на такие задачи файлов, как шифрование и резервное копирование.
Удостоверение потока. Влияет на политики, применяемые к текущему потоку. Это удостоверение влияет на все задачи, файлы и пользовательский интерфейс.
Приложение отвечает за соответствующую настройку удостоверений независимо от того, управляется ли пользователь.
В любой момент каждый поток имеет эффективное удостоверение для задач пользовательского интерфейса и задач файлов. Это удостоверение, которое используется для проверки того, какие политики должны применяться( если таковые есть). Если удостоверение не является идентификатором или пользователь не управляется, политики применяться не будут. На приведенных ниже схемах показано, как определяются действующие удостоверения.
Очереди потоков
Приложения часто отправляют асинхронные и синхронные задачи в очереди потоков. Пакет SDK перехватывает вызовы Grand Central Dispatch (GCD) и связывает текущее удостоверение потока с отправляемыми задачами. По завершении задач пакет SDK временно изменяет удостоверение потока на удостоверение, связанное с задачами, завершает задачи, а затем восстанавливает исходное удостоверение потока.
Так как NSOperationQueue
создан на основе GCD, NSOperations
будет выполняться на идентификаторе потока при добавлении задач в NSOperationQueue
.
NSOperations
или функции, отправляемые непосредственно через GCD, также могут изменять текущее удостоверение потока при выполнении. Это удостоверение переопределит удостоверение, унаследованное от потока отправки.
В быстром случае из-за того, как пакет SDK распространяет удостоверения для DispatchWorkItem
, удостоверение, связанное с DispatchWorkItem
, является удостоверением потока, создавшего элемент, а не потоком, который его отправляет.
Владелец файла
Пакет SDK отслеживает удостоверения локальных владельцев файлов и соответствующим образом применяет политики. Владелец файла устанавливается при создании файла или при открытии файла в режиме усечения. Для владельца устанавливается действующее удостоверение задачи файла потока, выполняющего задачу.
Кроме того, приложения могут явно задать удостоверение владельца файла с помощью IntuneMAMFilePolicyManager
. Приложения могут использовать IntuneMAMFilePolicyManager
для получения владельца файла и задания удостоверения пользовательского интерфейса перед отображением содержимого файла.
Общие данные
Если приложение создает файлы с данными как от управляемых, так и от неуправляемых пользователей, оно отвечает за шифрование данных управляемого пользователя. Вы можете зашифровать данные с помощью protect
API и unprotect
в IntuneMAMDataProtectionManager
.
Метод protect
принимает удостоверение, которое может быть управляемым или неуправляемым пользователем. Если пользователь управляется, данные будут зашифрованы. Если пользователь неуправляем, к данным, которые кодируют удостоверение, добавляется заголовок, но данные не будут зашифрованы. Для получения владельца данных можно использовать protectionInfo
метод .
Общий доступ к расширениям
Если приложение имеет расширение общей папки, владелец элемента, к которым предоставляется общий доступ, можно получить с помощью protectionInfoForItemProvider
метода в IntuneMAMDataProtectionManager
. Если общий элемент является файлом, пакет SDK обработает настройку владельца файла. Если общий элемент является данным, приложение отвечает за настройку владельца файла, если эти данные сохраняются в файле, и за вызов setUIPolicyAccountId
API перед отображением этих данных в пользовательском интерфейсе.
Включение нескольких удостоверений
По умолчанию приложения считаются одним удостоверением. Пакет SDK задает удостоверение процесса для зарегистрированного пользователя. Чтобы включить поддержку нескольких удостоверений, добавьте логический параметр с именем MultiIdentity
и значением YES в словарь IntuneMAMSettings в файле Info.plist приложения.
Примечание.
Если включена поддержка нескольких удостоверений, для удостоверения процесса, удостоверения пользовательского интерфейса и удостоверений потоков устанавливается значение nil. Приложение отвечает за их правильную настройку.
Переключение удостоверений
Переключатель удостоверений, инициированный приложением:
При запуске приложения с несколькими удостоверениями считаются запущенными в неизвестной неуправляемой учетной записи. Пользовательский интерфейс условного запуска не запускается, и политики не будут применяться к приложению. Приложение отвечает за уведомление пакета SDK при каждом изменении удостоверения. Как правило, это происходит всякий раз, когда приложение будет показывать данные для определенной учетной записи пользователя.
Например, пользователь пытается открыть документ, почтовый ящик или вкладку в записной книжке. Приложение должно уведомить пакет SDK перед открытием файла, почтового ящика или вкладки. Это делается через
setUIPolicyAccountId
API вIntuneMAMPolicyManager
. Этот API следует вызывать независимо от того, управляется ли пользователь. Если пользователь управляется, пакет SDK будет выполнять проверки условного запуска, такие как обнаружение джейлбрейка, ПИН-код и проверка подлинности.Результат переключения удостоверений возвращается в приложение асинхронно с помощью обработчика завершения. Приложение должно отложить открытие документа, почтового ящика или вкладки до тех пор, пока не будет возвращен код успешного результата. Если переключение удостоверений завершилось сбоем, приложение должно отменить задачу.
Приложения с несколькими удостоверениями следует избегать использования
setProcessAccountId
в качестве способа установки удостоверения. Приложения, использующие UIScenes, должны использоватьsetUIPolicyAccountId:forWindow
API для задания удостоверения.Приложения также могут задать удостоверение для текущего потока с помощью
setCurrentThreadIdentity:
иsetCurrentThreadIdentity:forScope:
. Например, приложение может создать фоновый поток, задать для удостоверения управляемое удостоверение, а затем выполнить операции с файлами с управляемыми файлами. Если приложение используетsetCurrentThreadAccountId:
, приложение также должно использоватьgetCurrentThreadAccountId
, чтобы восстановить исходное удостоверение после его завершения. Однако если приложение используетsetCurrentThreadAccountId:forScope:
, восстановление старого удостоверения происходит автоматически. Рекомендуется использоватьsetCurrentThreadAccountId:forScope:
.В быстром времени из-за асинхронного или ожидания
[IntuneMAMPolicyManager setCurrentThreadAccountId:]
и[IntuneMAMPolicyManager setCurrentThreadAccountId:forScope:]
недоступны. Вместо этого в быстрой настройке текущего удостоверения используйтеIntuneMAMSwiftContextManager.setAccountId(_, forScope:)
. Существуют варианты этого API для асинхронных, броских и асинхронных замыкания, которые необходимо передать.Переключатель удостоверений, инициированный пакетом SDK:
Иногда пакет SDK должен попросить приложение переключиться на определенное удостоверение. Приложения с несколькими удостоверениями должны реализовать
identitySwitchRequiredForAccountId
метод вIntuneMAMPolicyDelegate
для обработки этого запроса.При вызове этого метода, если приложение может обработать запрос на переключение на указанное удостоверение, он должен передаваться
IntuneMAMAddIdentityResultSuccess
в обработчик завершения. Если не удается обработать переключение удостоверения, приложение должно передатьсяIntuneMAMAddIdentityResultFailed
в обработчик завершения.Приложению не нужно вызывать
setUIPolicyAccountId
в ответ на этот вызов. Если пакету SDK требуется, чтобы приложение переключилось на неуправляемую учетную запись пользователя, в вызов будет переданаidentitySwitchRequiredForAccountId
пустая строка.Автоматическая регистрация удостоверения, инициированного пакетом SDK:
Если пакету SDK необходимо автоматически зарегистрировать пользователя в приложении для выполнения действия, приложения должны реализовать
addIdentity:completionHandler:
метод вIntuneMAMPolicyDelegate
. Затем приложение должно вызвать обработчик завершения и передать intuneMAMAddIdentityResultSuccess, если приложение может добавить удостоверение или IntuneMAMAddIdentityResultFailed в противном случае.Выборочная очистка:
При выборочной очистке приложения пакет SDK вызовет
wipeDataForAccountId
метод вIntuneMAMPolicyDelegate
. Приложение отвечает за удаление учетной записи указанного пользователя и всех связанных с ней данных. Пакет SDK может удалить все файлы, принадлежащие пользователю, и будет делать это, если приложение возвращает false изwipeDataForAccountId
вызова.Обратите внимание, что этот метод вызывается из фонового потока. Приложение не должно возвращать значение до тех пор, пока не будут удалены все данные пользователя (за исключением файлов, если приложение возвращает значение FALSE).
Условия выхода
Запланируйте выделение значительного времени для проверки интеграции приложения с несколькими удостоверениями. Перед началом тестирования:
- Создайте и назначьте политику защиты приложений учетной записи. Это будет ваша тестовая управляемая учетная запись.
- Создайте другую учетную запись, но не назначайте политику защиты приложений. Это будет ваша тестовая неуправляемая учетная запись. Кроме того, если приложение поддерживает несколько типов учетных записей, отличных от учетных записей Microsoft Entra, вы можете использовать существующую учетную запись, не относясь к AAD, в качестве неуправляемой тестовой учетной записи.
- Дайте себе ссылку на то, как политика применяется в приложении. При тестировании с несколькими удостоверениями необходимо легко различать, когда приложение работает и не работает с применением политики. Параметр политики защиты приложений для блокировки снимков экрана эффективен для быстрого тестирования принудительного применения политики.
- Рассмотрите весь набор пользовательских интерфейсов, которые предлагает приложение. Перечисление экранов, на которых отображаются данные учетной записи. Может ли приложение представить данные только одной учетной записи одновременно или может ли оно одновременно предоставить данные, принадлежащие нескольким учетным записям?
- Рассмотрим весь набор файлов, которые создает приложение. Перечислите, какие из этих файлов содержат данные, принадлежащие учетной записи, а не данные системного уровня.
- Определите способ проверки шифрования для каждого из этих файлов.
- Рассмотрим весь набор способов взаимодействия приложения с другими приложениями. Перечисление всех точек входящего и исходящего трафика. Какие типы данных могут принимать приложение? О каких намерениях он транслирует? Какие поставщики содержимого реализуются?
- Определите, как вы будете использовать каждую из этих функций общего доступа к данным.
- Подготовьте тестовое устройство с управляемыми и неуправляемыми приложениями, которые могут взаимодействовать с вашим приложением.
- Подумайте, как приложение позволяет конечному пользователю взаимодействовать со всеми учетными записями, которые вошли в систему. Нужно ли пользователю вручную переключаться на учетную запись, прежде чем будут отображаться данные этой учетной записи?
После тщательной оценки текущего поведения приложения проверьте интеграцию с несколькими удостоверениями, выполнив следующий набор тестов. Обратите внимание, что этот список не является исчерпывающим и не гарантирует, что реализация нескольких удостоверений в вашем приложении не содержит ошибок.
Проверка сценариев входа и выхода из системы
Приложение с несколькими удостоверениями поддерживает до 1 управляемой учетной записи и несколько неуправляемых учетных записей. Эти тесты помогают убедиться, что интеграция с несколькими удостоверениями не изменяет неправильно защиту при входе или выходе пользователей.
Для этих тестов установите приложение на тестовом устройстве; не войдите в систему перед началом теста.
Сценарий | Действия |
---|---|
Войдите в систему, управляемый первым | — Сначала войдите в систему с помощью управляемой учетной записи и убедитесь, что данные учетной записи управляются. — Войдите с помощью неуправляемой учетной записи и убедитесь, что данные учетной записи не управляются. |
Сначала войдите в неуправляемый вход | — Сначала войдите с неуправляемой учетной записью и убедитесь, что данные учетной записи не управляются. — Войдите с помощью управляемой учетной записи и убедитесь, что данные учетной записи управляются. |
Вход в несколько управляемых | — Сначала войдите в систему с помощью управляемой учетной записи и убедитесь, что данные учетной записи управляются. — Войдите с помощью второй управляемой учетной записи и проверьте, заблокирован ли вход пользователя, не удалив исходную управляемую учетную запись. |
Управляемый выход из системы | — Войдите в приложение с помощью управляемой неуправляемой учетной записи. — выход из управляемой учетной записи. — Убедитесь, что управляемая учетная запись удалена из приложения и все данные этой учетной записи удалены. — Убедитесь, что неуправляемая учетная запись по-прежнему входит в систему, данные неуправляемой учетной записи не удалены, а политика по-прежнему не применяется. |
Неуправляемый выход из системы | — Войдите в приложение с помощью управляемой неуправляемой учетной записи. — выход из неуправляемой учетной записи. — Убедитесь, что неуправляемая учетная запись удалена из вашего приложения и все данные этой учетной записи удалены. — Убедитесь, что управляемая учетная запись по-прежнему выполнена, данные неуправляемой учетной записи не удалены, и политика по-прежнему применяется. |
Проверка жизненного цикла активных удостоверений и приложений
Приложение с несколькими удостоверениями может представлять представления с данными одной учетной записи и позволить пользователю явно изменить текущую учетную запись. Он также может представлять представления с данными нескольких учетных записей одновременно. Эти тесты помогают гарантировать, что интеграция с несколькими удостоверениями обеспечивает правильную защиту активного удостоверения на каждой странице в течение всего жизненного цикла приложения.
Для этих тестов установите приложение на тестовом устройстве; Перед началом теста войдите как с управляемой, так и с неуправляемой учетной записью.
Сценарий | Действия |
---|---|
Представление одной учетной записи, управляемое | — Переключитесь на управляемую учетную запись. — Перейдите ко всем страницам приложения, на которые представлены данные одной учетной записи. — Убедитесь, что политика применяется на каждой странице. |
Представление одной учетной записи, неуправляемая | — Переключитесь на неуправляемую учетную запись. — Перейдите ко всем страницам приложения, на которые представлены данные одной учетной записи. — Убедитесь, что политика не применяется ни на одной странице. |
Представление с несколькими учетными записями | — Перейдите ко всем страницам приложения, на которые одновременно представлены данные нескольких учетных записей. — Убедитесь, что политика применяется на каждой странице. |
Управляемая пауза | — На экране с отображаемыми управляемыми данными и активной политикой приостановите работу приложения, перейдя на начальный экран устройства или другое приложение. — Возобновление работы приложения. — Убедитесь, что политика по-прежнему применяется. |
Неуправляемая пауза | — На экране, где отображаются неуправляемые данные и политика не активна, приостановите работу приложения, перейдя на начальный экран устройства или другое приложение. — Возобновление работы приложения. — Убедитесь, что политика не применяется. |
Управляемое завершение | — На экране с отображаемыми управляемыми данными и активной политикой принудительное завершение приложения. — Перезапустите приложение. — Убедитесь, что если приложение возобновляется на экране с данными управляемой учетной записи (ожидаемый), политика по-прежнему применяется. Если приложение возобновляет работу на экране с данными неуправляемой учетной записи, убедитесь, что политика не применяется. |
Неуправляемая инструкция kill | — На экране, где отображаются неуправляемые данные и политика активна, принудительное завершение приложения. — Перезапустите приложение. — Убедитесь, что, если приложение возобновляется на экране с данными неуправляемой учетной записи (ожидается), политика не применяется. Если приложение возобновляется на экране с данными управляемой учетной записи, убедитесь, что политика по-прежнему применяется. |
Переключатель удостоверений ad hoc | — Эксперимент переключения между учетными записями и приостановки, возобновления, убийства или перезапуска приложения. — Убедитесь, что данные управляемой учетной записи всегда защищены, а данные неуправляемой учетной записи никогда не защищены. |
Проверка сценариев совместного использования данных
Приложение с несколькими удостоверениями может отправлять данные в другие приложения и получать данные из других приложений. Политики защиты приложений Intune имеют параметры, которые определяют это поведение. Эти тесты помогают убедиться, что интеграция с несколькими удостоверениями учитывает эти параметры общего доступа к данным.
Для этих тестов установите приложение на тестовом устройстве; Перед началом теста войдите как с управляемой, так и с неуправляемой учетной записью. Также:
- Задайте политику управляемой учетной записи следующим образом:
- "Отправка данных организации в другие приложения" в "Приложения, управляемые политикой".
- "Получение данных из других приложений" на "Приложения, управляемые политикой".
- Установите другие приложения на тестовом устройстве:
- Управляемое приложение с той же политикой, что и ваше приложение, которое может отправлять и получать данные (например, Microsoft Outlook).
- Любое неуправляемые приложения, которые могут отправлять и получать данные.
- Войдите в другое управляемое приложение с помощью управляемой тестовой учетной записи. Даже если другое управляемое приложение имеет несколько удостоверений, войдите только с помощью управляемой учетной записи.
Если ваше приложение имеет возможность отправлять данные в другие приложения, например в Microsoft Outlook, отправляя вложение документа в Microsoft Office:
Сценарий | Действия |
---|---|
Отправка управляемого удостоверения в неуправляемые приложения | — Переключитесь на управляемую учетную запись. — Перейдите к месту, где приложение может отправлять данные. — попытка отправки данных в неуправляемое приложение. — Вам должно быть запрещено отправлять данные в неуправляемые приложения. |
Отправка управляемого удостоверения в управляемое приложение | — Переключитесь на управляемую учетную запись. — Перейдите к месту, где приложение может отправлять данные. — попытка отправки данных в другое управляемое приложение с помощью управляемой учетной записи, вошедшего в систему. — Вам должно быть разрешено отправлять данные в управляемое приложение. |
Отправка неуправляемого удостоверения в управляемое приложение | — Переключитесь на неуправляемую учетную запись. — Перейдите к месту, где приложение может отправлять данные. — попытка отправки данных в другое управляемое приложение с помощью управляемой учетной записи, вошедшего в систему. — Отправка данных в другое управляемое приложение должна быть заблокирована. |
Неуправляемые удостоверения отправляются в неуправляемые приложения | — Переключитесь на неуправляемую учетную запись. — Перейдите к месту, где приложение может отправлять данные. — попытка отправки данных в неуправляемое приложение. — Вам всегда должно быть разрешено отправлять данные неуправляемой учетной записи в неуправляемое приложение. |
Ваше приложение может активно импортировать данные из других приложений, таких как Microsoft Outlook, присоединяя файл из Microsoft OneDrive. Приложение также может пассивно получать данные из других приложений, таких как Microsoft Office, открывая документ из вложения Microsoft Outlook. Параметр политики получения защиты приложений охватывает оба сценария.
Если ваше приложение имеет возможность активно импортировать данные из других приложений:
Сценарий | Действия |
---|---|
Импорт управляемого удостоверения из неуправляемого приложения | — Переключитесь на управляемую учетную запись. — Перейдите к месту, где приложение может импортировать данные из других приложений. — попытка импорта данных из неуправляемого приложения. — Импорт данных из неуправляемых приложений должен быть заблокирован. |
Импорт управляемого удостоверения из управляемого приложения | — Переключитесь на управляемую учетную запись. — Перейдите к месту, где приложение может импортировать данные из других приложений. — попытка импорта данных из другого управляемого приложения с помощью управляемой учетной записи, вошедшего в систему. — Вам должно быть разрешено импортировать данные из другого управляемого приложения. |
Импорт неуправляемых удостоверений из управляемого приложения | — Переключитесь на неуправляемую учетную запись. — Перейдите к месту, где приложение может импортировать данные из других приложений. — попытка импорта данных из другого управляемого приложения с помощью управляемой учетной записи, вошедшего в систему. — Импорт данных из другого управляемого приложения должен быть заблокирован. |
Импорт неуправляемых удостоверений из неуправляемого приложения | — Переключитесь на неуправляемую учетную запись. — Перейдите к месту, где приложение может импортировать данные из других приложений. — попытка импорта данных из неуправляемого приложения. — Вам всегда должно быть разрешено импортировать данные из неуправляемого приложения для неуправляемой учетной записи. |
Если ваше приложение имеет возможность пассивно получать данные из других приложений:
Сценарий | Действия |
---|---|
Получение управляемого удостоверения из неуправляемого приложения | — Переключитесь на управляемую учетную запись. — Переключитесь на неуправляемые приложения. — Перейдите к месту, где можно отправлять данные. — Попытка отправки данных из неуправляемого приложения в приложение. — Управляемая учетная запись приложения не должна получать данные из неуправляемого приложения. |
Получение управляемого удостоверения из управляемого приложения | — Переключитесь на управляемую учетную запись. — Переключитесь на другое управляемое приложение с управляемой учетной записью, вошедшего в систему. — Перейдите к месту, где можно отправлять данные. — попытка отправки данных из управляемого приложения в приложение. — Управляемой учетной записи приложения должно быть разрешено получать данные из другого управляемого приложения. |
Получение неуправляемого удостоверения из управляемого приложения | — Переключитесь на неуправляемую учетную запись. — Переключитесь на другое управляемое приложение с управляемой учетной записью, вошедшего в систему. — Перейдите к месту, где можно отправлять данные. — попытка отправки данных из управляемого приложения в приложение. — неуправляемая учетная запись вашего приложения не должна иметь возможности получать данные из управляемого приложения. |
Получение неуправляемого удостоверения из неуправляемого приложения | — Переключитесь на неуправляемую учетную запись. — Переключитесь на неуправляемые приложения. — Перейдите к месту, где можно отправлять данные. — Попытка отправки данных из неуправляемого приложения в приложение. — Неуправляемая учетная запись приложения всегда должна получать данные из неуправляемого приложения. |
Сбои в этих тестах могут указывать на то, что приложение не имеет правильного активного удостоверения при попытке отправки или получения данных. Это можно изучить, используя API получения удостоверений пакета SDK в момент отправки или получения, чтобы убедиться, что активное удостоверение настроено правильно.
Дальнейшие действия
После выполнения всех описанных выше критериев выхода приложение успешно интегрировано в качестве нескольких удостоверений и может применять политики защиты приложений на основе каждого удостоверения. Следующие разделы : Этап 6. Поддержка условного доступа защиты приложений и Этап 7. Функции веб-представления могут потребоваться или не требуются в зависимости от требуемой политики защиты приложений.