Autorizzazioni Android

Le autorizzazioni di 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 whitelist, senza la quale le app privilegiate sono disabilitate, anche se si trovano nel percorso priv-app . Su Android 9 e versioni successive, un dispositivo che tenta di utilizzare app non correttamente inserite nella whitelist non si avvia.

Migliorano le maggiori protezioni contro le app potenzialmente dannose (PHA)

  • Trasparenza nel comportamento delle app potenzialmente dannose.
  • Controllo dell'utente sul comportamento dell'app.
  • La discrezione degli sviluppatori di app quando si utilizzano dati privati, protetti da autorizzazioni.

Installazione e autorizzazione del pacchetto

In Android 9 e PackageInstaller , 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.

Separazione delle funzionalità di installazione del pacchetto e di controllo delle autorizzazioni per le app di sistema e quelle utilizzate dalle app installate dall'utente
Figura 1. Installazione del pacchetto e funzionalità di controllo delle autorizzazioni in Android 10

Whitelist e accesso

In Android 6.0 e versioni successive, le app richiedono l'accesso a autorizzazioni pericolose in fase di esecuzione . Android 10 aggiunge autorizzazioni di runtime di riconoscimento attività (AR), che richiedono all'utente di modificare o consentire autorizzazioni pericolose.

Android 8.0 richiedeva di autorizzare 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 autorizzate o 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 gli spazi dei nomi per le librerie native . Questo separa le librerie di sistema dalle librerie dell'applicazione 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, come l'acquisizione di uno screenshot, dovrebbero invece utilizzare la classe MediaProjection .

Trasparenza e privacy

In Android 6.0 e versioni successive, un indirizzo MAC di fabbrica del dispositivo è protetto dall'accesso da parte di provider di servizi Wi-Fi e 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 autorizzate per autorizzazioni privilegiate . (La sezione Connettività fornisce una discussione correlata sugli identificatori di dispositivo , poiché ciò influisce sui gestori.)

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 funzione di autorizzazioni di posizione tristate 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 funzioni di trasparenza e privacy a partire da Android 10

Configurazioni semplificate

Le configurazioni delle autorizzazioni sono state semplificate per Android 6.0 e versioni successive.

  • Le capacità ambientali per i servizi lanciati da init conservano tutti gli aspetti della configurazione del servizio in un unico file .rc . Quando si impostano le capacità per i servizi non avviati da init , configurare le capacità del file system usando invece fs_config.c .
  • Android 7.xe android_filesystem_config.h estendono il meccanismo degli ID Android (AID), utilizzando un file android_filesystem_config.h specifico del android_filesystem_config.h per specificare le capacità del filesystem e / o gli AID personalizzati del produttore del dispositivo. Android 8.0 e versioni successive supportano un nuovo metodo per estendere le capacità del filesystem .
  • In Android 8.0, la gestione dei comandi USB è stata spostata dagli script di init specifici del dispositivo (una sostituzione per i livelli HAL) e in un demone USB nativo. L'interfaccia USB HAL deve essere implementata su ogni dispositivo che si avvia su Android 8.0 e versioni successive.