Autorisations Android

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 les versions antérieures inclut l'ajout à la liste d'autorisation, sans lequel 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 et versions ultérieures, un appareil qui tente d'utiliser des applications qui ne sont pas correctement ajoutées à la liste d'autorisation ne démarrera 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) permettent d'améliorer :

  • Transparence sur le comportement des applications potentiellement dangereuses.
  • L'utilisateur contrôle le comportement de l'application.
  • Les développeurs d'applications sont libres d'utiliser les données privées protégées par des autorisations.

Installation et autorisation des packages

Dans Android 9 et versions antérieures, les fonctionnalités d'installation de packages et de contrôle des autorisations étaient contenues dans le package PackageInstaller (//packages/apps/PackageInstaller). Dans 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.

Séparation des fonctionnalités d'installation de packages et de contrôle des autorisations pour les applications système et celles installées par l'utilisateur

Figure 1 : Fonctionnalités d'installation de packages et de contrôle des autorisations dans Android 10

Listes d'autorisation et accès

Sous Android 6.0 ou version ultérieure, les applications demandent l'accès aux autorisations dangereuses lors de l'exécution. Android 10 ajoute des autorisations d'exécution pour la reconnaissance d'activité (AR), qui invitent l'utilisateur à modifier ou autoriser les autorisations dangereuses.

Android 8.0 exigeait que vous ajoutiez explicitement les applications privilégiées à la liste d'autorisation dans les fichiers XML de configuration système du répertoire /etc/permissions. Dans 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é des API internes et empêcher les applications d'accéder accidentellement aux bibliothèques de 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 de captures d'écran, doivent utiliser la classe MediaProjection à la place.

Android 15 vous oblige à ajouter explicitement à la liste d'autorisation les autorisations de signature de plate-forme demandées par les applications non système ou nouvellement demandées par les mises à jour des applications système, dans les fichiers XML de configuration du 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 limitent l'accès des applications aux identifiants d'appareil immuables, sauf si elles sont autorisées pour les autorisations privilégiées. (La section Connectivité fournit des informations connexes 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 persistants lorsqu'ils accordent l'accès à la position aux applications. À partir d'Android 10, une fonctionnalité d'autorisations de localisation à trois états offre aux utilisateurs trois options pour autoriser l'accès d'une application à la position d'un appareil. Ces exigences en termes d'autorisations s'appliquent aux applications sous Android 10, quel que soit le SDK cible.

Configurer les autorisations pour les autres fonctionnalités de transparence et de confidentialité à partir d'Android 10

Configurations simplifiées

Les configurations d'autorisations ont été simplifié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. Lorsque vous définissez des capacités pour des services qui ne sont pas lancés par init, configurez les capacités du système de fichiers à l'aide de fs_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 sont compatibles avec une nouvelle méthode pour étendre les capacité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 aux appareils (qui remplacent les couches HAL) vers un démon USB natif. L'interface USB HAL doit être implémentée sur tous les appareils lancés sous Android 8.0 ou version ultérieure.