Android fournit divers signaux d'appareil que les administrateurs peuvent utiliser pour déterminer le niveau de sécurité d'un appareil. Dans un modèle de sécurité zéro confiance, ces signaux permettent d'évaluer si un appareil doit être autorisé à accéder aux informations de l'entreprise.
Sélection | Description | Appareils entièrement gérés | Profil professionnel sur les appareils détenus par l'entreprise | Profil professionnel sur les appareils personnels (BYOD) | Appareils non gérés |
---|---|---|---|---|---|
API Play Integrity | Un agent de confiance peut récupérer les signaux suivants : |
Oui | Oui | Oui | Oui |
Attestation de clé / présentation matérielle sécurisée | Un agent de confiance peut vérifier que ses identifiants PKI ont été générés et stockés dans du matériel sécurisé. | Oui | Oui | Oui | Oui |
Attestation des propriétés de l'appareil | Dans le cadre de l'attestation de clé, les propriétés de l'appareil peuvent être incluses dans l'enregistrement d'attestation. | Oui | Oui | Oui | Oui |
Niveau du correctif de sécurité de l'appareil | Un agent de confiance peut valider le niveau du correctif de sécurité du système d'exploitation | Oui | Oui | Oui | Oui |
L'appareil dispose-t-il d'une mise à jour OTA en attente ? | Un agent de confiance peut vérifier si une mise à jour de l'OS de l'appareil est en attente. | Oui | Oui | Oui | N/A |
Niveau du correctif de sécurité du réseau principal | Un courtier de confiance peut lire le niveau du correctif de sécurité pour le train principal installé. | Oui | Oui | Oui | Oui |
ID spécifique à l'inscription | Un agent de confiance peut accéder à un ID d'appareil unique spécifique à cette entreprise. Cet ID survit à la recréation du profil professionnel et au rétablissement de la configuration d'usine de l'appareil. | Oui | Oui | Oui | N/A |
État de gestion (et gestion de l'application) | Un courtier de confiance peut s'en servir pour déterminer si un appareil est géré. | Oui | Oui | Oui | N/A |
Chiffrement de disque | Un agent de confiance peut vérifier si l'appareil est chiffré (si la compatibilité avec Android 8 est nécessaire) | Oui | Oui | Oui | Oui |
Version de l'OS | Un agent de confiance peut vérifier la version de l'OS de l'appareil et confirmer qu'elle dépasse une certaine version. | Oui | Oui | Oui | Oui |
Accéder à l'état du réseau (état du réseau et état du Wi-Fi) | Un courtier de confiance peut obtenir des informations sur l'état du réseau actif (cellulaire et Wi-Fi). | Oui | Oui | Oui | Oui |
Accédez à l'état du Wi-Fi (Android 11 ou version antérieure, Android 12 ou version ultérieure est compatible avec une approche de rappel ou à la demande). | Un courtier Trust peut obtenir des informations sur le réseau Wi-Fi actif. | Oui | Oui | Oui | Oui |
Paramètres proxy | Un agent de confiance peut obtenir des informations sur les paramètres proxy HTTP par défaut actuels. | Oui | Oui | Oui | Oui |
Contrôle qualité du verrouillage de l'écran | Un courtier de confiance peut s'assurer qu'un verrouillage d'écran de qualité est configuré sur un appareil avant d'accorder l'accès. | Oui | Oui | Oui | Oui |
Options pour les développeurs activées | Un agent de confiance peut identifier un appareil dont la surface d'attaque est plus étendue lorsque les options pour les développeurs sont activées. | Oui | Oui | Oui | Oui |
Le DNS sur TLS est-il activé ? | Un agent de confiance peut s'en servir pour s'assurer que le mode DNS privé est activé. | Oui | Oui | Oui | Oui |
Navigation sécurisée SafetyNet | Un courtier de confiance peut déterminer si une URL particulière a été classée par Google comme menace connue. | Oui | Oui | Oui | Oui |
Montage externe | Un agent de confiance peut être averti lorsqu'un stockage externe est installé | Oui | Oui | Oui | Oui |
UsageStatsManager | Un courtier de confiance peut étudier les schémas d'utilisation d'applications individuelles | Oui | Oui | Oui | Oui1 |
Journaux de sécurité | Un courtier de confiance peut exploiter ces données dans son moteur contextuel pour garantir la conformité et créer une empreinte digitale basée sur le comportement. | Oui | Oui2 | Oui2 | N/A |
Journalisation réseau | Un courtier de confiance peut exploiter ces données dans son moteur contextuel pour garantir la conformité et créer une empreinte digitale basée sur le comportement. | Oui | Oui2 | Oui2 | N/A |
NetworkStatsManager | Un agent de confiance peut interroger l'utilisation du réseau de l'application dans un intervalle de temps donné. | Oui | Oui | Oui2 | Oui1 |
Visibilité des packages (afficher la liste de toutes les applications de l'appareil) | Un agent de confiance peut demander quelles applications sont installées sur l'appareil | Oui | Oui3 | Oui3 | Oui |
Lire l'état du téléphone | Un courtier de confiance peut obtenir des informations sur le réseau mobile, l'état des appels en cours et la liste des PhoneAccount enregistrés sur l'appareil. | Oui | Oui | Oui | Oui |
Le dernier redémarrage de l'appareil | Un agent de confiance peut obtenir le temps d'activité du système | Oui | Oui | Oui | Oui |
Obtenir des comptes | Un courtier de confiance peut s'en servir pour accéder à la liste des comptes du service Accounts. | Oui | Oui3 | Oui3 | Oui1 |
Surveiller les changements importants du niveau de la batterie | Un courtier Trust peut surveiller les variations importantes du niveau de la batterie | Oui | Oui | Oui | Oui |
Emplacement (Fine, Grossier, etc.) | Un courtier de confiance peut accéder à l'emplacement physique de l'appareil. | Oui | Oui | Oui1 | Oui1 |
1 Avec le consentement de l'utilisateur
2 Profil professionnel uniquement
3 Accès limité aux informations du profil professionnel
Récupérer la version Mainline
Un agent de confiance peut accéder à PackageInfo pour le module com.google.android.modulemetadata
et récupérer à partir de là versionName
:
private fun mainlineVersion(context: Context): String? {
val moduleProvider = "com.google.android.modulemetadata"
return try {
val pm = context.packageManager
val packageInfo = pm.getPackageInfo(moduleProvider, 0)
packageInfo.versionName
} catch (e: PackageManager.NameNotFoundException) {
null
}
}
Vous pouvez analyser la chaîne renvoyée dans un objet Date
à l'aide de la classe SimpleDateFormat
:
private val VERSION_NAME_DATE_PATTERNS = Arrays.asList(
"yyyy-MM-dd",
"yyyy-MM"
)
private fun parseDateFromVersionName(text: String): Date? {
for (pattern in VERSION_NAME_DATE_PATTERNS) {
try {
val simpleDateFormat = SimpleDateFormat(
pattern,
Locale.getDefault()
)
simpleDateFormat.timeZone = TimeZone.getDefault()
return simpleDateFormat.parse(text)
} catch (e: ParseException) {
// ignore and try next pattern
}
}
return null
}
N'oubliez pas que pour Android 11 et les versions ultérieures, vous devez ajouter une déclaration de requête dans votre fichier AndroidManifest.xml
pour respecter la visibilité du package Android:
<manifest package="com.example.game"> <queries> <package android:name="com.google.android.modulemetadata" /> </queries> ... </manifest>
Récupérer l'état de gestion
Un agent de confiance peut utiliser ces méthodes pour vérifier si un appareil est en mode de gestion et quel mode de gestion est actif.
Vérifier la gestion des appareils
Utilisez getActiveAdmins() pour vérifier si un appareil est géré. Si cette méthode renvoie null
, l'appareil n'est pas géré.
Vérifier l'appareil entièrement géré
Utilisez isDeviceOwnerApp()
pour vérifier si l'appareil est entièrement géré.
Vérifier la présence d'un profil professionnel sur un appareil appartenant à l'entreprise
Utiliser isOrganizationOwnedDeviceWithManagedProfile()
pour vérifier si un appareil utilise un mode de gestion des profils professionnels pour les appareils détenus par l'entreprise
Vérifier la présence d'un profil professionnel sur un appareil personnel
Utilisez isProfileOwnerApp() pour vérifier si un appareil dispose d'un profil professionnel et vérifier que isOrganizationOwnedDeviceWithManagedProfile()
renvoie false
.