Indicatori Zero Trust

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:
  • Integrità del dispositivo
  • Integrità dell'app
  • Dettagli della licenza Google Play
  • Dettagli sull'ambiente, incluso il nuovo esito Play Protect
  • 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
    Attestazione delle proprietà del dispositivo Nell'ambito dell'attestazione delle chiavi, le proprietà del dispositivo possono essere incluse nel record di attestazione
    Livello della patch di sicurezza del dispositivo Un trust broker può convalidare il livello delle patch di sicurezza del sistema operativo
    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 N/D
    Livello patch di sicurezza Mainline Un broker attendibilità può leggere il livello della patch di sicurezza per il train principale installato
    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. N/D
    Stato di gestione (e gestione dell'app) Un broker attendibile può utilizzarlo per determinare se un dispositivo è gestito N/D
    Crittografia del disco Un broker di attendibilità può verificare se il dispositivo è criptato (se è necessario il supporto di Android 8)
    Versione del sistema operativo Un intermediario di attendibilità può controllare la versione del sistema operativo del dispositivo e confermare che supera una determinata versione
    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)
    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
    Impostazioni del proxy Un trust broker può ottenere informazioni sull'attuale HTTP predefinito impostazioni del proxy.
    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
    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
    DNS over TLS è attivo Un broker di attendibilità può sfruttare questa funzionalità per assicurarsi che la modalità DNS privato sia abilitata
    SafetyNet Navigazione sicura Un intermediario di attendibilità può determinare se un determinato URL è stato classificato da Google come una minaccia nota.
    Esterni Montaggio su supporto Un broker di attendibilità può ricevere una notifica quando viene montato uno spazio di archiviazione esterno
    UsageStatsManager Un broker di attendibilità può studiare i pattern di utilizzo delle singole app 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 2 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 2 2 N/D
    NetworkStatsManager Un broker attendibile può eseguire query sull'utilizzo della rete dell'app in un determinato intervallo di tempo 2 1
    Visibilità del pacchetto (elenca tutte le app sul dispositivo) Un broker attendibile può eseguire query sulle app installate sul dispositivo 3 3
    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
    Dopo l'ultimo riavvio del dispositivo Un broker di trust può ottenere l'uptime del sistema
    Ottieni account Un broker di fiducia può sfruttare questa possibilità per accedere all'elenco di account in il servizio Account 3 3 1
    Monitorare variazioni significative del livello della batteria Un broker di fiducia può monitorare variazioni significative del livello della batteria
    Posizione (Fine, Coarse e così via) Un broker di attendibilità può accedere alla posizione fisica del dispositivo 1 1

    1 Con il consenso dell'utente

    2 Solo profilo di lavoro

    3 Accesso limitato alle informazioni del profilo di lavoro

    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>
    

    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.