Novità di Android 10 per le aziende

Questa pagina fornisce una panoramica delle nuove API, delle nuove funzionalità e modifiche del comportamento introdotte in Android 10.

Profili di lavoro per dispositivi di proprietà dell'azienda

Android 10 introduce nuove funzionalità di provisioning e attestazione per dispositivi di proprietà dell'azienda che richiedono solo un profilo di lavoro.

Strumenti di provisioning migliorati per i profili di lavoro

Puoi eseguire il provisioning dei profili di lavoro sui dispositivi Android 10 e versioni successive registrati utilizzando Codice QR o Zero touch. Durante il provisioning di un dispositivo di proprietà dell'azienda, un nuovo intent aggiuntivo consente app controller dei criteri dei dispositivi (DPC) per avviare un profilo di lavoro o completamente gestito configurazione. Dopo la creazione di un profilo di lavoro o la gestione completa, i DPC (controller criteri dispositivi) avviare schermate di conformità alle norme per applicare i criteri iniziali.

Nel file manifest del DPC, dichiara un nuovo filtro per intent per GET_PROVISIONING_MODE in un'attività e aggiungi l'elemento BIND_DEVICE_ADMIN per impedire ad app arbitrarie di avviare l'attività. Ad esempio:

<activity
    android:name=".GetProvisioningModeActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action
            android:name="android.app.action.GET_PROVISIONING_MODE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

Durante il provisioning, il sistema avvia l'attività associata filtro per intent. Lo scopo di questa attività è specificare una modalità di gestione (profilo di lavoro o completamente gestito).

Può essere utile recuperare gli extra di provisioning prima di determinare la modalità di gestione appropriata per il dispositivo. L'attività può chiamare getIntent() per recuperare le seguenti:

I DPC possono anche creare un nuovo intent di risultato a cui aggiungere i seguenti extra:

Per impostare la modalità di gestione sul dispositivo, chiama putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode), dove desiredProvisioningMode è:

  • Profilo di lavoro: PROVISIONING_MODE_MANAGED_PROFILE
  • Completamente gestito: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

Completa il profilo di lavoro o il provisioning completamente gestito inviando il provisioning dettagli torna alla configurazione tramite setResult(RESULT_OK, Intent) e chiudi tutte le schermate attive con finish().

Una volta completato il provisioning, sarà disponibile un nuovo intent per il lancio dei DPC (controller criteri dispositivi) delle schermate di conformità e applicare le impostazioni iniziali dei criteri. Sul profilo di lavoro dispositivi, nel profilo di lavoro vengono visualizzate le schermate di conformità. Il DPC deve garantire che le schermate di conformità vengano mostrate agli utenti, anche se questi ultimi fuggono durante il flusso di configurazione.

Nel file manifest del DPC, dichiara un nuovo filtro per intent per ADMIN_POLICY_COMPLIANCE in un'attività e aggiungi l'elemento BIND_DEVICE_ADMIN per impedire ad app arbitrarie di avviare l'attività. Ad esempio:

<activity
    android:name=".PolicyComplianceActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action android:name="android.app.action.ADMIN_POLICY_COMPLIANCE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

Il DPC deve utilizzare questo nuovo intent invece di ascoltare il ACTION_PROFILE_PROVISIONING_COMPLETE: la trasmissione.

L'attività associata al filtro per intent può chiamare getIntent() per recuperare il EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE. Dopo aver eseguito la conformità alle norme, ADMIN_POLICY_COMPLIANCE deve restituire setResult(RESULT_OK, Intent) e chiudere tutte le schermate attive con finish().

I dispositivi completamente gestiti rimandano gli utenti alla schermata Home. Dispositivi con profili di lavoro chiedere agli utenti di aggiungere il proprio account personale prima di riportarli alla casa schermo.

Attestazione dell'ID dispositivo del profilo di lavoro

DPC impostati come amministratore di un profilo di lavoro di cui è stato eseguito il provisioning mediante la registrazione zero-touch possono ottenere ID dispositivo attestati con l'hardware sicuro, ad esempio un IMEI o il codice il numero di serie. Il dispositivo deve includere hardware protetti (ad esempio un ambiente di esecuzione (TEE) o Secure Element (SE) e supportare l'ID dispositivo l'attestazione e la registrazione zero-touch.

Il componente Amministratore di un profilo di lavoro può chiamare DevicePolicyManager.generateKeyPair(), passando uno o più ID_TYPE_SERIAL, ID_TYPE_IMEI o ID_TYPE_MEID per l'argomento idAttestationFlags.

Per scoprire di più sull'estrazione e sulla convalida degli ID dispositivo, consulta Verifica delle coppie di chiavi supportate dall'hardware con l'attestazione delle chiavi.

Miglioramenti del profilo di lavoro

Sono disponibili nuove API per supportare la visibilità e la visibilità dei calendari in più profili blocco a livello di dispositivo delle installazioni di app da origini sconosciute.

Profilo di lavoro, origini sconosciute a livello di dispositivo

App scaricate da fonti diverse da Google Play (o da altre app attendibili store) sono chiamate app provenienti da origini sconosciute. In Android 10, gli amministratori i profili possono impedire a qualsiasi utente o profilo di installare app da sconosciuti da qualsiasi punto del dispositivo aggiungendo la nuova limitazione per gli utenti DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY Dopo l'aggiunta di questa limitazione, tuttavia, una persona che utilizza il dispositivo può comunque installare app utilizzando adb.

Per impedire agli utenti di installare per errore app da fonti sconosciute, consiglia di aggiungere questa limitazione utente perché non richiede Google Play servizi da installare. Se vuoi supportare le versioni precedenti di Android, puoi Impostare un valore di configurazione gestita per Google Play.

Limita i dispositivi di input consentiti ai profili di lavoro

Quando gli amministratori dei profili di lavoro chiamano DevicePolicyManager.setPermittedInputMethods(), gli utenti possono utilizzare solo i metodi di immissione consentiti all'interno del loro lavoro invece dell'intero dispositivo, offrendo agli utenti il controllo completo sull'input sul lato personale del dispositivo.

Cancella i profili di lavoro in modalità silenziosa

Hai aggiunto WIPE_SILENTLY per DevicePolicyManager.wipeData(). Se il flag viene impostato, gli utenti non riceveranno una notifica dopo la cancellazione dei dati del profilo di lavoro utilizzando wipeData().

Nuove funzionalità per i dispositivi completamente gestiti

Android 10 introduce nuove funzionalità e API per i dispositivi completamente gestiti, inclusi gli aggiornamenti manuali del sistema, l'estensione del provisioning di codici QR e NFC a che includono le credenziali di una rete Wi-Fi EAP e il supporto per DNS su TLS.

Installazione manuale dell'aggiornamento di sistema

In Android 10, gli amministratori dei dispositivi completamente gestiti possono installare aggiornamenti di sistema tramite un file di aggiornamento di sistema. Gli aggiornamenti di sistema manuali consentono agli amministratori IT di:

  • Testa un aggiornamento su un numero limitato di dispositivi prima di installarli su larga scala.
  • Evita download duplicati su reti con larghezza di banda limitata.
  • Distribuite le installazioni o aggiorna i dispositivi solo quando non sono in uso.

Innanzitutto, un amministratore IT imposta un criterio di aggiornamento di sistema posticipato per ritardare l'installazione automatica (se necessario). Successivamente, il DPC di un dispositivo chiama installSystemUpdate() con il percorso del file di aggiornamento di sistema del produttore di un dispositivo. Supera un InstallSystemUpdateCallback che il sistema può utilizzare per segnalare errori che si verificano prima che il dispositivo si riavvia. In caso di problemi, il sistema chiama onInstallUpdateError() con il codice di errore.

Dopo il riavvio del dispositivo, il DPC deve confermare che l'installazione è riuscita utilizzando un'API versione, come Build.FINGERPRINT Se l'aggiornamento non riesce, segnalalo a un amministratore IT.

Provisioning del Wi-Fi EAP

In Android 10, i codici QR e i dati NFC utilizzati per il provisioning dei dispositivi possono contenere: Configurazione e credenziali EAP, inclusi i certificati. Quando una persona scansiona un codice QR o tocca un tag NFC, il dispositivo esegue automaticamente l'autenticazione su una rete Wi-Fi locale utilizzando EAP e avvia il processo di provisioning senza input manuale.

Per autenticare la rete Wi-Fi tramite EAP, aggiungi un EXTRA_PROVISIONING_WIFI_SECURITY_TYPE extra con il valore "EAP". Per specificare l'autenticazione EAP, puoi aggiungere seguenti provisioning extra in base al tuo intento:

Supporto DNS privato

Le organizzazioni possono utilizzare DNS over TLS (denominato DNS privato sui dispositivi Android) per evitare la fuga di query DNS. incluse quelle dei nomi host interni. Componenti amministrativi dei dispositivi completamente gestiti controllare le impostazioni DNS privato del dispositivo. Per impostare la modalità DNS privato: chiama:

Quando il DPC chiama uno di questi metodi, il sistema restituisce PRIVATE_DNS_SET_NO_ERROR se la chiamata è andata a buon fine. In caso contrario, viene restituito un errore.

Per recuperare la modalità DNS privato e l'host impostato su un dispositivo, chiama getGlobalPrivateDnsMode() e getGlobalPrivateDnsHost(). Puoi impedire agli utenti di modificare le impostazioni del DNS privato aggiungendo il parametro DISALLOW_CONFIG_PRIVATE_DNS limitazione dell'utente.

Esenzione della modalità di blocco VPN

La modalità di blocco della VPN consente a un DPC di bloccare qualsiasi rete che non utilizzano la VPN. Amministratori di organizzazioni complete i dispositivi gestiti e i profili di lavoro possono escludere le app dalla modalità di blocco. Le app esenti usano una VPN per impostazione predefinita, ma si connettono automaticamente ad altre se la VPN non è disponibile. App esenti che sono anche esplicitamente ha negato l'accesso al VPN utilizzerà solo altre reti.

Per escludere un'app dalla modalità di blocco, chiama il nuovo Metodo DevicePolicyManager setAlwaysOnVpnPackage() che accetta un elenco di pacchetti di app esenti. Eventuali pacchetti di app aggiunti dal DPC (controller criteri dispositivi) deve essere installata sul dispositivo quando viene chiamato il metodo. Se un'app è disinstallata e reinstallata, l'app deve essere di nuovo esente. Per scaricare le app precedentemente esente dalla modalità di blocco, richiama getAlwaysOnVpnLockdownWhitelist()

Per aiutare gli amministratori di dispositivi completamente gestiti e profili di lavoro a utilizzare la modalità di blocco Android 10, isAlwaysOnVpnLockdownEnabled() .

Nuovi ambiti di delega

Android 10 amplia l'elenco di funzioni che un DPC può delegare ad altre, app specializzate. Android raggruppa i metodi API necessari per un'attività ambiti. Per delegare un ambito, richiama setDelegatedScopes() e passare uno o più dei seguenti ambiti:

Android 10 introduce la nuova classe DelegatedAdminReceiver per le app di delega. Il sistema utilizza questo broadcast receiver per inviare messaggi simili a quelli di un per delegare le app. App a cui è stata delegata l'attività di rete il logging e la selezione dei certificati dovrebbero implementare questa classe. Per aggiungere questo a un'app delegata, segui questi passaggi:

  1. Aggiungi una sottoclasse di DelegatedAdminReceiver all'app delegata.
  2. Dichiara <receiver> nel nel file manifest dell'app, aggiungendo un'azione di filtro per intent per ogni callback. Ad esempio: ACTION_NETWORK_LOGS_AVAILABLE o ACTION_CHOOSE_PRIVATE_KEY_ALIAS.
  3. Proteggi il broadcast receiver con BIND_DEVICE_ADMIN autorizzazione.

Lo snippet seguente mostra il manifest dell'app di un'app con delega singola che gestisce sia il logging di rete sia la selezione dei certificati:

<receiver android:name=".app.DelegatedAdminReceiver"
        android:permission="android.permission.BIND_DELEGATED_ADMIN">
    <intent-filter>
        <action android:name="android.app.admin.action.NETWORK_LOGS_AVAILABLE">
        <action android:name="android.app.action.CHOOSE_PRIVATE_KEY_ALIAS">
    </intent-filter>
    </receiver>

Logging dell'attività di rete

Per aiutare le aziende a rilevare e tenere traccia del malware, i DPC possono registrare le connessioni TCP e le ricerche DNS da parte del sistema. In Android 10, amministratori di sistemi completamente gestiti i dispositivi possono delegare il logging di rete a un'app specializzata.

Per recuperare i log di rete dopo che il sistema rende disponibile un batch, le app delegati devono prima eseguire una sottoclasse DelegatedAdminReceiver: (descritto in precedenza). Nella sottoclasse, implementa onNetworkLogsAvailable() il callback seguendo le indicazioni in Recuperare i log.

Le app delegati possono chiamare i seguenti utenti DevicePolicyManager metodi (passaggio null per l'argomento admin):

Per evitare di perdere i log, i DPC non devono attivare il logging di rete. se prevedi di delegare a un'altra app. L'app delegata deve abilitare e raccogliere i log di rete. Dopo che un DPC ha delegato il logging di rete, non riceverà altri onNetworkLogsAvailable() i callback.

Per informazioni su come segnalare il logging delle attività di rete da un'app delegata, leggi l'articolo nella guida per gli sviluppatori Logging dell'attività di rete.

Selezione del certificato

In Android 10, gli amministratori di dispositivi completamente gestiti, profili di lavoro e utenti secondari possono delegare la selezione dei certificati a un'app specializzata.

Per selezionare un alias di certificato, le app delegati devono prima eseguire la sottoclasse DelegatedAdminReceiver (descritto in precedenza). Nella sottoclasse, implementa onChoosePrivateKeyAlias() e restituisce un alias per un preferito. oppure, per chiedere all'utente di selezionarne uno, restituisci null.

Ritiro dei criteri di amministrazione dei dispositivi

Android 10 impedisce ad app e DPC di applicare dispositivi legacy criteri amministrativi. Consigliamo ai clienti e i partner passano a dispositivi o profili di lavoro completamente gestiti. Le seguenti viene generato un errore SecurityException quando richiamato da un amministratore del dispositivo che ha come target Android 10:

di Gemini Advanced.

Alcune applicazioni utilizzano l'amministrazione del dispositivo per l'amministrazione dei dispositivi consumer. Per ad esempio bloccare e cancellare i dati di un dispositivo smarrito. Per attivare questa funzionalità, procedi nel seguente modo continuano a essere disponibili:

Per maggiori informazioni su queste modifiche, leggi Amministratore dispositivo il ritiro.

Nuove funzionalità per le app

Le app che hanno come target Android 10 possono eseguire query sulla complessità del blocco schermo impostata su un dispositivo prima di mostrare dati riservati o lanciare funzionalità fondamentali. Chiamate di app l'API KeyChain sfrutta i vantaggi miglioramenti del comportamento, mentre sono disponibili nuove funzionalità anche per le app VPN.

Controllo qualità blocco schermo

A partire da Android 10, le app con funzionalità fondamentali che richiedono un blocco schermo può interrogare la complessità del blocco schermo di un dispositivo o del profilo di lavoro. App che richiedono un blocco schermo più forte può indirizzare l'utente alle impostazioni del blocco schermo di sistema, consentendo di aggiornare le impostazioni di sicurezza.

Per controllare la qualità del blocco schermo:

Per avviare le impostazioni di blocco schermo di sistema, usa ACTION_SET_NEW_PASSWORD con EXTRA_PASSWORD_COMPLEXITY extra, opzioni che non che soddisfano la complessità specificata nell'intent extra non sono selezionabili. Gli utenti possono scegliere tra le opzioni di blocco schermo disponibili o uscire dalla schermata.

Best practice:visualizza un messaggio nella tua app prima di avviare il sistema pagina di blocco schermo. Quando l'app ripristina, chiama DevicePolicyManager.getPasswordComplexity() di nuovo. Se è comunque necessario un blocco schermo più efficace, limita l'accesso anziché che chiede ripetutamente agli utenti di aggiornare le impostazioni di sicurezza.

Supporto del proxy HTTP nelle app VPN

In Android 10, le app VPN possono impostare un proxy HTTP per la connessione VPN. Per aggiungere un proxy HTTP, un'app VPN deve configurare un ProxyInfo con un host e una porta, prima di chiamare VpnService.Builder.setHttpProxy(). Il sistema e molte librerie di rete utilizzano questa impostazione del proxy, ma il sistema non obbliga le app a eseguire il proxy delle richieste HTTP.

Per un esempio di codice che mostra come impostare un proxy HTTP, consulta il VPN di esempio.

Modalità di servizio VPN

Le app VPN possono rilevare se il servizio è in esecuzione grazie alla funzionalità sempre attiva VPN e se blocco sia attiva. Nuovi metodi aggiunto in Android 10 può aiutarti a modificare l'interfaccia utente. Ad esempio, potrebbe disabilitare il pulsante di disconnessione quando la VPN sempre attiva controlla il ciclo di vita del tuo servizio.

Le app VPN possono chiamare il seguente VpnService dopo la connessione al servizio e definire l'interfaccia locale:

  • Da isAlwaysOn() a scopri se il sistema ha avviato il servizio a causa di una VPN sempre attiva
  • isLockdownEnabled() per scoprire se il sistema blocca le connessioni che non usano la VPN

Lo stato sempre attivo rimane lo stesso mentre il servizio è in esecuzione, ma lo stato della modalità di blocco potrebbe cambiare.

Miglioramenti del portachiavi

Android 10 introduce diversi miglioramenti relativi alla API KeyChain.

Quando un'app chiama KeyChain.choosePrivateKeyAlias(), Android 10 e versioni successive dispositivi filtrano l'elenco di certificati da cui un utente può scegliere in base emittenti e algoritmi chiave specificati nella chiamata.

Ad esempio, quando un server TLS invia una richiesta di certificato. messaggio come parte di un TLS handshake e le chiamate del browser KeyChain.choosePrivateKeyAlias(), solo la richiesta di selezione del certificato include opzioni che corrispondono al parametro emittenti. Se non ci sono opzioni di corrispondenza disponibile o non sono installati certificati sul dispositivo, non verrà mostrata all'utente.

Inoltre, KeyChain non sarà più richiede che un dispositivo abbia un blocco schermo prima di poter utilizzare chiavi o certificati CA importati.