Les autorisations Android fournissent des commandes qui sensibilisent les utilisateurs et limitent l'accès d'une application aux données sensibles. La configuration des autorisations sur Android 8.0 et versions antérieures inclut la liste d'autorisation, sans laquelle les applications privilégiées sont désactivées, même si elles se trouvent dans le chemin d'accès priv-app
. Sur Android 9 ou version ultérieure, un appareil qui tente d'utiliser des applications qui ne sont pas correctement ajoutées à la liste d'autorisation ne démarre pas.
Android 10 a introduit le concept de rôle, un nom unique dans le système associé à certaines exigences et certains droits. Attribuez des rôles aux applications pour leur accorder des autorisations dans un but spécifique, et configurez des rôles par défaut à l'aide des ressources de configuration de la plate-forme.
Les protections renforcées contre les applications potentiellement dangereuses (PHA) sont améliorées:
- Transparence sur le comportement des applications potentiellement dangereuses
- Contrôle des utilisateurs sur le comportement de l'application.
- À la discrétion des développeurs d'applications lorsqu'ils utilisent des données privées, protégées par des autorisations.
Installation et autorisation de packages
Sous Android 9 et versions antérieures, les fonctionnalités d'installation de package et de contrôle des autorisations étaient contenues dans le package PackageInstaller
(//packages/apps/PackageInstaller
). Sous Android 10 et versions ultérieures, la fonctionnalité de contrôle des autorisations se trouve dans un package distinct, PermissionController
(//packages/apps/PermissionController
). La figure 1 illustre l'emplacement des deux packages sous Android 10.
Figure 1 : Fonctionnalités d'installation de packages et de contrôle des autorisations sous Android 10
Autorisations et accès
Dans Android 6.0 et versions ultérieures, les applications demandent l'accès à des autorisations dangereuses au moment de l'exécution. Android 10 ajoute des autorisations d'exécution de la reconnaissance d'activité (RA), qui invitent l'utilisateur à modifier ou à autoriser des autorisations dangereuses.
Android 8.0 vous obligeait à ajouter explicitement les applications privilégiées à la liste d'autorisation dans les fichiers XML de configuration du système du répertoire /etc/permissions
.
Sous Android 9 ou version ultérieure, les autorisations privilégiées doivent être ajoutées à la liste d'autorisation, sinon l'appareil ne peut pas démarrer.
Pour limiter la visibilité des API internes et empêcher les applications d'accéder accidentellement aux bibliothèques de la plate-forme, Android 7.0 a introduit les espaces de noms pour les bibliothèques natives. Cela permet de séparer les bibliothèques système des bibliothèques d'application, et les fabricants d'appareils peuvent ajouter leurs propres bibliothèques natives.
À partir d'Android 10, les applications doivent disposer à la fois d'autorisations de signature et du consentement de l'utilisateur pour accéder au contenu de l'écran d'un appareil. Les applications privilégiées qui s'appuient sur la fonctionnalité de capture silencieuse, comme la capture d'écran, doivent utiliser la classe MediaProjection à la place.
Android 15 vous oblige à ajouter à la liste d'autorisation explicitement les autorisations de signature de plate-forme demandées par des applications non système ou nouvellement demandées par des mises à jour d'applications système, dans les fichiers XML de configuration système du répertoire /etc/permissions
.
Transparence et confidentialité
Dans Android 6.0 et versions ultérieures, l'adresse MAC d'usine d'un appareil est protégée contre l'accès par les fournisseurs de services Wi-Fi et les analyseurs de paquets. Des restrictions supplémentaires à partir d'Android 10 empêchent les applications d'accéder aux identifiants d'appareil (ID) immuables, sauf si elles sont inscrites sur la liste d'autorisation pour les autorisations privilégiées. (La section Connectivité fournit une discussion connexe sur les identifiants d'appareil, car cela a un impact sur les opérateurs.)
Sous Android 9 ou version antérieure, les utilisateurs font des choix permanents lorsqu'ils accordent aux applications l'accès à la position. À partir d'Android 10, une fonctionnalité d'autorisations d'accéder à la position à trois états offre aux utilisateurs trois options pour autoriser l'application à accéder à la position d'un appareil. Ces exigences d'autorisation s'appliquent aux applications dans Android 10, quel que soit le SDK cible.
Configurer les autorisations pour d'autres fonctionnalités de transparence et de confidentialité à partir d'Android 10
- Le rappel d'
accès en arrière-plan aux données de localisation indique aux utilisateurs lorsqu'une application accède à la position de leur appareil à l'aide de l'autorisation
ACCESS_FINE_LOCATION
en arrière-plan. - L'accès aux données liées aux affinités de contact, gérées par le composant du fournisseur de contacts, est différent: les applications ne peuvent pas écrire ni lire les données d'affinités de contact dans la base de données. Cela affecte les API liées à l'appelant.
Configurations simplifiées
Les configurations d'autorisations ont été simplifiées pour Android 6.0 et versions ultérieures.
- Les fonctionnalités d'ambiance pour les services lancés par
init
conservent tous les aspects de la configuration du service dans un seul fichier.rc
. Lorsque vous définissez des fonctionnalités pour des services non lancés parinit
, configurez plutôt les fonctionnalités du système de fichiers à l'aide defs_config.c
. - Android 7.x et versions antérieures étendent le mécanisme des ID Android (AID) à l'aide d'un fichier
android_filesystem_config.h
spécifique à l'appareil pour spécifier les fonctionnalités du système de fichiers et/ou les AID personnalisés du fabricant de l'appareil. Android 8.0 et les versions ultérieures sont compatibles avec une nouvelle méthode permettant d'étendre les fonctionnalités du système de fichiers. - Dans Android 8.0, la gestion des commandes USB a été déplacée des scripts
init
spécifiques à l'appareil (un remplacement des couches HAL) vers un démon USB natif. L'interface USB HAL doit être implémentée sur chaque appareil lancé sous Android 8.0 ou version ultérieure.