Le autorizzazioni Android forniscono controlli che aumentano la consapevolezza degli utenti e limitano l'accesso di un'app ai dati sensibili. La configurazione delle autorizzazioni su Android 8.0 e versioni precedenti include la lista consentita, senza la quale le app con privilegi vengono disattivate, anche se si trovano nel percorso priv-app
. Su Android 9 e versioni successive, un dispositivo che tenta di utilizzare app non incluse nella lista consentita non si avvia.
Android 10 ha introdotto il concetto di ruolo, un nome unico all'interno del sistema associato a determinati requisiti e privilegi. Assegna i ruoli alle app per concederle le autorizzazioni per un fine specifico e configura i ruoli predefiniti utilizzando le risorse di configurazione della piattaforma.
Le protezioni rafforzate contro le app potenzialmente dannose (PHA) migliorano:
- Trasparenza sul comportamento potenzialmente dannoso delle app.
- Controllo dell'utente sul comportamento dell'app.
- Discrezione degli sviluppatori di app nell'utilizzo di dati privati, protetti dalle autorizzazioni.
Autorizzazione e installazione del pacchetto
In Android 9 e versioni precedenti, le funzionalità di installazione del pacchetto e 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 la posizione dei due pacchetti in Android 10.
Figura 1. Funzionalità di installazione del pacchetto e controllo delle autorizzazioni in Android 10
Liste consentite e accesso
In Android 6.0 e versioni successive, le app richiedono l'accesso alle autorizzazioni pericolose al momento dell'esecuzione. Android 10 aggiunge autorizzazioni di runtime AR (riconoscimento delle attività), che richiedono all'utente di modificare o consentire autorizzazioni pericolose.
In Android 8.0 era necessario inserire esplicitamente le app privilegiate nella lista consentita nei file XML di configurazione di sistema nella directory /etc/permissions
.
In Android 9 e versioni successive, le autorizzazioni privilegiate devono essere
inserite nella lista consentita
altrimenti il dispositivo non può avviarsi.
Per limitare la visibilità delle API interne e impedire alle app di accedere accidentalmente alle librerie della piattaforma, Android 7.0 ha introdotto i spazi dei nomi per le librerie native. In questo modo le librerie di sistema vengono separate dalle librerie di app e i produttori possono aggiungere le proprie librerie native.
A partire da Android 10, le app devono disporre sia delle autorizzazioni di firma sia del consenso dell'utente per accedere ai contenuti dello schermo di un dispositivo. Le app con privilegi che si basano sulla funzionalità di acquisizione silenziosa, ad esempio per l'acquisizione di screenshot, devono utilizzare la classe MediaProjection.
Android 15 richiede di inserire esplicitamente le autorizzazioni di firma della piattaforma richieste da app non di sistema o appena richieste da aggiornamenti di app di sistema, nei file XML di configurazione di sistema nella directory /etc/permissions
.
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 limitazioni a partire da Android 10 limitano l'accesso delle app agli identificatori di dispositivi (ID) immutabili, a meno che non siano consentite per le autorizzazioni con privilegi. La sezione Connettività fornisce una discussione correlata sugli identificatori dei dispositivi, in quanto interessa gli operatori.
Su Android 9 e versioni precedenti, gli utenti fanno scelte permanenti quando concedono alle app l'accesso alla posizione. A partire da Android 10, una funzionalità di autorizzazioni di accesso alla posizione con tre stati offre agli utenti tre opzioni per consentire alle app di accedere alla posizione di un dispositivo. Questi requisiti di autorizzazione vengono applicati alle app su Android 10, indipendentemente dall'SDK di destinazione.
Configurare le autorizzazioni per altre funzionalità di trasparenza e privacy a partire da Android 10
- Il promemoria relativo all'
accesso alla posizione in background viene mostrato agli utenti quando un'app accede alla posizione del loro dispositivo utilizzando l'autorizzazione
ACCESS_FINE_LOCATION
in background. - I dati relativi alle affinità con i contatti, gestiti dal componente Provider di contatti, vengono acceduti in modo diverso: le app non possono scrivere o leggere i dati di affinità con i contatti nel database. Ciò influisce sulle API relative ai chiamanti.
Configurazioni semplificate
Le configurazioni delle autorizzazioni sono state semplificate per Android 6.0 e versioni successive.
- Le funzionalità di ambiente per i servizi lanciati da
init
mantengono tutti gli aspetti della configurazione del servizio in un unico file.rc
. Quando imposti le funzionalità per servizi non avviati dainit
, configura le funzionalità del file system utilizzando invecefs_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 funzionalità del file system e/o AID personalizzati del produttore del dispositivo. Android 8.0 e versioni superiori 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 per i livelli HAL) a un daemon USB nativo. L'interfaccia HAL USB deve essere implementata su ogni dispositivo lanciato su Android 8.0 e versioni successive.