Android offre una serie di indicatori sui dispositivi che gli amministratori possono utilizzare per per determinare la security posture di un dispositivo. In un modello di sicurezza Zero Trust, questi indicatori vengono usati per valutare se un dispositivo deve poter accedere e le informazioni aziendali.
Funzionalità | Descrizione | Dispositivi completamente gestiti | Profilo di lavoro sui dispositivi di proprietà dell'azienda | Profilo di lavoro su dispositivi di proprietà personale (BYOD) | Dispositivi non gestiti |
---|---|---|---|---|---|
Riproduci API Integrity | Un intermediario di fiducia può recuperare i seguenti indicatori:
|
Sì | Sì | Sì | Sì |
Hardware protetto presente/Attestazione della chiave | Un trust broker può verificare che le credenziali dell'infrastruttura a chiave pubblica siano state generate e archiviato in un hardware protetto | Sì | Sì | Sì | Sì |
Attestazione delle proprietà del dispositivo | Nell'ambito dell'attestazione delle chiavi, le proprietà del dispositivo possono essere incluse nel record di attestazione | Sì | Sì | Sì | Sì |
Livello della patch di sicurezza del dispositivo | Un trust broker può convalidare il livello delle patch di sicurezza del sistema operativo | Sì | Sì | Sì | Sì |
Il dispositivo ha un aggiornamento OTA in attesa | Un intermediario di attendibilità può verificare se è disponibile un aggiornamento del sistema operativo del dispositivo in sospeso | Sì | Sì | Sì | N/D |
Livello patch di sicurezza Mainline | Un broker attendibilità può leggere il livello della patch di sicurezza per il train principale installato | Sì | Sì | Sì | Sì |
ID specifico per la registrazione | Un broker di attendibilità può accedere a un ID dispositivo univoco specifico per questo per l'azienda. Questo ID rimane invariato dopo la ricreazione del profilo di lavoro e il ripristino dei dati di fabbrica del dispositivo. | Sì | Sì | Sì | N/D |
Stato di gestione (e gestione dell'app) | Un broker attendibile può utilizzarlo per determinare se un dispositivo è gestito | Sì | Sì | Sì | N/D |
Crittografia del disco | Un broker di attendibilità può verificare se il dispositivo è criptato (se è necessario il supporto di Android 8) | Sì | Sì | Sì | Sì |
Versione del sistema operativo | Un intermediario di attendibilità può controllare la versione del sistema operativo del dispositivo e confermare che supera una determinata versione | Sì | Sì | Sì | Sì |
Accedere allo stato della rete (stato della rete e stato del Wi-Fi) | Un trust broker può ottenere informazioni sullo stato della rete attiva (rete cellulare e Wi-Fi) | Sì | Sì | Sì | Sì |
Accedi allo stato del Wi-Fi (Android 11 e versioni precedenti, Android 12 e versioni successive supportano sia un richiamo sia un approccio on demand) | Un trust broker può ottenere informazioni sulla rete Wi-Fi attiva | Sì | Sì | Sì | Sì |
Impostazioni del proxy | Un trust broker può ottenere informazioni sull'attuale HTTP predefinito impostazioni del proxy. | Sì | Sì | Sì | Sì |
Schermo controllo qualità della serratura | Un broker di attendibilità può assicurarsi che su un dispositivo sia configurato un blocco schermo di una determinata qualità prima di concedere l'accesso | Sì | Sì | Sì | Sì |
Opzioni sviluppatore attivate | Un broker di attendibilità può identificare un dispositivo come dotato di una superficie di attacco più ampia quando le opzioni sviluppatori sono attive | Sì | Sì | Sì | Sì |
DNS over TLS è attivo | Un broker di attendibilità può sfruttare questa funzionalità per assicurarsi che la modalità DNS privato sia abilitata | Sì | Sì | Sì | Sì |
SafetyNet Navigazione sicura | Un intermediario di attendibilità può determinare se un determinato URL è stato classificato da Google come una minaccia nota. | Sì | Sì | Sì | Sì |
Esterni Montaggio su supporto | Un broker di attendibilità può ricevere una notifica quando viene montato uno spazio di archiviazione esterno | Sì | Sì | Sì | Sì |
UsageStatsManager | Un broker di attendibilità può studiare i pattern di utilizzo delle singole app | Sì | Sì | Sì | Sì1 |
Logging sicurezza | Un broker di fiducia può sfruttare questi dati come parte della propria strategia per garantire la conformità e creare un'impronta digitale basata sul comportamento | Sì | Sì2 | Sì2 | N/D |
Logging di rete | Un broker di fiducia può sfruttare questi dati come parte del proprio motore contestuale per garantire la conformità e creare un'impronta basata sul comportamento | Sì | Sì2 | Sì2 | N/D |
NetworkStatsManager | Un broker attendibile può eseguire query sull'utilizzo della rete dell'app in un determinato intervallo di tempo | Sì | Sì | Sì2 | Sì1 |
Visibilità del pacchetto (elenca tutte le app sul dispositivo) | Un broker attendibile può eseguire query sulle app installate sul dispositivo | Sì | Sì3 | Sì3 | Sì |
Letto Stato del telefono | Un broker di fiducia può ricevere informazioni sulla rete mobile, lo stato di qualsiasi chiamate e un elenco di PhoneAccount registrato sul dispositivo | Sì | Sì | Sì | Sì |
Dopo l'ultimo riavvio del dispositivo | Un broker di trust può ottenere l'uptime del sistema | Sì | Sì | Sì | Sì |
Ottieni account | Un broker di fiducia può sfruttare questa possibilità per accedere all'elenco di account in il servizio Account | Sì | Sì3 | Sì3 | Sì1 |
Monitorare variazioni significative del livello della batteria | Un broker di fiducia può monitorare variazioni significative del livello della batteria | Sì | Sì | Sì | Sì |
Posizione (Fine, Coarse e così via) | Un broker di attendibilità può accedere alla posizione fisica del dispositivo | Sì | Sì | Sì1 | Sì1 |
1 Con il consenso dell'utente
2 Solo profilo di lavoro
3 Accesso limitato alle informazioni del profilo di lavoro
Recupera la versione Mainline
Un broker di attendibilità può accedere a PackageInfo per il
com.google.android.modulemetadata
e recuperare da 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
}
}
Puoi analizzare la stringa restituita in un oggetto Date
utilizzando 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
}
Ricorda che per Android 11 e versioni successive devi aggiungere una dichiarazione relativa alle query nella
del file AndroidManifest.xml
per soddisfare la visibilità del pacchetto di Android:
<manifest package="com.example.game"> <queries> <package android:name="com.google.android.modulemetadata" /> </queries> ... </manifest>
Recupera lo stato di gestione
Un broker di attendibilità può utilizzare questi metodi per verificare se un dispositivo è in modalità di gestione e quale modalità di gestione è attiva.
Verifica la gestione dei dispositivi
Utilizza getActiveAdmins() per verificare se un dispositivo è gestito. Se questo metodo restituisce null
, il dispositivo non è gestito.
Verifica la presenza di un dispositivo completamente gestito
Utilizza isDeviceOwnerApp()
per verificare se il dispositivo è completamente gestito.
Verificare il profilo di lavoro su un dispositivo di proprietà dell'azienda
Utilizza isOrganizationOwnedDeviceWithManagedProfile()
per controllare se un dispositivo utilizza una modalità di gestione del profilo di lavoro per i dispositivi di proprietà dell'azienda
Verificare la presenza del profilo di lavoro su un dispositivo di proprietà personale
Utilizza isProfileOwnerApp()
per verificare se un'app è in esecuzione in un profilo di lavoro e verifica che isOrganizationOwnedDeviceWithManagedProfile()
restituisca false
.