Le autorizzazioni Android forniscono controlli che aumentano la consapevolezza dell'utente e limitano l'accesso di un'app ai dati sensibili. La configurazione delle autorizzazioni su Android 8.0 e versioni precedenti include l'inserimento nella lista consentita, senza la quale le app privilegiate vengono disabilitate, anche se si trovano nel percorso priv-app
. Su Android 9 e versioni successive, un dispositivo che tenta di utilizzare app non correttamente incluse nella lista consentita non si avvia.
Android 10 ha introdotto il concetto di ruolo , un nome univoco all'interno del sistema associato a determinati requisiti e privilegi. Assegna ruoli alle app per concedere loro autorizzazioni per uno scopo specifico e configura ruoli predefiniti utilizzando le risorse di configurazione della piattaforma.
Migliorano le maggiori protezioni contro le app potenzialmente dannose (PHA).
- Trasparenza nel comportamento delle app potenzialmente dannose.
- Controllo dell'utente sul comportamento dell'app.
- Discrezionalità degli sviluppatori di app quando utilizzano dati privati, protetti da autorizzazioni.
Installazione e autorizzazione del pacchetto
In Android 9 e versioni precedenti, le funzionalità di installazione del pacchetto e di controllo delle autorizzazioni erano contenute nel pacchetto PackageInstaller
( //packages/apps/PackageInstaller
). In Android 10 e versioni successive, la funzionalità di controllo delle autorizzazioni risiede in un pacchetto separato, PermissionController
( //packages/apps/PermissionController
). La Figura 1 illustra dove risiedono i due pacchetti in Android 10.
Liste consentite e accesso
In Android 6.0 e versioni successive, le app richiedono l'accesso ad autorizzazioni pericolose in fase di runtime . Android 10 aggiunge autorizzazioni di runtime di riconoscimento delle attività (AR), che richiedono all'utente di modificare o consentire autorizzazioni pericolose.
Android 8.0 richiedeva di consentire esplicitamente le app privilegiate nei file XML di configurazione del sistema nella directory /etc/permissions
. In Android 9 e versioni successive, le autorizzazioni privilegiate devono essere incluse nella lista consentita altrimenti il dispositivo non potrà avviarsi.
Per limitare la visibilità dell'API interna e impedire alle app di accedere accidentalmente alle librerie della piattaforma, Android 7.0 ha introdotto gli spazi dei nomi per le librerie native . Ciò separa le librerie di sistema dalle librerie delle applicazioni e i produttori di dispositivi possono aggiungere le proprie librerie native.
A partire da Android 10, le app devono disporre sia delle autorizzazioni di firma che del consenso dell'utente per accedere al contenuto dello schermo di un dispositivo . Le app privilegiate che si basano sulla funzionalità di acquisizione silenziosa, ad esempio l'acquisizione di uno screenshot, dovrebbero invece utilizzare la classe MediaProjection .
Trasparenza e privacy
In Android 6.0 e versioni successive, l'indirizzo MAC di fabbrica del dispositivo è protetto dall'accesso da parte dei provider di servizi Wi-Fi e degli analizzatori di pacchetti. Ulteriori restrizioni a partire da Android 10 impediscono alle app di accedere agli identificatori di dispositivo (ID) immutabili a meno che non siano incluse nella lista consentita per autorizzazioni privilegiate . (La sezione Connettività fornisce una discussione correlata sugli identificatori del dispositivo , poiché ciò influisce sugli operatori.)
Su Android 9 e versioni precedenti, gli utenti effettuano scelte persistenti quando concedono l'accesso alla posizione alle app. A partire da Android 10, una funzionalità di autorizzazione alla posizione in tre stati offre agli utenti tre opzioni per consentire l'accesso dell'app alla posizione di un dispositivo. Questi requisiti di autorizzazione vengono applicati alle app in Android 10 indipendentemente dall'SDK di destinazione.
Configura le autorizzazioni per altre funzionalità di trasparenza e privacy a partire da Android 10
- Il promemoria sulla posizione per l'accesso in background mostra agli utenti quando un'app accede alla posizione del loro dispositivo utilizzando l'autorizzazione
ACCESS_FINE_LOCATION
in background. - Si accede ai dati relativi alle affinità dei contatti, gestiti dal componente Provider contatti, in modo diverso: le app non possono scrivere o leggere dai dati delle affinità dei contatti nel database. Ciò influisce sulle API relative al chiamante .
Configurazioni semplificate
Le configurazioni delle autorizzazioni sono state semplificate per Android 6.0 e versioni successive.
- Le funzionalità ambientali per i servizi lanciati da
init
mantengono tutti gli aspetti della configurazione del servizio in un singolo file.rc
. Quando si impostano le funzionalità per i servizi non avviati dainit
, configurare invece le funzionalità del file system utilizzandofs_config.c
. - Android 7.x e versioni precedenti estendono il meccanismo degli ID Android (AID), utilizzando un file
android_filesystem_config.h
specifico del dispositivo per specificare le funzionalità del file system e/o gli AID personalizzati del produttore del dispositivo. Android 8.0 e versioni successive supportano un nuovo metodo per estendere le funzionalità del file system . - In Android 8.0, la gestione dei comandi USB è stata spostata dagli script
init
specifici del dispositivo (una sostituzione dei livelli HAL) a un demone USB nativo. L'interfaccia HAL USB deve essere implementata su ogni dispositivo avviato su Android 8.0 e versioni successive.