Поделиться через


пакет SDK для приложений Intune для Android — функции участия в приложениях

Пакет SDK для приложений Microsoft Intune для Android позволяет включить Intune политики защиты приложений (также известные как политики MAM) в собственное приложение Java/Kotlin для Android. Управляемое Intune приложение интегрируется с пакетом SDK для приложений Intune. администраторы Intune могут легко развертывать политики защиты приложений в приложении, управляемом Intune, когда Intune активно управляет приложением.

Примечание.

Это руководство разделено на несколько отдельных этапов. Для начала ознакомьтесь с разделом Планирование интеграции.

Этап 7. Функции участия в приложениях

Цели этапа

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

Что такое "Функции участия в приложениях"?

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

Однако для применения некоторых параметров требуется код конкретного приложения. эти параметры называются функциями участия в приложении. Как правило, пакет SDK не имеет достаточного контекста о коде вашего приложения или сценарии конечного пользователя для автоматического применения этих параметров, поэтому разработчики могут соответствующим образом вызывать API пакета SDK.

Функции участия в приложении не обязательно являются необязательными. В зависимости от существующих функций приложения эти функции могут потребоваться. Дополнительные сведения см. в разделе Ключевые решения для интеграции пакета SDK .

На предыдущих этапах этого руководства уже описано несколько возможностей участия в приложениях:

В остальной части этого руководства описывается оставшийся набор функций участия в приложении:

  • Применение политики, ограничивающей сохранение файлов в локальное или облачное хранилище или открытие файлов из нее.
  • Применение политики, ограничивающей содержимое в уведомлениях.
  • Принудительное применение политики, защищающей данные резервного копирования.
  • Примените политику ограничения захвата экрана (если в приложении есть код пользовательского захвата экрана).
  • Поддержка ЦС защиты приложений.
  • Зарегистрируйтесь для получения уведомлений из пакета SDK.
  • Применение пользовательской тем для приложений.
  • Используйте доверенные сертификаты из Intune, обеспечивая цепочку доверия к локальным конечным точкам.

Основные сведения о функции участия в приложениях

Интерфейс AppPolicy содержит множество методов, которые информируют приложение о том, разрешены ли определенные действия.

Большинство функций участия в приложениях включают:

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

Чтобы получить AppPolicy экземпляр, используйте один из методов MAMPolicyManager , например getPolicy(final Context context) или getPolicyForIdentityOID(final String oid).

Информационные методы в AppPolicy

Не все методы в AppPolicy привязаны к функции участия в приложении. Некоторые методы являются информационными и предоставляют сведения о том, какие политики настроены в настоящее время, даже если эти политики автоматически применяются пакетом SDK. Эти методы существуют для предоставления приложению возможностей предоставления пользовательского интерфейса при настройке определенных политик.

Пример. Определение блокировки снимков экрана

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

Приложение может проверка, вызвав .MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed()

Политика ограничения передачи данных между приложениями и устройствами или облачными хранилищами

Многие приложения позволяют конечному пользователю сохранять или открывать данные из локального файлового хранилища или облачных служб хранилища. Пакет SDK для приложений Intune позволяет ИТ-администраторам защищаться от входящего трафика и утечки данных, ограничивая место, где приложения могут сохранять данные и открывать их.

Примечание.

Если приложение позволяет сохранять данные в личных или облачных расположениях непосредственно из приложения или позволяет открывать данные непосредственно в приложении, необходимо реализовать эту функцию Intune участие в приложении SDK для приложений**, чтобы ИТ-администраторы могли заблокировать это сохранение и открытие.

Сохранение на устройстве или в облачное хранилище

getIsSaveToLocationAllowedForOID API позволяет приложению узнать, разрешено ли сохранение в определенных расположениях для заданного удостоверения на основе настроенной политики:

MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowedForOID(
SaveLocation service, String oid);

Чтобы определить, должно ли приложение реализовать getIsSaveToLocationAllowedForOID проверка, определите, поддерживает ли приложение исходящий трафик данных, просмотрите следующую таблицу:

service Параметр: SaveLocation перечисление значения Вариант использования Связанный OID
ONEDRIVE Приложение сохраняет данные в OneDrive. OID для учетной записи, которая используется как для проверки подлинности облачной службы, так и для проверки подлинности Microsoft Entra. Если эта учетная запись не существует или OID не известна, используйте null.
SHAREPOINT Приложение сохраняет данные в SharePoint. OID для учетной записи, которая используется как для проверки подлинности облачной службы, так и для проверки подлинности Microsoft Entra. Если эта учетная запись не существует или OID не известна, используйте null.
BOX Приложение сохраняет данные в Box. OID для учетной записи, которая используется как для проверки подлинности облачной службы, так и для проверки подлинности Microsoft Entra. Если эта учетная запись не существует или OID не известна, используйте null.
LOCAL Приложение сохраняет данные во внешнее хранилище на устройстве, которое не является частным хранилищем приложения. Это расположение хранилища не считается облачной службой и всегда должно использоваться с параметром null OID.
PHOTO_LIBRARY Приложение сохраняет данные в локальное хранилище фотографий Android. Локальное хранилище фотографий не считается облачной службой и всегда должно использоваться с параметром null OID.
IMANAGE Приложение сохраняет данные в iManage. OID для учетной записи, которая используется как для проверки подлинности облачной службы, так и для проверки подлинности Microsoft Entra. Если эта учетная запись не существует или OID не известна, используйте null.
EGNYTE Приложение сохраняет данные в Egnyte. OID для учетной записи, которая используется как для проверки подлинности облачной службы, так и для проверки подлинности Microsoft Entra. Если эта учетная запись не существует или OID не известна, используйте null.
ACCOUNT_DOCUMENT Приложение сохраняет данные в расположение, связанное с учетной записью в приложении, и не является одним из конкретных облачных расположений в этой таблице.

Используйте это расположение, чтобы определить, можно ли передавать данные между учетными записями в приложении с несколькими удостоверениями.
OID для учетной записи, используемой для проверки подлинности Microsoft Entra. Если эта учетная запись не существует или OID не известна, используйте null.
OTHER Приложение сохраняет данные в расположение, не указанное в этой таблице и не соответствующее условиям для ACCOUNT_DOCUMENT. Объект oid не вычисляется для этого расположения и должен иметь значение null.

Файлы, размещенные в частном хранилище приложений, необходимые для работы приложения или временно загруженные для отображения, всегда разрешены; не нужно проверка getIsSaveToLocationAllowedForOID. Выполните проверка SaveLocation.LOCAL для

  1. Файлы, сохраненные за пределами частного хранилища приложений.
  2. Файлы, скачанные в частное хранилище приложений, которые не нужны для работы приложения (например, когда пользователь явно выбирает скачивание на устройство).

Примечание.

При проверке политики сохранения должен быть идентификатором OID учетной записи, связанной с облачной службой, oid в которой сохраняется (эта учетная запись не обязательно совпадает с учетной записью, которой принадлежит сохраненный документ).

Открытие данных из локального или облачного хранилища

getIsOpenFromLocationAllowedForOID API позволяет приложению узнать, разрешено ли открытие из определенных расположений для заданного удостоверения на основе настроенной политики:

MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowedForOID(
OpenLocation location, String oid);

Чтобы определить, должно ли приложение реализовать getIsOpenFromLocationAllowedForOID проверка, определите, поддерживает ли приложение входящий трафик данных, просмотрите следующую таблицу:

location Параметр: OpenLocation перечисление значения Вариант использования Связанный OID
ONEDRIVE_FOR_BUSINESS Приложение открывает данные из OneDrive. OID для учетной записи, которая используется как для проверки подлинности облачной службы, так и для проверки подлинности Microsoft Entra. Если эта учетная запись не существует или OID не известна, используйте null.
SHAREPOINT Приложение открывает данные из SharePoint. OID для учетной записи, которая используется как для проверки подлинности облачной службы, так и для проверки подлинности Microsoft Entra. Если эта учетная запись не существует или OID не известна, используйте null.
CAMERA Приложение открывает данные с камеры устройства. Значение null , так как камера устройства не является облачной службой.
LOCAL Приложение открывает данные из внешнего хранилища на устройстве, которое не является частным хранилищем приложения. Хотя внешнее хранилище не является облачной службой oid , ожидается параметр, так как он указывает на владение.

Для файлов с тегами удостоверений:oid должно быть удостоверением владельца файла.
Для файлов без тега удостоверения долженoid иметь значение null.
PHOTO_LIBRARY Приложение открывает данные из локального хранилища фотографий Android. Локальное хранилище фотографий не считается облачной службой и всегда должно использоваться с параметром null OID.
ACCOUNT_DOCUMENT Приложение открывает данные из расположения, связанного с учетной записью в приложении, и не является одним из конкретных облачных расположений в этой таблице.

Используйте это расположение, чтобы определить, можно ли передавать данные между учетными записями в приложении с несколькими удостоверениями.
OID для учетной записи, используемой для проверки подлинности Microsoft Entra. Если эта учетная запись не существует или OID не известна, используйте null.
OTHER Приложение открывает данные из расположения, не указанного в этой таблице и не соответствующего условиям для ACCOUNT_DOCUMENT. Объект oid не вычисляется для этого расположения и должен иметь значение null.

Примечание.

При проверка открытой политики должен быть OID учетной записи, связанной с файлом или облачной службой, oidиз которой открывается (не обязательно совпадает с учетной записью, открывающей документ).

Совет

Для удобства пакет SDK предоставляет метод AppPolicy.isOpenFromLocalStorageAllowed , который принимает File параметр для файла в локальном хранилище. Для принудительного применения политики этот метод функционально идентичен вызову AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid) , за исключением того, что он обрабатывает синтаксический анализ владельца oid файла из File.

Диалоговое окно "Общий доступ заблокирован"

Пакет SDK предоставляет диалоговое окно для уведомления пользователя о том, что политика MAM блокирует действие передачи данных.

Диалоговое окно должно отображаться для пользователя всякий раз getIsSaveToLocationAllowedForOID , когда вызов API или getIsOpenFromLocationAllowedForOID приводит к блокировке действия сохранения или открытия. Диалоговое окно отображает универсальное сообщение и возвращается к вызову Activity при закрытии.

Чтобы отобразить диалоговое окно, добавьте следующий код:

MAMUIHelper.showSharingBlockedDialog(currentActivity)

Разрешить общий доступ к файлам

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

Политика ограничения содержимого в уведомлениях

Для приложений с одним удостоверением поведение пакета SDK для приложений Intune по умолчанию пытается заблокировать все уведомления, когда политика защиты приложений ограничивает уведомления.

Поведение пакета SDK по умолчанию ограничено. Пакет SDK не может автоматически учитывать значение "Блокировать данные организации", которое предназначено для удаления только управляемого содержимого из уведомлений. Для приложений с несколькими удостоверениями пакет SDK не может определить, какие уведомления содержат управляемое содержимое.

Если в приложении отображаются уведомления, и оно имеет несколько удостоверений и (или) должно учитывать значение "Блокировать данные организации", оно должно проверка политику ограничения уведомлений для учетной записи, связанной с уведомлением, перед отображением уведомления.

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

NotificationRestriction notificationRestriction =
    MAMPolicyManager.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();

Возвращаемое перечисление NotificationRestriction имеет следующие значения:

NotificationRestriction Перечисление Ожидаемое поведение приложения
BLOCKED Приложение не должно отображать уведомления для учетной записи, связанной с этой политикой. Для приложений с одним удостоверением пакет SDK для приложений Intune автоматически блокирует все уведомления, и дополнительный код не требуется.
BLOCK_ORG_DATA Приложение должно отображать измененное уведомление, которое не содержит данные организации.
UNRESTRICTED Приложение должно отображать все уведомления.

Если приложение не вызывает getNotificationRestrictionдолжным образом , пакет SDK для MAM делает все возможное, чтобы автоматически ограничить уведомления только для приложений с одним удостоверением.

В этом случае обрабатывается так же, BLOCK_ORG_DATA как BLOCKED и уведомление вообще не отображается.

Для более точного управления проверка значение getNotificationRestriction и соответствующим образом измените уведомления приложений.

Политика защиты данных резервного копирования

Пакет SDK для приложений Intune может блокировать передачу данных во встроенную функцию резервного копирования и восстановления Android. Дополнительные сведения о резервном копировании и восстановлении в Android см. в руководстве по API Android и изменениях, внесенных в Android S /12 в разделе Изменение резервного копирования и восстановления.

Автоматическое резервное копирование для приложений

Начиная с Android M Android обеспечивает автоматическое полное резервное копирование на Google Диск для приложений независимо от целевого API приложения.

Intune позволяет использовать все функции автоматического резервного восстановления, предоставляемые Android, в том числе возможность определять пользовательские правила в XML, с конкретным руководством по интеграции Intune, чтобы обеспечить применение защиты данных.

Настройка поведения резервного копирования в манифесте приложения

По умолчанию для параметра задано значение true, android:allowBackup как описано в разделе Включение и отключение резервного копирования.

Если приложению не требуются функции полного резервного копирования и восстановления, установите значение android:allowBackupfalse. В этом случае никаких дальнейших действий не требуется, и корпоративные данные остаются в приложении.

Если приложению требуются функции полного резервного копирования и восстановления, задайте значение android:allowBackuptrue и выполните следующие действия.

  1. Если в приложении не используется собственный пользовательский BackupAgentкод , используйте MAMBackupAgent по умолчанию, чтобы включить автоматическое полное резервное копирование, соответствующее Intune политике. Поместите в манифест приложения следующее:

    <application
    ...
      android:fullBackupOnly="true"
      android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent"
      ...>
      </application>
    
  2. Необязательный параметр. При реализации пользовательского BackupAgentнеобходимо использовать MAMBackupAgent или MAMBackupAgentHelper. См. следующие разделы. Рассмотрите возможность перехода на MAMDefaultBackupAgent Intune, описанную на шаге 1, которая обеспечивает простое резервное копирование на Android M и более поздних версий.

  3. Если вы решите, какой тип полной резервной копии должно получать приложение (нефильтрованный, отфильтрованный или нет), задайте атрибуту android:fullBackupContenttrueзначение , falseили XML-ресурс в приложении.

  4. Затем необходимо скопировать значение для android:fullBackupContent в com.microsoft.intune.mam.FullBackupContent тег метаданных, а для приложений, поддерживающих формат конфигурации XML, добавленный в API 31, в com.microsoft.intune.mam.DataExtractionRules тег метаданных.

    • Пример 1. Если вы хотите, чтобы в приложении были полные резервные копии без исключений, необходимо задать для атрибутов и тегов метаданных значение true:

      <application
        ...
        android:fullBackupContent="true"
        ...>
      </application>
      ...
      <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="true" />
      <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="true" />
      
    • Пример 2. Если вы хотите, чтобы приложение использовало его пользовательское BackupAgent и отказалось от полного автоматического резервного копирования, соответствующего Intune политике, необходимо задать для атрибутов и тегов метаданных значение false:

      <application
        ...
        android:fullBackupContent="false"
        ...>
      </application>
      ...
      <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="false" />
      <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="false" />
      
    • Пример 3. Если вы хотите, чтобы в приложении были полные резервные копии в соответствии с пользовательскими правилами, определенными в XML-файле, задайте атрибут и тег метаданных для одного и того же ресурса XML:

      <application
        ...
        android:fullBackupContent="@xml/my_full_backup_content_scheme"
        android:dataExtractionRules="@xml/my_data_extraction_rules_scheme"
        ...>
      </application>
      ...
      <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:resource="@xml/my_full_backup_content_scheme" />
      <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:resource="@xml/my_data_extraction_rules_scheme" />
      

Резервное копирование ключей и значений

Параметр "Резервное копирование ключей и значений " доступен для всех API 8+ и отправляет данные приложения в службу архивации Android. Объем данных на приложение ограничен 5 МБ. При использовании резервного копирования ключей и значений необходимо использовать BackupAgentHelper или BackupAgent.

BackupAgentHelper

BackupAgentHelper проще реализовать, чем BackupAgent, как с точки зрения собственных функций Android, так и Intune интеграции MAM. BackupAgentHelper позволяет разработчику регистрировать целые файлы и общие настройки в FileBackupHelper и SharedPreferencesBackupHelper (соответственно), которые затем добавляются в BackupAgentHelper при создании. Выполните следующие действия, чтобы использовать BackupAgentHelper с Intune MAM:

  1. Чтобы использовать резервную копию с несколькими удостоверениями с помощью BackupAgentHelper, следуйте инструкциям в статье Расширение резервного копированияAgentHelper для Android.

  2. Расширьте класс MAM, эквивалент BackupAgentHelper, FileBackupHelper и SharedPreferencesBackupHelper.

Класс Android Эквивалент MAM
BackupAgentHelper MAMBackupAgentHelper
FileBackupHelper MAMFileBackupHelper
SharedPreferencesBackupHelper MAMSharedPreferencesBackupHelper

Следуя этим рекомендациям, вы сможете успешно выполнить резервное копирование и восстановление с несколькими удостоверениями.

BackupAgent

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

Интеграция MAM:

  1. Внимательно прочтите руководство по резервному копированию ключей и значений для Android и, в частности , расширение BackupAgent , чтобы убедиться, что реализация BackupAgent соответствует рекомендациям Android.

  2. Предоставьте классу расширение MAMBackupAgent.

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

  1. Перед началом резервного копирования проверка, что файлы или буферы данных, которые вы планируете создать, разрешены ИТ-администратором для резервного копирования в сценариях с несколькими удостоверениями. Используйте isBackupAllowed в MAMFileProtectionManager и MAMDataProtectionManager , чтобы определить это поведение. Если резервное копирование файла или буфера данных запрещено, их не следует включать в резервную копию.

  2. В какой-то момент во время резервного копирования, если вы хотите создать резервную копию удостоверений для файлов, возвращенных на шаге 1, необходимо вызвать backupMAMFileIdentity(BackupDataOutput data, File … files) с файлами, из которых планируется извлечь данные. Этот метод автоматически создает новые сущности резервного копирования и записывает их в .BackupDataOutput Эти сущности автоматически используются при восстановлении.

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

  1. Для прохождения сущностей резервного while(data.readNextHeader())копирования необходимо использовать цикл *.

  2. Вызов необходимо вызватьdata.skipEntityData(), если data.getKey() не соответствует ключу, который вы написали в onBackup. Без этого шага восстановление может завершиться неудачно.

  3. Избегайте возврата при использовании сущностей резервного копирования в while(data.readNextHeader())конструкции *, так как все сущности, которые мы автоматически записываем, в этом случае теряются.

  • Где data — имя локальной переменной для MAMBackupDataInput , которую приложение получает при восстановлении.

Ограничения пользовательского захвата экрана

Если приложение содержит настраиваемую функцию захвата экрана, которая обходит ограничение на уровне FLAG_SECURE AndroidWindow, необходимо проверка политику захвата экрана, прежде чем предоставлять полный доступ к этой функции. Например, если приложение использует настраиваемое средство отрисовки для отрисовки текущего представления в PNG-файл, необходимо сначала проверка AppPolicy.getIsScreenCaptureAllowed().

Примечание.

Если приложение не содержит пользовательских или сторонних функций захвата экрана, никаких действий для ограничения захвата экрана не требуется. Политика захвата экрана автоматически применяется на Window уровне для всех интегрированных приложений MAM. Любые попытки ос или другого приложения записать Window в приложении блокируются по мере необходимости. Например, если пользователь пытается записать экран вашего приложения с помощью встроенных снимка экрана Android или функций записи экрана, запись автоматически ограничивается без участия приложения.

Поддержка ЦС защиты приложений

ЦС защиты приложений (условный доступ), также известный как ЦС на основе приложений, ограничивает доступ к ресурсам. Intune политики защиты приложений должны управлять приложением, прежде чем оно сможет получить доступ к этим ресурсам. Microsoft Entra ID применяет эту политику, требуя, чтобы приложение регистрировалось в политиках Intune защиты приложений и управлялось ими перед предоставлением маркера для доступа к ресурсу, защищенному условным доступом.

Примечание.

Для поддержки ЦС защиты приложений требуется библиотека проверки подлинности Майкрософт (MSAL) версии 1.0.0 или более поздней.

Обработка несоответствия с помощью MSAL

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

MAMComplianceManager

Интерфейс MAMComplianceManager используется при получении требуемой политикой ошибки из MSAL. Он содержит метод [remediateCompliance], который следует вызвать, чтобы попытаться поместить приложение в соответствующее состояние. Ссылку на MAMComplianceManager можно получить следующим образом:

MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);

// make use of mgr

Возвращаемый MAMComplianceManager экземпляр гарантированно не будет иметь значение null.

package com.microsoft.intune.mam.policy;

public interface MAMComplianceManager {
    void remediateCompliance(String upn, String aadId, String tenantId, String authority, boolean showUX);
}

Метод remediateCompliance() пытается поставить приложение под управление, чтобы удовлетворить условия для Microsoft Entra ID предоставления запрошенного маркера. Первые четыре параметра можно извлечь из исключения, полученного методом MSAL AuthenticationCallback.onError() . Последний параметр является логическим, который определяет, отображается ли взаимодействие с пользователем во время попытки соответствия требованиям.

remediateCompliance отображает простое диалоговое окно выполнения блокировки, чтобы приложения не отображали настраиваемые возможности во время этой операции. Это диалоговое окно отображается только в том случае, когда выполняется исправление соответствия. Окончательный результат не отображается. Приложение может зарегистрировать получателя для COMPLIANCE_STATUS уведомления, чтобы обработать успешное или неудачное выполнение попытки исправления соответствия. Дополнительные сведения см. в разделе Уведомления о состоянии соответствия .

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

Если не удается вернуть маркер из acquireToken(), попытка исправления соответствия завершается ошибкой.

При последующем вызове updateToken с допустимым маркером для запрошенного ресурса исправление соответствия немедленно возобновится с заданным маркером.

Примечание.

Автоматическое получение маркера по-прежнему возможно в, acquireToken() так как пользователь уже руководствовался установкой брокера и регистрацией устройства до возникновения MsalIntuneAppProtectionPolicyRequiredException исключения. Этот процесс приводит к тому, что брокер имеет действительный маркер обновления в кэше, что позволяет брокеру получить запрошенный маркер автоматически.

Ниже приведен пример, который получает требуемую политикой ошибку в AuthenticationCallback.onError() методе и вызывает MAMComplianceManager для обработки ошибки.

public void onError(@Nullable MsalException exc) {
    if (exc instanceof MsalIntuneAppProtectionPolicyRequiredException) {

        final MsalIntuneAppProtectionPolicyRequiredException policyRequiredException =
            (MsalIntuneAppProtectionPolicyRequiredException) ex;

        final String upn = policyRequiredException.getAccountUpn();
        final String aadId = policyRequiredException.getAccountUserId();
        final String tenantId = policyRequiredException.getTenantId();
        final String authority = policyRequiredException.getAuthorityURL();

        MAMComplianceManager complianceManager = MAMComponents.get(MAMComplianceManager.class);
        complianceManager.remediateCompliance(upn, aadId, tenantId, authority, showUX);
    }
}

Уведомления о состоянии соответствия

Если приложение регистрируется для уведомлений типа COMPLIANCE_STATUS, система отправляет MAMComplianceNotification , чтобы сообщить приложению об окончательном состоянии попытки исправления соответствия. Дополнительные сведения о регистрации см. в разделе Регистрация для уведомлений из пакета SDK .

public interface MAMComplianceNotification extends MAMUserNotification {
    MAMCAComplianceStatus getComplianceStatus();
    String getComplianceErrorTitle();
    String getComplianceErrorMessage();
}

Метод getComplianceStatus() возвращает результат попытки исправления соответствия в виде значения из перечисления [MAMCAComplianceStatus].

Код состояния Объяснение
UNKNOWN Состояние неизвестно. Это состояние может указывать на непредвиденные причины сбоя. Дополнительные сведения можно найти в журналах Корпоративный портал.
COMPLIANT Исправление соответствия успешно выполнено, и теперь приложение соответствует политике. Получение маркера MSAL должно быть повторно.
NOT_COMPLIANT Попытка исправить соответствие не удалось. Приложение не соответствует требованиям, и получение маркера MSAL не должно выполняться повторно до тех пор, пока не будет исправлено условие ошибки. Содержит MAMComplianceNotification дополнительные сведения об ошибке.
SERVICE_FAILURE При попытке получить данные о соответствии из службы Intune произошел сбой. Дополнительные сведения можно найти в журналах Корпоративный портал.
NETWORK_FAILURE Произошла ошибка при подключении к службе Intune. Приложение должно повторить получение маркера при восстановлении сетевого подключения.
CLIENT_ERROR Попытка исправить соответствие не удалась из-за проблемы, связанной с клиентом, например из-за отсутствия или неправильного маркера пользователя. Содержит MAMComplianceNotification дополнительные сведения об ошибке.
PENDING Попытка исправить соответствие не удается, так как служба не отправляет ответ о состоянии до истечения срока действия. Приложение должно повторить попытку получения маркера позже.
COMPANY_PORTAL_REQUIRED Чтобы исправить соответствие требованиям, необходимо установить Корпоративный портал на устройстве. Если приложение уже установлено, приложение необходимо перезапустить. В диалоговом окне пользователю будет предложено перезапустить приложение.

Если состояние соответствия — MAMCAComplianceStatus.COMPLIANT, приложение должно повторно инициировать получение исходного маркера (для собственного ресурса).

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

Если сбой сохраняется, Корпоративный портал журналы могут помочь определить причину. Конечный пользователь может отправлять журналы. Дополнительные сведения см. в разделе Отправка журналов и отправка по электронной почте.

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

final MAMNotificationReceiverRegistry notificationRegistry = MAMComponents.get(MAMNotificationReceiverRegistry.class);
// create a receiver
final MAMNotificationReceiver receiver = new MAMNotificationReceiver() {
    public boolean onReceive(MAMNotification notification) {
        if (notification.getType() == MAMNotificationType.COMPLIANCE_STATUS) {
            MAMComplianceNotification complianceNotification = (MAMComplianceNotification) notification;

            // take appropriate action based on complianceNotification.getComplianceStatus()

            // unregister this receiver if no longer needed
            notificationRegistry.unregisterReceiver(this, MAMNotificationType.COMPLIANCE_STATUS);
        }
        return true;
    }
};
// register the receiver
notificationRegistry.registerReceiver(receiver, MAMNotificationType.COMPLIANCE_STATUS);

Примечание.

Перед вызовом remediateCompliance() необходимо зарегистрировать получателя уведомлений, чтобы избежать состояния гонки, которое может привести к отсутствовать уведомление.

Объявление о поддержке ЦС защиты приложений

Когда приложение будет готово к исправлению ЦС приложения, вы можете сообщить Microsoft Identity, что приложение готово к ЦС приложения. Для этого в приложении MSAL создайте общедоступный клиент с возможностями клиента protapp.

{
      "client_id" : "[YOUR_CLIENT_ID]",
      "authorization_user_agent" : "DEFAULT",
      "redirect_uri" : "[YOUR_REDIRECT_URI]",
      "multiple_clouds_supported":true,
      "broker_redirect_uri_registered": true,
      "account_mode": "MULTIPLE",
      "client_capabilities": "protapp",
      "authorities" : [
        {
          "type": "AAD",
          "audience": {
            "type": "AzureADandPersonalMicrosoftAccount"
          }
        }
      ]
    }

После завершения действий перейдите к проверке ЦС защиты приложений.

Заметки о реализации

Примечание.

Метод приложения MAMServiceAuthenticationCallback.acquireToken() должен передать значение false для флага forceRefresh в acquireTokenSilentAsync().

AcquireTokenSilentParameters acquireTokenSilentParameters =
        builder.withScopes(Arrays.asList(scopes))
               .forceRefresh(false)
               .build();

acquireTokenSilentAsync(acquireTokenSilentParameters);

Примечание.

Если во время попытки исправления необходимо отобразить настраиваемый блокирующий пользовательский интерфейс, необходимо передать значение false для параметра showUX в remediateCompliance(). Перед вызовом remediateCompliance()необходимо убедиться, что отображается пользовательский интерфейс и регистрируется прослушиватель уведомлений. Это предотвращает состояние гонки, в котором уведомление может быть пропущено в случае remediateCompliance() быстрого сбоя. Например, onCreate() метод или onMAMCreate() подкласса Activity является идеальным местом для регистрации прослушивателя уведомлений и последующего вызова remediateCompliance(). Параметры для remediateCompliance() могут быть переданы вашему пользовательскому интерфейсу в качестве дополнительных элементов намерения. При получении уведомления о состоянии соответствия можно отобразить результат или завершить действие.

Примечание.

remediateCompliance() регистрирует учетную запись и пытается выполнить регистрацию. После получения основного маркера вызов registerAccountForMAM() не требуется, но в этом нет никакого вреда. С другой стороны, если приложению не удается получить маркер и оно хочет удалить учетную запись пользователя, оно должно вызвать метод unregisterAccountForMAM() , чтобы удалить учетную запись и предотвратить повторные попытки фоновой регистрации.

Регистрация для получения уведомлений из пакета SDK

В руководстве по пакету SDK для приложений Intune рассматриваются несколько сценариев, в которых приложению может потребоваться регистрация для получения уведомлений из пакета SDK, например:

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

Типы уведомлений

Все уведомления пакета SDK реализуют интерфейс MAMNotification , который имеет одну функцию , getType()которая возвращает перечисление MAMNotificationType .

Большинство уведомлений — это экземпляры MAMUserNotification , которые предоставляют сведения, относящиеся к одному удостоверению. Идентификатор идентификатора удостоверения можно получить с помощью getUserOid() функции, а имя участника-пользователя — с помощью getUserIdentity().

MAMEnrollmentNotification и MAMComplianceNotification дополнительно расширяют MAMUserNotification, который содержит результаты попыток регистрации пользователя или устройства в службе MAM и результаты попыток исправления соответствия для ЦС защиты приложений соответственно.

Тип уведомления Класс Notification Причина уведомления Применимость Советы по обработке Сведения о потоке
COMPLIANCE_STATUS MAMComplianceNotification Возвращает результат попытки исправления соответствия. Приложения, реализующие ЦС защиты приложений, должны обрабатывать это. Недетерминированным
MAM_ENROLLMENT_RESULT MAMEnrollmentNotification Возвращает результат попытки регистрации. Все приложения получают это. Недетерминированным
MANAGEMENT_REMOVED MAMUserNotification Приложение станет неуправляемой. Приложения, которые используют MAMDataProtectionManager эту функцию, должны обрабатывать эту функцию. См . MANAGEMENT_REMOVED. Никогда не в потоке пользовательского интерфейса
REFRESH_APP_CONFIG MAMUserNotification Возможно, изменились значения конфигурации приложения. Приложения, которые реализуют конфигурацию приложений и кэшируют данные конфигурации приложений, должны обрабатывать это. Приложения должны быть недействительными и обновлять все кэшированные данные конфигурации приложений. Недетерминированным
REFRESH_POLICY MAMUserNotification возможно, политика защита приложений изменилась. Приложения, которые кэшируют политику защиты приложений, должны обрабатывать эту политику. Приложения должны сделать недействительными и обновлять кэшированные данные политики защиты приложений. Недетерминированным
WIPE_USER_DATA MAMUserNotification Очистка будет выполняться (*). Приложения, использующие MAMDataProtectionManager эту функцию,WIPE_USER_AUXILIARY_DATA должны обрабатывать или. См . раздел Выборочная очистка. Никогда не в потоке пользовательского интерфейса
WIPE_USER_AUXILIARY_DATA MAMUserNotification Очистка будет выполняться (*). Это получают только приложения с несколькими удостоверениями.
Приложения, использующие MAMDataProtectionManager эту функцию,WIPE_USER_DATA должны обрабатывать или.
См . раздел Выборочная очистка. Никогда не в потоке пользовательского интерфейса
WIPE_COMPLETED MAMUserNotification Очистка завершена. Необязательный параметр для всех приложений. Доставлено после WIPE_USER_DATA или WIPE_USER_AUXILIARY_DATA.
Если приложение сообщает о сбое от обработчика очистки, это уведомление не будет отправлено.
Никогда не в потоке пользовательского интерфейса

(*) Очистка может происходить по многим причинам, например:

  • Ваше приложение называется unregisterAccountForMAM.
  • ИТ-администратор инициировал удаленную очистку.
  • Администратор необходимые политики условного доступа не были удовлетворены.

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

Приложение никогда не должно регистрироваться как для уведомлений, WIPE_USER_DATA так и WIPE_USER_AUXILIARY_DATA .

MANAGEMENT_REMOVED

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

Для этого не требуется очистка данных пользователя или выход пользователя (если требуется очистка WIPE_USER_DATA , будет отправлено уведомление). Многим приложениям может не потребоваться обрабатывать это уведомление, но приложения, которые используют MAMDataProtectionManager это, должны обрабатывать это. Дополнительные сведения см. в разделе Защита буфера данных .

Когда пакет SDK вызывает получателя приложения MANAGEMENT_REMOVED , выполняется следующее:

  • Пакет SDK уже расшифровал ранее зашифрованные файлы (но не защищенные буферы данных), принадлежащие приложению. Файлы в общедоступных расположениях карта SD, которые не принадлежат непосредственно приложению (например, папки "Документы" или "Скачать"), не расшифровываются.

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

  • Приложение по-прежнему имеет доступ к ключам шифрования, поэтому такие операции, как расшифровка буферов данных, успешно выполняются.

После возврата получателя приложения у него больше нет доступа к ключам шифрования.

Реализация MAMNotificationReceiver

Чтобы зарегистрироваться для получения уведомлений из пакета SDK, приложение должно создать MAMNotificationReceiver и зарегистрировать его в MAMNotificationReceiverRegistry.

Чтобы зарегистрировать получателя, вызовите registerReceiver у получателя и требуемый тип уведомления в методе Application.onCreate :

@Override
public void onCreate() {
  super.onCreate();
  MAMComponents.get(MAMNotificationReceiverRegistry.class)
    .registerReceiver(
      new ToastNotificationReceiver(),
      MAMNotificationType.WIPE_USER_DATA);
}

Реализация MAMNotificationReceiver приложения должна включать onReceive(MAMNotification notification) метод . Этот метод вызывает по отдельности для каждого полученного уведомления и должен возвращать boolean. Как правило, этот метод всегда должен возвращать true, если приложение не обнаружило ошибку, отвечая на уведомление.

Как и в случае с другими типами получателей Android, ваше приложение обладает гибкостью при обработке уведомлений:

  • Он может создавать отдельные реализации MAMNotificationReceiver для отдельных типов уведомлений. В этом случае убедитесь, что каждая реализация и тип уведомления регистрируются отдельно.
  • Он может использовать одну реализацию MAMNotificationReceiver , которая содержит логику для реагирования на несколько различных типов уведомлений. В этом случае оно должно быть зарегистрировано для каждого типа уведомлений, на которые он может отвечать.
  • Он может создать несколько реализаций MAMNotificationReceiver , каждая из которых отвечает на один и тот же тип уведомления. В этом случае оба уведомления должны быть зарегистрированы в одном типе уведомлений.

Совет

Его можно заблокировать MAMNotificationReceiver.onReceive , так как обратный вызов не выполняется в потоке пользовательского интерфейса.

Пользовательские темы

Пользовательская тема может быть предоставлена пакету SDK для приложений Intune. Эта настраиваемая тема применяется ко всем экранам и диалоговым окнам пакета SDK. Если тема не указана, используется тема пакета SDK по умолчанию.

Предоставление пользовательской темы

Чтобы указать тему, добавьте следующую строку кода в Application.onMAMCreate метод:

MAMThemeManager.setAppTheme(R.style.AppTheme);

В примере замените R.style.AppTheme темой стиля, которую должен применить пакет SDK.

Управление доверенными корневыми сертификатами

Если приложению требуются СЕРТИФИКАТЫ SSL/TLS, выданные локальным или частным центром сертификации для обеспечения безопасного доступа к внутренним веб-сайтам и приложениям, пакет SDK для приложений Intune добавил поддержку управления доверием к сертификатам с помощью классов API MAMTrustedRootCertsManager и MAMCertTrustWebViewClient.

Примечание.

MAMCertTrustWebViewClient поддерживает Android 10 или более поздней версии.

Управление доверенными корневыми сертификатами обеспечивает поддержку:

  • SSLContext
  • SSLSocketFactory
  • TrustManager
  • WebView

Требования

Примечание.

Управление доверенными корневыми сертификатами можно использовать независимо от VPN-шлюз Microsoft Tunnel, но для использования необходимо лицензировать Microsoft MAM Tunnel.

Использование доверенных корневых сертификатов из Intune для установления привязок доверия

Управление доверенными корневыми сертификатами позволяет приложению использовать доверенные корневые сертификаты из Intune в сочетании с сертификатами с устройства.

Классы API MAMTrustedRootCertsManager и MAMCertTrustWebViewClient используют Intune доверенных корневых сертификатов, доставляемых через политику Конфигурация приложений, в качестве резервного варианта, если доверенные корневые хранилища устройств не содержат необходимых доверенных корневых сертификатов для установления безопасного подключения к локальным ресурсам. Таким образом, приложение может использовать сертификаты устройства и Intune для проверки безопасных подключений и связи с доверенными источниками.

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

  • Пользовательские привязки доверия с дополнительными центрами сертификации, такими как самозаверяемые сертификаты.
  • Правила для конкретной области для ограничения доверенных ЦС.
  • Наборы закреплений для сертификатов для определенных доменов.

Примечание.

Дополнительные сведения о конфигурации безопасности сети Android см. в разделе Конфигурация безопасности сети.

Если какое-либо из них относится к домену, который проверяется на доверие, то управление доверенными корневыми сертификатами пропускает настраиваемые проверки доверия для этого домена и позволяет выполнять проверки только диспетчерам доверия платформы по умолчанию.

Класс MAMTrustedRootCertsManager

Этот класс предоставляет следующие API:

  • createSSLContextForOID(String oid, String protocol): создает SSLContext объект, который использует доверенные корневые сертификаты для указанного удостоверения и указанного протокола SSL/TLS. Возвращенный SSLContext объект из этого класса уже правильно инициализирован объектами X509TrustManager , которые используют объединенные доверенные корневые сертификаты устройства и службы MAM.
  • createSSLSocketFactoryForOID(String oid, String protocol): создает SSLSocketFactory объект, который использует доверенные корневые сертификаты для указанного удостоверения и указанного протокола SSL/TLS. На возвращенный SSLSocketFactory объект ссылается тот же SSLContext объект в этом классе.
  • createX509TrustManagersForOID(String oid): создает массив X509TrustManager объектов, использующих объединенные доверенные корневые сертификаты устройства и службы MAM для указанного удостоверения.

Примечание.

Ожидаетсяoid, что параметр будет Microsoft Entra идентификатором пользователя (OID) для конкретного пользователя, который запускает приложение. Если идентификатор пользователя неизвестен заранее, можно передать значение null и MAM пытается обнаружить правильное удостоверение из потока или процесса, в котором вызываются эти API. Удостоверение должно быть правильно задано в процессе или потоке, чтобы MAM обнаружил удостоверение. Дополнительные сведения о настройке активного удостоверения в процессе или потоке см. в разделе Этап 5. Несколько удостоверений.

Примечание.

protocol Если параметр не указан, платформа использует самый высокий поддерживаемый протокол SSL/TLS.

Ниже приведены некоторые примеры использования этого класса.

Пример использования HttpsUrlConnection
// Create an SSL socket factory using supplying the optional parameters identity and protocol
SSLSocketFactory sslSocketFactory = MAMTrustedRootCertsManager.createSSLSocketFactoryForOID(oid, "TLSv1.3");

// Create a URL object for the desired endpoint
URL url = new URL("https://example.com");

// Open a connection using the URL object
HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();

// Set the SSL socket factory for the connection
httpsURLConnection.setSSLSocketFactory(sslSocketFactory);

// Perform any other configuration or operations on the connection as needed
...
Пример использования OkHttpClient
// Get the TrustManager instances for an identity from the SDK
TrustManager[] trustManagers = MAMTrustedRootCertsManager.createX509TrustManagersForOID(oid);

// Get SSLContext from the platform
SSLContext sslContext = SSLContext.getInstance("TLSv1.3");

// Initialize the SSLContext with the trust managers from the Intune App SDK
sslContext.init(null, trustManagers, null);

// Create an OkHttpClient.Builder object
OkHttpClient.Builder builder = new OkHttpClient.Builder();

// Set the SSLSocketFactory and the trust managers from the SDK
builder.sslSocketFactory(sslContext.socketFactory, trustManagers[0] as X509TrustManager).build();

// Build an OkHttpClient object from the builder
OkHttpClient okHttpClient = builder.build();

// Create a Request object for the desired endpoint
Request request = new Request.Builder().url("https://example.com").build();

// Execute the request using the OkHttpClient object and get a Response object
Response response = okHttpClient.newCall(request).execute();

// Perform any other operations on the response as needed
...

Класс MAMCertTrustWebViewClient

Этот класс предоставляет пользовательскую реализацию класса android.webkit.WebViewClientAndroid . Класс предоставляет способ обработки ошибки android.net.http.SslError.SSL_UNTRUSTED SSL в WebView.

При обработке ошибки класс использует доверенные корневые сертификаты, которые Intune настраивается и предоставляет служба MAM. Этот подход проверяет надежность узла из целевого URL-адреса, который вызвал ошибку SSL в WebView. Если пользовательская реализация не обрабатывает ошибку SSL, система вызывает поведение по умолчанию, унаследованное от суперкласса.

При использовании этого класса создайте его экземпляр, а затем вызовите WebView.setWebViewClient(WebViewClient) , чтобы зарегистрировать его в экземпляре WebView .

Ниже приведен пример использования этого класса.

Пример использования WebView
// Get the MAM implementation of WebViewClient from the Intune App SDK
MAMCertTrustWebViewClient mamCertTrustWebViewClient = new MAMCertTrustWebViewClient();

// Set the MAM WebViewClient from the SDK as the current handler on the instance of WebView
webView.setWebViewClient(mamCertTrustWebViewClient);

// Perform any other operations on WebView
...

Условия выхода

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

Проверка сохранения в и открытия из ограничений

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

Настройтесь в каждом сценарии, в котором приложение может сохранять данные в облачных службах или локальных данных, а также открывать данные из облачных служб или локальных данных.

Для простоты в этих тестах предполагается, что ваше приложение поддерживает только сохранение и открытие данных из OneDrive из одного расположения в приложении. Однако необходимо проверить каждое сочетание: каждое поддерживаемое расположение сохранения для каждого места, где приложение позволяет сохранять данные, и каждое поддерживаемое открытое расположение для каждого места, где приложение разрешает открывать данные.

Для этих тестов установите приложение и Корпоративный портал Intune; перед началом теста войдите с помощью управляемой учетной записи. Кроме того:

  • Задайте политику управляемой учетной записи следующим образом:
    • Для параметра "Отправка данных организации в другие приложения" задайте значение "Приложения, управляемые политикой".
    • Для параметра "Получение данных из других приложений" задайте значение "Приложения, управляемые политикой".
Сценарий Предпосылки Действия
Сохранить в, полностью разрешено Для политики "Сохранение копий данных организации" задано значение Разрешить. — Перейдите к части приложения, где можно сохранить данные в OneDrive.
— Попробуйте сохранить документ в OneDrive с помощью той же управляемой учетной записи, вошедшего в приложение.
— Убедитесь, что сохранение разрешено.
Сохранить в, исключить — Для политики "Сохранение копий данных организации" задано значение Блокировать.
— Политика "Разрешить пользователям сохранять копии в выбранных службах", настроенная только в OneDrive .
— Перейдите к части приложения, где можно сохранить данные в OneDrive.
— Попробуйте сохранить документ в OneDrive с помощью той же управляемой учетной записи, вошедшего в приложение.
— Убедитесь, что сохранение разрешено.
— Если приложение разрешает это, попробуйте сохранить файл в другом расположении облачного хранилища и убедитесь, что он заблокирован.
Сохранить в, заблокировано Для политики "Сохранение копий данных организации" задано значение Блокировать — Перейдите к части приложения, где можно сохранить данные в OneDrive.
— Попробуйте сохранить документ в OneDrive с помощью той же управляемой учетной записи, вошедшего в приложение.
— Убедитесь, что сохранение заблокировано.
— Если приложение разрешает это, попробуйте сохранить файл в другом расположении облачного хранилища и убедитесь, что он заблокирован.
Открыть с, полностью разрешено Для политики "Открытие данных в документах организации" задано значение Разрешить. — Перейдите к части приложения, где можно открывать данные из OneDrive.
— Попытка открыть документ из OneDrive с помощью той же управляемой учетной записи, вошедшего в хранилище приложения.
— Убедитесь, что открытие разрешено.
Открытие из, исключение — Для политики "Открытие данных в документах организации" задано значение Блокировать.
— Политика "Разрешить пользователям открывать данные из выбранных служб", настроенная только в OneDrive .
— Перейдите к части приложения, где можно открывать данные из OneDrive.
— Попытка открыть документ из OneDrive с помощью той же управляемой учетной записи, вошедшего в хранилище приложения.
— Убедитесь, что открытие разрешено.
— Если приложение разрешает это, попробуйте открыть другой файл из другого расположения облачного хранилища и убедитесь, что он заблокирован.
Открыть с, заблокировать Для политики "Открытие данных в документах организации" задано значение Блокировать — Перейдите к части приложения, где можно открывать данные из OneDrive.
— Попытка открыть документ из OneDrive с помощью той же управляемой учетной записи, вошедшего в хранилище приложения.
— Убедитесь, что открытие заблокировано.
— Если приложение разрешает это, попробуйте открыть другой файл из другого расположения облачного хранилища и убедитесь, что он заблокирован.

Проверка ограничений уведомлений

Пропустите этот раздел, если вы не реализовали политику для ограничения содержимого в уведомлениях.

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

  1. Уведомления, не содержащие никаких данных учетной записи.
  2. Уведомления, содержащие данные, принадлежащие управляемой учетной записи.
  3. Уведомления, содержащие данные, принадлежащие неуправляемой учетной записи.

Если приложение является единым удостоверением, актуальны только первые два, так как защита не применяется, если единственная учетная запись неуправляема.

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

Для этих тестов установите приложение и Корпоративный портал Intune; перед началом теста войдите с помощью управляемой учетной записи. Если приложение имеет несколько удостоверений, войдите в приложение с помощью неуправляемой учетной записи.

Сценарий Предпосылки Действия
Полное содержимое заблокировано Для политики "Уведомления о данных организации" задано значение Блокировать — активируйте приложение для запуска уведомления без данных учетной записи.
— Убедитесь, что в уведомлении не отображается содержимое.
— активируйте приложение для запуска уведомления с данными управляемой учетной записи.
— Убедитесь, что в уведомлении не отображается содержимое.
— активируйте приложение для запуска уведомления с данными неуправляемой учетной записи.
— Убедитесь, что в уведомлении не отображается содержимое.
Частичное содержимое заблокировано Для политики "Уведомления о данных организации" задано значение Блокировать данные организации — активируйте приложение для запуска уведомления без данных учетной записи.
— Убедитесь, что в уведомлении отображается полное содержимое.
— активируйте приложение для запуска уведомления с данными управляемой учетной записи.
— Убедитесь, что уведомление отредактирует содержимое управляемой учетной записи.
— активируйте приложение для запуска уведомления с данными неуправляемой учетной записи.
— Убедитесь, что в уведомлении отображается полное содержимое.
Содержимое не заблокировано Для политики "Уведомления о данных организации" задано значение Разрешить. — активируйте приложение для запуска уведомления без данных учетной записи.
— Убедитесь, что в уведомлении отображается полное содержимое.
— активируйте приложение для запуска уведомления с данными управляемой учетной записи.
— Убедитесь, что в уведомлении отображается полное содержимое.
— активируйте приложение для запуска уведомления с данными неуправляемой учетной записи.
— Убедитесь, что в уведомлении отображается полное содержимое.

Проверка резервного копирования и восстановления данных

Пропустите этот раздел, если вы не реализовали политику для защиты данных резервного копирования.

Переставьте содержимое (файлы и пары "ключ—значение"), для резервного копирования которое настроено приложением. Убедитесь, что только ожидаемое содержимое является частью восстановления. Дополнительное содержимое при восстановлении может привести к утечке данных.

Для этих тестов установите приложение и Корпоративный портал Intune; войдите с помощью управляемой учетной записи перед началом теста. Если ваше приложение имеет несколько удостоверений, войдите в приложение с помощью неуправляемой учетной записи.

Следуйте официальным инструкциям Android по тестированию резервного копирования. Эти инструкции отличаются для автоматического резервного копирования и резервного копирования ключей и значений, поэтому следуйте им внимательно.

Проверка пользовательского снимка экрана по политике

Пропустите этот раздел, если вы не реализовали настраиваемые ограничения захвата экрана.

Если в вашем приложении есть функция, которая обходит Android на уровне FLAG_SECURE, убедитесь, что эта функция заблокирована Windowограничениями снимка экрана политики защиты приложений.

Для этих тестов установите приложение и Корпоративный портал Intune; перед началом теста войдите с помощью управляемой учетной записи.

Сценарий Предпосылки Действия
Снимок экрана заблокирован Для политики "Захват экрана и Google Помощник" задано значение Блокировать — Перейдите к части приложения, которая использует пользовательский FLAG_SECURE код.
— попытка использовать эту функцию.
— Убедитесь, что функция заблокирована.
Снимок экрана разрешен Для политики "Захват экрана и Помощник Google" задано значение Разрешить — Перейдите к части приложения, которая использует пользовательский FLAG_SECURE код.
— попытка использовать эту функцию.
— Убедитесь, что функция разрешена.

Проверка ЦС защиты приложений

Пропустите этот раздел, если вы не реализовали центр поддержки защиты приложений.

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

Шаги тестирования:

  1. Удалите Microsoft Authenticator и Корпоративный портал Intune перед началом этого теста.
  2. Установите приложение.
  3. Войдите в приложение с помощью тестовой учетной записи, предназначенной для политики защиты приложений и политики ЦС на основе приложений.
  4. Убедитесь, что приложение предлагает установить Корпоративный портал.
  5. Снова выполните вход.
  6. Убедитесь, что приложение предлагает зарегистрировать устройство. Следуйте инструкциям. Если ваше приложение не запрашивает регистрацию здесь, убедитесь, что тестовое устройство сначала удалило другие приложения с поддержкой пакета SDK, Корпоративный портал и Authenticator. Если запрос по-прежнему не отображается, вернитесь к инструкциям по реализации.
  7. Убедитесь, что вы можете получить доступ ко всем данным приложения после регистрации.

Проверка получателей уведомлений

Пропустите этот раздел, если вы не реализовали регистрацию для уведомлений из пакета SDK.

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

MAM_ENROLLMENT_RESULT Можно активировать, выполнив вход в приложение с учетной записью, на которую нацелена политика защиты приложений.

Вы можете активировать REFRESH_APP_CONFIG и REFRESH_POLICY путем обновления соответствующей политики Конфигурация приложений и политики защиты приложений, предназначенных для тестовой учетной записи и ожидающих получения обновленной политики пакета SDK.

Совет

Чтобы ускорить этот процесс, см. статью Быстрое тестирование с изменением политики .

Уведомления , WIPE_USER_DATA, WIPE_USER_AUXILIARY_DATAи WIPE_COMPLETED можно активироватьMANAGEMENT_REMOVED, выполнив выборочную очистку с Microsoft Intune.

Проверка пользовательских тем

Пропустите этот раздел, если вы не реализовали пользовательские темы.

Вы можете проверить поддержку пользовательской темы, проверив цвета в диалоговых окнах пакета SDK. Самое простое диалоговое окно для проверка — экран ПИН-кода MAM.

Предпосылки:

  • Задайте политику управляемой учетной записи следующим образом:
    • Для параметра "ПИН-код для доступа" задайте значение "Обязательный".
  • Установите приложение и Корпоративный портал Intune.

Шаги тестирования:

  1. Запустите приложение и войдите с помощью тестовой учетной записи.
  2. Убедитесь, что отображается экран ПИН-кода MAM, который основан на пользовательской теме, предоставленной пакету SDK.

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

Если вы выполнили это руководство по порядку и выполнили все условия выхода, описанные выше в этой статье, ваше приложение теперь полностью интегрировано с пакетом SDK для Intune приложений и может применять политики защиты приложений. Если вы пропустили один из предыдущих разделов участия в приложении, Этап 5. Многоудостоверение и Этап 6: Конфигурация приложений, и вы не уверены, должно ли ваше приложение поддерживать эти функции, вернитесь к ключевым решениям для интеграции пакета SDK.

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