Разрешения Android

Разрешения Android предоставляют элементы управления, которые повышают осведомленность пользователей и ограничивают доступ приложения к конфиденциальным данным. Настройка разрешений на Android 8.0 и ниже включает в белый список, без которых привилегированные приложения отключены, даже если они находятся в priv-app путь. На Android 9 и выше устройство, которое пытается использовать приложения, не внесенные в белый список, не загружается.

Увеличенные средства защиты от потенциально вредоносных приложений (ПГА) улучшить

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

Установка пакета и разрешение

В Android 9 и ниже, пакет установки и управления разрешения функциональности содержатся в PackageInstaller пакете ( //packages/apps/PackageInstaller ). В Android 10 и выше, функциональность управления пребывает разрешения в отдельном пакете, PermissionController ( //packages/apps/PermissionController ). На рисунке 1 показано , где эти два пакета находятся в Android 10.

Разделение функций установки пакетов и контроля разрешений для системных приложений и функций, используемых приложениями, установленными пользователем.
Рисунок 1. Пакет установки и разрешение-контроль функциональности в Android 10

Белые списки и доступ

В Android 6.0 и выше, приложения запрашивают доступ к опасным разрешениям на время выполнения . В Android 10 добавлены разрешения времени выполнения для распознавания активности (AR), которые предлагают пользователю изменить или разрешить опасные разрешения.

Android 8.0 требуется вам явно белый список привилегированных приложений в файлах конфигурации системы XML в /etc/permissions каталога. В Android 9 и выше, привилегированные разрешения должны быть белый список или устройство не может загрузиться.

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

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

Прозрачность и конфиденциальность

В Android 6.0 и выше заводской MAC-адрес устройства защищен от доступа со стороны поставщиков услуг Wi-Fi и анализаторов пакетов. Дополнительные ограничения по состоянию на Android 10 предельных приложений от доступа к идентификаторам неизменных устройств (ID) , если они не в белом список для привилегированных прав доступа . (The Connectivity раздел содержит связанное обсуждение идентификаторов устройств , так как это влияет на носители.)

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

Настройте разрешения для других функций прозрачности и конфиденциальности, начиная с Android 10.

  • На расположение фона доступа напоминание показывает пользователям , когда приложение получает доступ к их местоположения устройства , используя ACCESS_FINE_LOCATION разрешение в фоновом режиме.
  • Контакты аффинность связанные данные, управляемый компонент Контактов поставщика, доступ по- разному: приложения не могут записывать или считывать контактную сродству данных в базе данных. Это влияет APIs абонентов , связанных с .

Оптимизированные конфигурации

Конфигурации разрешений были оптимизированы для Android 6.0 и выше.

  • Окружающие возможности для служб , запущенных init сохраняет все аспекты конфигурации службы в одном .rc файле. При настройке возможностей для услуг , не запущенных init , возможности файловой системы настроить с помощью fs_config.c вместо этого.
  • Android 7.x и снизить расширить механизм Android идентификаторы (AIDs), с использованием конкретного устройства android_filesystem_config.h файл для определения возможности файловой системы и / или пользовательские устройства со СПИДом производителя. Android 8.0 и выше поддерживает новый метод для расширения файловой системы возможности .
  • В Android 8.0, обработки команда USB переехала из конкретных устройств init скриптов (подмена HAL слоев) , и в родную USB - демон. HAL USB интерфейс должен быть реализован на каждом запуске устройства на Android 8.0 и выше.