Liste d'autorisation d'autorisations privilégiées

Les applications privilégiées sont des applications système situées dans un répertoire priv-app sur un de l'image système. Les partitions utilisées pour les versions d'Android sont les suivantes:

  • Android 9 ou version ultérieure: /system, /product, /vendor
  • Android 8.1 ou version antérieure: /system
<ph type="x-smartling-placeholder">

Auparavant, les fabricants d'appareils avaient peu de contrôle sur les signature | des autorisations privilégiées peuvent être accordées des applications privilégiées. À partir d'Android 8.0, les fabricants peuvent accorder explicitement des autorisations privilégiées dans les fichiers XML de configuration du système Répertoire /etc/permissions. À partir d'Android 9, les développeurs peuvent n’accordent ou refusent explicitement toutes les autorisations privilégiées. Si des autorisations privilégées ne sont pas accordées, l’appareil ne démarre pas.

Le fichier privapp-permissions.xml ne peut qu'accepter ou refuser les autorisations pour les applications privilégées sur la même partition. Par exemple, si une application sur la partition /product demande des autorisations privilégiées ; la demande ne peut être acceptée ou refusée que par un privapp-permissions.xml sur /product.

<ph type="x-smartling-placeholder">

Ajouter une liste d'autorisation

Les listes d'autorisation d'autorisations pour les applications peuvent être listées dans un seul fichier XML ou dans plusieurs Fichiers XML situés dans le répertoire frameworks/base/etc/permissions:

  • /etc/permissions/privapp-permissions-OEM_NAME.xml
  • /etc/permissions/privapp-permissions-DEVICE_NAME.xml

Aucune règle stricte ne s'applique à l'organisation du contenu. Les responsables de la mise en œuvre d’appareils peuvent déterminer la structure du contenu à condition que toutes les applis de /system/priv-app soient qui figurent sur la liste d'autorisation. Par exemple, Google a développé une liste d'autorisation unique pour toutes les applications privilégiées. Nous vous recommandons l'organisation suivante:

  • Autorisations pour les applications déjà incluses dans le Projet Android Open Source (AOSP) sont répertoriés dans /etc/permissions/privapp-permissions-platform.xml.
  • Pour les autres applications, utilisez les fichiers au format suivant : /etc/permissions/privapp-permissions-DEVICE_NAME.xml

Personnaliser une liste d'autorisation

AOSP comprend une implémentation de liste d'autorisation qui peut être personnalisée si nécessaire.

Si une autorisation doit être refusée, modifiez le fichier XML pour utiliser une balise deny-permission. au lieu d'une balise permission. Exemple :

<!-- This XML file declares which signature|privileged permissions to grant to
privileged apps that come with the platform -->

    <permissions>
      <privapp-permissions package="com.android.backupconfirm">
        <permission name="android.permission.BACKUP"/>
        <permission name="android.permission.CRYPT_KEEPER"/>
      </privapp-permissions>

      <privapp-permissions package="com.android.cellbroadcastreceiver">

        <!-- Don't allow the application to interact across users -->

        <deny-permission name="android.permission.INTERACT_ACROSS_USERS"/>
        <permission name="android.permission.MANAGE_USERS"/>
        <permission name="android.permission.MODIFY_PHONE_STATE"/>
        <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
        <permission name="android.permission.RECEIVE_EMERGENCY_BROADCAST"/>
      </privapp-permissions>
    ...

Trouver les autorisations manquantes

Pour rechercher les autorisations manquantes lors du démarrage d'un nouvel appareil, activez le mode de journalisation transitoire:

ro.control_privapp_permissions=log

Les cas de non-respect sont signalés dans le fichier journal. Des autorisations non privilégiées sont accordées. Cela permet de s'assurer que l'appareil reste en état de fonctionnement tout en fournissant la liste des les cas de non-respect. Le message d'erreur présente le format suivant:

PackageManager: Privileged permission {PERMISSION_NAME} for package {PACKAGE_NAME} - not in privapp-permissions allowlist

Tous les cas de non-respect doivent être résolus en ajoutant les autorisations manquantes aux listes d'autorisation appropriées. Notez que dans:

  • Sur Android 9 ou version ultérieure, le non-respect des autorisations privilégiées empêche l'appareil à partir de zéro. Au lieu de cela, vous devez explicitement autoriser ou refuser toutes les autorisations privilégiées.
  • Android 8.0 ou version antérieure, les autorisations manquantes ne sont pas accordées aux applications concernées, qui se trouve dans le chemin d'accès priv-app.

Appliquer une liste d'autorisation

Après avoir créé vos listes d'autorisation, activez l'application forcée de l'environnement d'exécution en définissant le build ro.control_privapp_permissions=enforce.

La liste d'autorisation n'est requise que pour les autorisations déclarées par les applications avec package="android" ro.control_privapp_permissions l'état de la propriété doit respecter Section 9.1 Autorisations dans le document de définition de compatibilité (CDD).