Autorizzazioni Android

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 creazione di una 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 correttamente 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 i ruoli predefiniti utilizzando le risorse di configurazione della piattaforma.

Le maggiori protezioni contro le applicazioni potenzialmente dannose (PHA) migliorano:

  • Trasparenza sul comportamento delle app potenzialmente dannose.
  • Controllo utente sul comportamento delle app.
  • A discrezione degli sviluppatori di app quando utilizzano dati privati, protetti da autorizzazioni.

Installazione e autorizzazione dei pacchetti

In Android 9 e versioni precedenti, le funzionalità di installazione dei pacchetti e controllo delle autorizzazioni erano contenute nel pacchetto PackageInstaller (//packages/apps/PackageInstaller). In Android 10 e versioni successive, la funzionalità di controllo delle autorizzazioni si trova in un pacchetto separato, PermissionController (//packages/apps/PermissionController). La Figura 1 mostra la posizione dei due pacchetti in Android 10.

Separazione delle funzionalità di installazione dei pacchetti e controllo delle autorizzazioni per le app di sistema e per le app installate dall'utente

Figura 1. Funzionalità di installazione dei pacchetti 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 in fase di runtime. Android 10 aggiunge le autorizzazioni di runtime per il riconoscimento dell'attività (AR), che chiedono all'utente di modificare o consentire autorizzazioni pericolose.

Android 8.0 richiedeva di inserire esplicitamente le app con privilegi negli elenchi consentiti nei file XML di configurazione del 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ò essere avviato.

Per limitare la visibilità delle API interne e impedire alle app di accedere accidentalmente alle librerie della piattaforma, Android 7.0 ha introdotto spazi dei nomi per le librerie native. In questo modo, le librerie di sistema vengono separate da quelle delle app 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 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 l'acquisizione di uno screenshot, devono utilizzare la classe MediaProjection.

Android 15 richiede di inserire esplicitamente nella lista consentita le autorizzazioni di firma della piattaforma richieste da app non di sistema o richieste di recente dagli aggiornamenti alle app di sistema, nei file XML di configurazione del sistema nella directory /etc/permissions.

Trasparenza e privacy

In Android 6.0 e versioni successive, l'indirizzo MAC di fabbrica di un dispositivo è protetto dall'accesso da parte di fornitori di servizi Wi-Fi e analizzatori di pacchetti. Ulteriori limitazioni a partire da Android 10 impediscono alle app di accedere agli identificatori dispositivo (ID) immutabili, a meno che non siano inserite nella lista consentita per le autorizzazioni privilegiate. (La sezione Connettività fornisce una discussione correlata sugli identificatori del dispositivo, in quanto ciò influisce sugli operatori.)

Su Android 9 e versioni precedenti, gli utenti fanno scelte permanenti quando concedono l'accesso alla posizione alle app. A partire da Android 10, una funzionalità di autorizzazioni di accesso alla posizione a 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.

Configurare le autorizzazioni per altre funzionalità 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 funzionalità ambientali per i servizi lanciati da init mantengono tutti gli aspetti della configurazione del servizio in un unico file .rc. Quando imposti le funzionalità per i servizi non avviati da init, configura le funzionalità del file system utilizzando fs_config.c.
  • Android 7.x e versioni precedenti estendono il meccanismo degli ID Android (AID) utilizzando un file android_filesystem_config.h specifico per il 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 per dispositivo (una sostituzione dei livelli HAL) a un daemon USB nativo. L'interfaccia USB HAL deve essere implementata su ogni dispositivo lanciato su Android 8.0 e versioni successive.