Разрешения Android

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

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

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

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

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

В 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 появились пространства имён для собственных библиотек . Это разделяет системные библиотеки и библиотеки приложений, и производители устройств могут добавлять собственные собственные библиотеки.

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

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

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

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

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

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

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

Настройки разрешений были оптимизированы для Android 6.0 и выше.

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