Annuaires, règles et politique de confidentialité

Cette page décrit la disposition du répertoire pour les appareils exécutant Android 8.0 et versions ultérieures, les règles VNDK et la stratégie associée.

Disposition du répertoire

La disposition de répertoire dégénérée comprend les répertoires suivants :

  • /system/lib[64] contient toutes les bibliothèques partagées du framework, y compris LL-NDK, VNDK et les bibliothèques uniquement framework (y compris LL-NDK-Private et certaines bibliothèques portant les mêmes noms que celles de VNDK-SP).
  • /system/lib[64]/vndk-sp contient les bibliothèques VNDK-SP pour les HAL de même processus.
  • /vendor/lib[64] contient les bibliothèques VNDK étendues par le fournisseur (bibliothèques DXUA ou DXUX VNDK), les implémentations HAL de même processus et les bibliothèques partagées d'autres fournisseurs.
  • /vendor/lib[64]/vndk-sp peut contenir les bibliothèques VNDK-SP étendues par le fournisseur.

Les modules du fournisseur chargent les bibliothèques VNDK à partir de /system/lib[64] .

Règles VNDK

Cette section fournit une liste complète des règles VNDK :

  • Les processus Framework ne doivent pas charger de bibliothèques partagées non SP-HAL à partir des partitions du fournisseur (strictement appliquées à partir d'Android 8.1).
  • Les processus du fournisseur ne doivent pas charger de bibliothèques non-LL-NDK, non-VNDK-SP et non-VNDK à partir de la partition système. (pas strictement appliqué dans Android O mais le sera dans une prochaine version).
  • Les bibliothèques VNDK installées doivent être un sous-ensemble des bibliothèques VNDK éligibles définies par Google.
  • Les dépendances externes de SP-HAL et SP-HAL-Dep doivent être limitées aux bibliothèques LL-NDK ou VNDK-SP définies par Google.
    • Les dépendances d'une bibliothèque partagée SP-HAL doivent être limitées aux bibliothèques LL-NDK, aux bibliothèques VNDK-SP définies par Google, aux autres bibliothèques SP-HAL et/ou aux bibliothèques partagées d'autres fournisseurs pouvant être étiquetées comme bibliothèques SP-HAL-Dep. .
    • Une bibliothèque partagée par un fournisseur peut être étiquetée comme bibliothèque SP-HAL-Dep uniquement si elle n'est pas une bibliothèque AOSP et si ses dépendances sont limitées aux bibliothèques LL-NDK, aux bibliothèques VNDK-SP définies par Google, aux bibliothèques SP-HAL et/ou d'autres bibliothèques SP-HAL-Dep.
  • VNDK-SP doit être autonome. libRS_internal.so bénéficie d'un traitement spécial dans Android 8.0, mais sera revisité dans une prochaine version.
  • Aucune communication entre le framework et le fournisseur via des interfaces non-HIDL, y compris (mais sans s'y limiter) le classeur, les sockets, les mémoires partagées, les fichiers, etc.
  • La taille de la partition système doit être suffisamment grande pour contenir deux copies de toutes les bibliothèques VNDK éligibles et une copie des bibliothèques partagées du framework non éligibles.

politique de sécurité

Les processus-cadre décrits dans cette section correspondent au coredomain dans les stratégies tandis que les processus du fournisseur correspondent au non-coredomain . Par exemple, /dev/binder n'est accessible que dans coredomain et /dev/vndbinder n'est accessible que dans coredomain non principal.

Des politiques similaires restreignent l'accès aux bibliothèques partagées sur les partitions système et fournisseur. Le tableau suivant présente les droits d'accès aux bibliothèques partagées de différentes catégories :

Catégorie Cloison Accessible depuis
domaine principal
Accessible depuis
domaine non principal
LL-NDK Système Oui Oui
LL-NDK-Privé Système Oui Oui
VNDK-SP/VNDK-SP-Privé Système Oui Oui
VNDK-SP-Ext Fournisseur Oui Oui
VNDK Système Oui Oui
VNDK-Ext Fournisseur N Oui
FWK UNIQUEMENT Système Oui N
FWK-ONLY-RS Système Oui N
SP-HAL Fournisseur Oui Oui
SP-HAL-Dép Fournisseur Oui Oui
VND UNIQUEMENT Fournisseur N Oui

LL-NDK-Private et VNDK-SP-Private doivent être accessibles depuis les deux domaines car un coredomain non principal y accédera indirectement. De même, SP-HAL-Dep doit être accessible depuis coredomain car SP-HAL en dépend.

étiquette same_process_hal_file

Les bibliothèques suivantes existent dans la partition fournisseur. Rendre ces bibliothèques accessibles à la fois depuis coredomain et depuis le coredomain non principal.

  • VNDK-SP-Ext dans /vendor/lib[64]/vndk-sp
  • SP-HAL dans /vendor/lib[64] ou /vendor/lib[64]/hw
  • SP-HAL-Dep dans /vendor/lib[64] ou /vendor/lib[64]/hw

Étiquetez explicitement ces fichiers comme same_process_hal_file , car tout ce qui se trouve dans la partition vendor n'est par défaut pas accessible au coredomain . Ajoutez des lignes similaires à celles suivantes au fichier file_contexts spécifique au fournisseur.

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0