Google a documenté à la fois le fonction multi-utilisateurs lui-même, et le API associée qui montre ce qu'une application pourrait faire avec.
En coulisse, la fonction multi-utilisateurs repose sur le système SELinux multi-niveaux (MLS, alias multi-catégories) où chaque utilisateur est associé à sa propre catégorie SELinux (voir la présentation de la NSA SELinux dans Android Lollilop et Marshmallow pour référence, en particulier les diapositives 13 et 14). Cela permet une séparation très robuste et fiable entre les utilisateurs, appliquée au niveau du noyau d'Android et donc difficilement contournable.
Dans ce schéma, il existe des ressources publiques et privées. Les ressources publiques sont partagées entre tous les utilisateurs, tandis que les ressources privées sont la propriété privée de chaque utilisateur et ne peuvent être consultées par d'autres.
- Les ressources publiques comprennent principalement les applications installées et la configuration globale du téléphone. Notez que vous pouvez restreindre la façon dont les utilisateurs secondaires peuvent utiliser l'appareil, par exemple en empêchant les utilisateurs secondaires de passer des appels téléphoniques.
- Les ressources privées comprennent principalement les paramètres de l'utilisateur local, l'application locale et les données de l'utilisateur.
Voyons maintenant quelles sont les conséquences concrètes de ces déclarations (je réutilise votre convention de l'utilisateur Foo comme utilisateur principal et de l'utilisateur Bar comme utilisateur secondaire).
Si je crée un utilisateur secondaire et que j'installe une application tout en utilisant le téléphone téléphone en tant qu'utilisateur, les autorisations de cette application seront-elles transférées à l'utilisateur utilisateur principal ?
Les applications installées sont considérées comme des ressources publiques. Par conséquent, si l'utilisateur Bar installe une application, cette même application sera également disponible pour l'utilisateur Foo, même si ce dernier n'a jamais accepté explicitement les autorisations demandées par l'application.
Cependant, l'utilisateur Bar n'aura aucun moyen de faire exécuter l'application dans le profil de Foo, et il n'aura pas non plus accès aux données privées de Foo. En outre, sauf dans le cas d'une application très boguée ou carrément malveillante (c'est-à-dire une application qui copierait des données privées dans un emplacement partagé), Foo et Bar peuvent tous deux exécuter l'application, les données privées de Foo et de Bar resteront en sécurité (ils peuvent même les utiliser en même temps si l'application le permet, sinon elle refusera simplement de démarrer ou se plantera).
Par exemple, disons que j'ai un utilisateur principal, Foo, avec un Google foo@gmail.com. Je crée ensuite l'utilisateur Bar avec le compte bar@gmail.com. Pendant que j'utilise le téléphone en tant que Bar, j'installe une application avec la fonction l'autorisation de "trouver des comptes sur l'appareil".
Est-ce que cela permettra à l'application de voir les comptes que j'ai enregistrés avec l'application compte principal, c'est-à-dire foo@gmail.com ?
Je veux juste avertir de ne pas confondre la "Trouver des comptes sur l'appareil" permission avec la fonction multi-utilisateurs qui n'est pas liée. Chaque utilisateur possède sa propre liste de comptes, qui est considérée comme une information privée et qui n'est donc pas partagée avec les utilisateurs d'autres appareils.
Lorsque Bar exécute l'application, seuls les comptes de Bar seront disponibles, tandis que lorsque Foo exécute l'application, seuls les comptes de Foo seront disponibles.
Sera-t-il même en mesure de trouver l'utilisateur principal ou existe-t-il des entre les "espaces de travail" des utilisateurs (par manque d'un meilleur terme), et d'après l'application, il n'y a que Bar et ses comptes enregistrés sur le sur l'appareil ?
La liste des utilisateurs semble être considérée comme une information publique, très probablement comme un héritage historique du monde Unix puisque je ne vois aucune raison technique à cela. Personnellement, j'aurais apprécié que ce ne soit pas le cas (c'est-à-dire que les utilisateurs sont plus des bacs à sable transparents que les utilisateurs Unix standard, du moins tant que les applications ne bénéficient pas d'une permission spécifique).
Quoi qu'il en soit, le Documentation de l'API Android La page dont le lien figure au début de ce billet énumère les méthodes qu'une application peut utiliser pour recueillir des informations sur les utilisateurs actuels et les autres utilisateurs. La plupart d'entre elles ne semblent pas nécessiter de permission spécifique.
Je suis juste généralement préoccupé par le fait que les applications découvrent mes informations personnelles. personnelles, mes contacts, mes e-mails, etc., et j'aimerais utiliser un compte "factice". pour toute application que je considère comme hostile à cet égard. Est-ce que cela fonctionnerait ?
Oui, je pense même que cela peut être une très bonne idée, assurez-vous simplement d'être dans votre compte fictif lorsque vous le lancez car la même application peut également être disponible pour votre utilisateur principal.
Notes sur la convivialité :
La fonction multi-utilisateurs des systèmes Android semble encore très jeune et pas très mature. Cela signifie qu'il y a des changements importants entre les versions d'Android et des problèmes de compatibilité.
Par exemple :
- Types d'utilisateurs et traitement des autorisations : la manière dont l'utilisateur principal et/ou la plate-forme centrale d'administration des appareils de l'entreprise peuvent définir ou restreindre les droits des utilisateurs secondaires/restrictifs/profils/ invités en termes de fonctionnalités et d'applications qu'ils peuvent utiliser ou installer est sujette à de fortes modifications entre les versions d'Android et les appareils sous-jacents (même si elles fonctionnent toujours sous Android, les tablettes peuvent offrir des options différentes de celles des téléphones portables).
- Il en va de même pour la manière dont sont traitées l'installation des applications, les demandes d'autorisation, le partage des applications et la désinstallation (elles peuvent être directement disponibles, elles peuvent être affichées mais marquées "Non installé pour cet utilisateur" ils peuvent ne pas être affichés du tout tout en laissant l'APK disponible, etc.)
- Certaines fonctionnalités peuvent passer de l'état "broken" à l'état "fixed" d'une version à l'autre (l'option "Autoriser les sources inconnues" pour les utilisateurs secondaires a été serait indisponible en 5.0, corrigé en 5.1, cassé en 6.0, corrigé à nouveau en 6.0.1).
- Certaines applications peuvent ne pas fonctionner lorsqu'on utilise un utilisateur secondaire ( F-Droid par exemple).
Il y a encore ce que je considère comme des fonctionnalités manquantes, par exemple il n'y a pas de moyen approprié pour qu'un utilisateur pour se déconnecter .
0 votes
Et si vous changiez votre titre en quelque chose comme "Peut-on utiliser un utilisateur secondaire pour mettre une application en sandbox et protéger les informations personnelles ?" ? Je pense que cela reflète mieux votre question réelle. De plus, il existe un multi-utilisateurs qui pourrait également convenir ici.