Android fournit divers signaux d'appareil que les administrateurs peuvent utiliser pour déterminer la stratégie de sécurité d'un appareil. Dans un modèle de sécurité zéro confiance, ces signaux sont utilisés pour déterminer si un appareil doit être autorisé à accéder des informations sur l'entreprise.
Fonctionnalité | 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 |
---|---|---|---|---|---|
Lecture API Integrity | Un broker de confiance peut récupérer les signaux suivants :
|
Oui | Oui | Oui | Oui |
Sécurité Identification du matériel / Attestation des clés | Un courtier de confiance peut vérifier que ses identifiants PKI ont été générés. et stockés sur du matériel sécurisé | Oui | Oui | Oui | Oui |
Appareil Attestation des propriétés | Dans le cadre de l'attestation des clés, les propriétés de l'appareil peuvent être incluses dans des de l'enregistrement d'attestation | Oui | Oui | Oui | Oui |
Niveau du correctif de sécurité de l'appareil | Un courtier 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 courtier de confiance peut vérifier si une mise à jour de l'OS de l'appareil est en attente disponible | Oui | Oui | Oui | N/A |
Niveau du correctif de sécurité principal | Un courtier de confiance peut lire le niveau du correctif de sécurité pour train principal | Oui | Oui | Oui | Oui |
Inscription ID spécifique | Un courtier de confiance peut accéder à un ID d'appareil unique propre à cette entreprise. Cet ID persiste après la recréation du profil professionnel et la configuration de l'appareil réinitialiser | Oui | Oui | Oui | N/A |
État de gestion (et gestion de l'application) | Un courtier de confiance peut l'utiliser pour déterminer si un appareil est géré | Oui | Oui | Oui | N/A |
Chiffrement de disque | Un courtier de confiance peut vérifier si l'appareil est chiffré (si la prise en charge d'Android 8 est nécessaire). | Oui | Oui | Oui | Oui |
Version de l'OS | Un courtier de confiance peut vérifier la version du système d'exploitation de l'appareil et confirmer qu'elle dépasse une certaine version. | Oui | Oui | Oui | Oui |
Accès à 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 (réseau mobile et Wi-Fi). | Oui | Oui | Oui | Oui |
Accéder à l'état Wi-Fi (Android versions 11 et antérieures, Android 12 et versions ultérieures sont compatibles avec une approche de rappel ou une approche à la demande. | Un courtier de confiance peut obtenir des informations sur le réseau Wi-Fi actif. | Oui | Oui | Oui | Oui |
Paramètres proxy | Un courtier de confiance peut obtenir des informations sur le protocole HTTP par défaut actuel paramètres proxy. | Oui | Oui | Oui | Oui |
Écran contrôle qualité de la serrure | Un courtier de confiance peut s'assurer que le verrouillage de l'écran d'un appareil fonctionne avec un certain niveau de qualité. configurés avant d'accorder l'accès | Oui | Oui | Oui | Oui |
Options pour les développeurs activées | Un courtier de confiance peut identifier un appareil comme ayant une surface d'attaque plus large lorsque les options pour les développeurs sont activées. | Oui | Oui | Oui | Oui |
DNS over TLS est-il activé ? | Un courtier 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 spécifique a été classés par Google comme une menace connue. | Oui | Oui | Oui | Oui |
Support de média externe | Un agent de confiance peut être averti lorsqu'une mémoire de stockage externe est installée | Oui | Oui | Oui | Oui |
UsageStatsManager | Un courtier de confiance peut étudier les habitudes d'utilisation de chaque application. | Oui | Oui | Oui | Oui1 |
Journalisation de la sécurité | Un courtier de confiance peut exploiter ces données dans son moteur contextuel pour garantir la conformité et créer une empreinte basée sur le comportement. | Oui | Oui2 | Oui2 | N/A |
Journalisation réseau | Un courtier de confiance peut exploiter ces données pour le contexte pour garantir la conformité et créer une empreinte | Oui | Oui2 | Oui2 | N/A |
NetworkStatsManager | Un courtier de confiance peut interroger l'utilisation du réseau d'une application au cours d'une période donnée intervalle | Oui | Oui | Oui2 | Oui1 |
Visibilité des packages (liste de toutes les applications sur l'appareil) | Un courtier de confiance peut interroger les applications 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 de toute activité en cours et une liste de PhoneAccount enregistré sur l'appareil | Oui | Oui | Oui | Oui |
Date et heure du dernier redémarrage de l'appareil | Un courtier de confiance peut obtenir le temps d'activité du système | Oui | Oui | Oui | Oui |
Obtenir des comptes | Un courtier de confiance peut l’utiliser pour accéder à la liste des comptes dans le service Accounts | Oui | Oui3 | Oui3 | Oui1 |
Surveiller les changements significatifs du niveau de la batterie | Un courtier de confiance peut surveiller les changements importants du niveau de la batterie | Oui | Oui | Oui | Oui |
Position (précise, approximative, 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 courtier de confiance peut accéder à PackageInfo pour le
com.google.android.modulemetadata
, puis récupérer
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 versions ultérieures, vous devez ajouter une déclaration de requête dans votre fichier AndroidManifest.xml
pour répondre à la visibilité des packages d'Android :
<manifest package="com.example.game"> <queries> <package android:name="com.google.android.modulemetadata" /> </queries> ... </manifest>
Récupérer l'état de gestion
Un courtier de confiance peut utiliser ces méthodes pour vérifier si un appareil est géré et le mode de gestion 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é.
Rechercher un appareil entièrement géré
Utilisez isDeviceOwnerApp()
pour vérifier si l'appareil est entièrement géré.
Rechercher un profil professionnel sur un appareil détenu par l'entreprise
Utilisez isOrganizationOwnedDeviceWithManagedProfile()
pour vérifier si un appareil utilise un mode de gestion de profil professionnel pour les appareils détenus par l'entreprise.
Rechercher un profil professionnel sur un appareil personnel
Utiliser isProfileOwnerApp()
pour vérifier si une application est en cours d'exécution dans une tâche
profil et vérifiez que isOrganizationOwnedDeviceWithManagedProfile()
est renvoyé
false