Разрешения 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.
- Напоминание о местоположении фонового доступа показывает пользователям, когда приложение получает доступ к местоположению их устройства с использованием разрешения
ACCESS_FINE_LOCATION
в фоновом режиме. - Доступ к данным, связанным с привязкой контактов, управляемым компонентом поставщика контактов, осуществляется по-другому: приложения не могут записывать или считывать данные о привязке контактов в базе данных. Это влияет на API, связанные с вызывающей стороной .
Оптимизированные конфигурации
Конфигурации разрешений были оптимизированы для 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 и выше.