Indicatori della security posture

Android fornisce una serie di indicatori dei dispositivi che gli amministratori possono utilizzare per determinare la strategia di sicurezza di un dispositivo. In un modello di sicurezza Zero Trust, questi indicatori vengono utilizzati per valutare se un dispositivo deve essere autorizzato ad accedere alle 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
API Play Integrity Un broker di annunci può recuperare i seguenti indicatori:
  • Integrità del dispositivo
  • Integrità dell'app
  • Dettagli della licenza Google Play
  • Dettagli sull'ambiente, incluso il nuovo esito di Play Protect
  • Hardware sicuro presente / Attestazione della chiave Un broker di attendibilità può verificare che le credenziali PKI siano state generate e archiviate in hardware sicuro
    Attestazione di proprietà del dispositivo Nell'ambito dell'attestazione delle chiavi, le proprietà del dispositivo possono essere incluse nel record di attestazione
    Livello patch di sicurezza del dispositivo Un broker attendibile può convalidare il livello 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 della versione principale Un broker attendibile 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 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 app di gestione) Un broker di attendibilità 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 broker 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 broker di fiducia può ottenere informazioni sullo stato della rete attiva (rete mobile 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 broker di attendibilità può ottenere informazioni sulla rete Wi-Fi attiva
    Impostazioni proxy Un broker di attendibilità può ottenere informazioni sulle impostazioni predefinite del proxy HTTP.
    Controllo della qualità del blocco schermo 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.
    Medio esterno montato Un broker 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 del proprio motore contestuale per garantire la conformità e creare un'impronta 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
    Leggi stato dello smartphone Un broker di attendibilità può ottenere informazioni sulla rete mobile, lo stato di eventuali chiamate in corso e un elenco di PhoneAccount registrati sul dispositivo
    Data dell'ultimo riavvio del dispositivo Un broker di trust può ottenere l'uptime del sistema
    Ricevi account Un broker di attendibilità può sfruttare questa funzionalità per accedere all'elenco di account nel servizio Account 3 3 1
    Monitorare le variazioni significative del livello della batteria Un broker di trust può monitorare variazioni significative del livello della batteria
    Posizione (Fine, Coarse e così via) Un broker attendibile 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 modulo 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 di query nel 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.

    Verificare la gestione dei dispositivi

    Utilizza getActiveAdmins() per verificare se un dispositivo è gestito. Se questo metodo restituisce null, il dispositivo non è gestito.

    Verificare la presenza di un dispositivo completamente gestito

    Utilizza isDeviceOwnerApp() per verificare se il dispositivo è completamente gestito.

    Verificare la presenza del 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.