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
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
.
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).