Les autorisations Android fournissent des contrôles 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 blanche, sans laquelle les applications privilégiées sont désactivées, même si elles se trouvent dans le chemin priv-app
. Sur Android 9 et versions ultérieures, un appareil qui tente d'utiliser des applications qui ne sont pas correctement répertoriées ne démarrera pas.
Android 10 a introduit le concept de rôle , un nom unique au sein du système associé à certaines exigences et privilèges. Attribuez des rôles aux applications pour leur accorder des autorisations dans un but spécifique et configurez les rôles par défaut à l'aide des ressources de configuration de la plateforme.
Les protections accrues contre les applications potentiellement nuisibles (PHA) s'améliorent
- Transparence sur le comportement potentiellement dangereux des applications.
- Contrôle de l'utilisateur sur le comportement de l'application.
- La discrétion des développeurs d'applications lors de l'utilisation de données privées, protégées par des autorisations.
Installation et autorisation du package
Sous Android 9 et versions antérieures, les fonctionnalités d'installation du 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 réside dans un package distinct, PermissionController
( //packages/apps/PermissionController
). La figure 1 illustre l'emplacement des deux packages dans Android 10.
Listes autorisées et accès
Sous 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 reconnaissance d'activité (AR), qui invitent l'utilisateur à modifier ou à autoriser des autorisations dangereuses.
Android 8.0 vous obligeait à autoriser explicitement les applications privilégiées dans les fichiers XML de configuration du système dans le répertoire /etc/permissions
. Sous Android 9 et versions ultérieures, 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é de l'API interne 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 sépare les bibliothèques système des bibliothèques d'applications 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 prise d'écran, doivent plutôt utiliser la classe MediaProjection .
Transparence et confidentialité
Sous 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 limitent l'accès des applications aux identifiants (ID) d'appareil immuables , à moins qu'elles ne soient inscrites sur la liste verte pour des autorisations privilégiées . (La section Connectivité fournit une discussion connexe sur les identifiants de périphérique , car cela a un impact sur les opérateurs.)
Sur Android 9 et versions antérieures, les utilisateurs font des choix persistants lorsqu'ils accordent l'accès à la localisation des applications. À partir d'Android 10, une fonctionnalité d'autorisations de localisation à trois états offre aux utilisateurs trois options pour autoriser l'application à accéder à l'emplacement d'un appareil. Ces exigences d'autorisation sont appliquées aux applications sous 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 de l'emplacement d'accès en arrière-plan montre aux utilisateurs lorsqu'une application accède à l'emplacement de leur appareil à l'aide de l'autorisation
ACCESS_FINE_LOCATION
en arrière-plan. - Les données liées à l'affinité des contacts, gérées par le composant Fournisseur de contacts, sont accessibles différemment : les applications ne peuvent pas écrire ni lire à partir des données d'affinités des contacts dans la base de données. Cela a un impact sur les API liées aux appelants .
Configurations rationalisées
Les configurations des autorisations ont été rationalisées pour Android 6.0 et versions ultérieures.
- Les fonctionnalités ambiantes pour les services lancés par
init
conservent tous les aspects de la configuration du service dans un seul fichier.rc
. Lors de la définition des fonctionnalités 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), en utilisant un fichier
android_filesystem_config.h
spécifique à l'appareil pour spécifier les capacités du système de fichiers et/ou les AID personnalisés du fabricant de l'appareil. Android 8.0 et versions ultérieures prennent en charge une nouvelle méthode pour étendre les capacités du système de fichiers . - Dans Android 8.0, la gestion des commandes USB est passée des scripts
init
spécifiques à l'appareil (une substitution aux couches HAL) et à un démon USB natif. L'interface USB HAL doit être implémentée sur chaque appareil lancé sous Android 8.0 et supérieur.