Autorizzazioni su Android

Le autorizzazioni app contribuiscono a proteggere la privacy degli utenti impedendo l'accesso a quanto segue:

  • Dati con limitazioni, come lo stato del sistema e i dati di contatto degli utenti
  • Azioni limitate, ad esempio la connessione a un dispositivo accoppiato e la registrazione dell'audio

Questa pagina fornisce una panoramica del funzionamento delle autorizzazioni Android, tra cui un flusso di lavoro di alto livello per l'utilizzo delle autorizzazioni, descrizioni di diversi tipi di autorizzazioni e alcune best practice per l'utilizzo delle autorizzazioni nella tua app. Altre pagine spiegano come ridurre al minimo le richieste di autorizzazioni della tua app, dichiarare le autorizzazioni, richiedere autorizzazioni di runtime e limitare il modo in cui altre app possono interagire con i componenti della tua app.

Per visualizzare un elenco completo delle autorizzazioni per le app Android, visita la pagina di riferimento dell'API per le autorizzazioni.

Per visualizzare alcune app di esempio che mostrano il flusso di lavoro delle autorizzazioni, visita il repository di esempi di autorizzazioni Android su GitHub.

Flusso di lavoro per l'utilizzo delle autorizzazioni

Se la tua app offre funzionalità che potrebbero richiedere l'accesso a dati con limitazioni o azioni con limitazioni, determina se puoi ottenere le informazioni o eseguire le azioni senza dover dichiarare le autorizzazioni. Puoi soddisfare molti casi d'uso nella tua app, ad esempio scattare foto, mettere in pausa la riproduzione dei contenuti multimediali e mostrare annunci pertinenti, senza dover dichiarare alcuna autorizzazione.

Se decidi che la tua app deve accedere a dati con limitazioni o eseguire azioni con limitazioni per soddisfare un caso d'uso, dichiara le autorizzazioni appropriate. Alcune autorizzazioni, note come autorizzazioni di installazione, vengono concesse automaticamente quando l'app viene installata. Altre autorizzazioni, chiamate autorizzazioni di runtime, richiedono all'app di fare un passo avanti e richiedere l'autorizzazione in fase di runtime.

La figura 1 illustra il flusso di lavoro per l'utilizzo delle autorizzazioni app:

Figura 1. Flusso di lavoro di alto livello per l'utilizzo delle autorizzazioni su Android.

Tipi di autorizzazioni

Android classifica le autorizzazioni in diversi tipi, tra cui autorizzazioni al momento dell'installazione, autorizzazioni di runtime e autorizzazioni speciali. Il tipo di ogni autorizzazione indica l'ambito dei dati con limitazioni a cui la tua app può accedere e l'ambito delle azioni con limitazioni che la tua app può eseguire quando il sistema concede all'app l'autorizzazione. Il livello di protezione per ogni autorizzazione si basa sul suo tipo ed è mostrato nella pagina Referenze API per le autorizzazioni.

Autorizzazioni al momento dell'installazione

L'immagine a sinistra mostra un elenco delle autorizzazioni di un'app al momento dell'installazione. L'immagine
    a destra mostra una finestra popup contenente due opzioni: Consenti e Nega.
Figura 2. L'elenco delle autorizzazioni richieste al momento dell'installazione di un'app, visualizzato in uno store.

Le autorizzazioni concesse al momento dell'installazione consentono all'app di accedere a dati con limitazioni o di eseguire azioni con limitazioni che influiscono minimamente sul sistema o su altre app. Quando dichiari le autorizzazioni di installazione nella tua app, un app store mostra all'utente una notifica relativa alle autorizzazioni di installazione quando visualizza la pagina dei dettagli di un'app, come mostrato nella figura 2. Il sistema concede automaticamente le autorizzazioni alla tua app quando l'utente la installa.

Android include diversi sottotipi di autorizzazioni di installazione, tra cui le autorizzazioni normali e quelle di firma.

Autorizzazioni normali

Queste autorizzazioni consentono di accedere a dati e azioni che vanno oltre la sandbox della tua app, ma presentano un rischio molto ridotto per la privacy dell'utente e il funzionamento di altre app.

Il sistema assegna il livello di protezione normal alle autorizzazioni normali.

Autorizzazioni di firma

Il sistema concede un'autorizzazione di firma a un'app solo se l'app è firmata dallo stesso certificato dell'app o del sistema operativo che definisce l'autorizzazione.

Anche le applicazioni che implementano servizi privilegiati, come i servizi di compilazione automatica o VPN, utilizzano le autorizzazioni di firma. Queste app richiedono autorizzazioni di firma per l'associazione ai servizi in modo che solo il sistema possa eseguire l'associazione ai servizi.

Il sistema assegna il livello di protezione signature alle autorizzazioni di firma.

Autorizzazioni runtime

Una finestra di dialogo popup contenente due opzioni: Consenti e Nega.
Figura 3. La richiesta di autorizzazione di sistema visualizzata quando la tua app richiede un'autorizzazione di runtime.

Le autorizzazioni di runtime, note anche come autorizzazioni pericolose, consentono all'app di accedere a dati con limitazioni o di eseguire azioni con limitazioni che influiscono in modo più sostanziale sul sistema e su altre app. Pertanto, devi richiedere le autorizzazioni di runtime nella tua app prima di poter accedere ai dati con limitazioni o eseguire azioni con limitazioni. Non dare per scontato che queste autorizzazioni siano state concesse in precedenza: controllale e, se necessario, richiedile prima di ogni accesso.

Quando l'app richiede un'autorizzazione di runtime, il sistema mostra una richiesta di autorizzazione di runtime, come mostrato nella figura 3.

Molte autorizzazioni di runtime accedono ai dati utente privati, un tipo speciale di dati con limitazioni che include informazioni potenzialmente sensibili. Alcuni esempi di dati utente privati sono la posizione e i dati di contatto.

Il microfono e la fotocamera forniscono l'accesso a informazioni particolarmente sensibili. Pertanto, il sistema ti aiuta a spiegare perché la tua app accede a queste informazioni.

Il sistema assegna il livello di protezione dangerous alle autorizzazioni di runtime.

Autorizzazioni speciali

Le autorizzazioni speciali corrispondono a operazioni specifiche delle app. Solo la piattaforma e gli OEM possono definire autorizzazioni speciali. Inoltre, la piattaforma e gli OEM solitamente definiscono autorizzazioni speciali quando vogliono proteggere l'accesso ad azioni particolarmente potenti, come disegnare sopra altre app.

La pagina Accesso alle app speciali nelle impostazioni di sistema contiene un insieme di operazioni attivabili dall'utente. Molte di queste operazioni sono implementate come autorizzazioni speciali.

Scopri di più su come richiedere autorizzazioni speciali.

Il sistema assegna il livello di protezione appop alle autorizzazioni speciali.

Gruppi di autorizzazioni

Le autorizzazioni possono appartenere a gruppi di autorizzazioni. I gruppi di autorizzazioni sono costituiti da un insieme di autorizzazioni correlate logicamente. Ad esempio, le autorizzazioni per inviare e ricevere messaggi SMS potrebbero appartenere allo stesso gruppo, in quanto entrambe riguardano l'interazione dell'applicazione con gli SMS.

I gruppi di autorizzazioni consentono al sistema di ridurre al minimo il numero di finestre di dialogo di sistema presentate all'utente quando un'app richiede autorizzazioni strettamente correlate. Quando a un utente viene chiesto di concedere le autorizzazioni per un'applicazione, le autorizzazioni appartenenti allo stesso gruppo vengono visualizzate nella stessa interfaccia. Tuttavia, le autorizzazioni possono cambiare gruppo senza preavviso, quindi non dare per scontato che una determinata autorizzazione sia raggruppata con altre autorizzazioni.

Best practice

Le autorizzazioni app si basano sulle funzionalità di sicurezza del sistema e aiutano Android a supportare i seguenti obiettivi relativi alla privacy degli utenti:

  • Controllo:l'utente ha il controllo sui dati che condivide con le app.
  • Trasparenza:l'utente comprende quali dati vengono utilizzati da un'app e perché l'app accede a questi dati.
  • Minimizzazione dei dati: un'app accede e utilizza solo i dati necessari per un'attività o un'azione specifica invocata dall'utente.

Questa sezione presenta un insieme di best practice di base per utilizzare le autorizzazioni in modo efficace nella tua app. Per ulteriori dettagli su come gestire le autorizzazioni su Android, visita la pagina Best practice per le autorizzazioni delle app.

Richiedi un numero minimo di autorizzazioni

Quando l'utente richiede una determinata azione nella tua app, l'app deve richiedere solo le autorizzazioni necessarie per completare l'azione. A seconda di come utilizzi le autorizzazioni, potrebbe esserci un modo alternativo per soddisfare il caso d'uso della tua app senza fare affidamento sull'accesso a informazioni sensibili.

Associare le autorizzazioni di runtime ad azioni specifiche

Richiedi le autorizzazioni il più tardi possibile nel flusso dei casi d'uso della tua app. Ad esempio, se la tua app consente agli utenti di inviare messaggi audio ad altri, attendi fino a quando l'utente non avrà raggiunto la schermata di messaggistica e premuto il pulsante Invia messaggio audio. Dopo che l'utente ha premuto il pulsante, la tua app può richiedere l'accesso al microfono.

Tieni conto delle dipendenze della tua app

Quando includi una libreria, ne erediti anche i requisiti di autorizzazione. Tieni conto delle autorizzazioni richieste da ogni dipendenza e per cosa vengono utilizzate.

Sii trasparente

Quando effettui una richiesta di autorizzazione, indica chiaramente a cosa accedi, perché e quali funzionalità sono interessate se le autorizzazioni vengono rifiutate, in modo che gli utenti possano prendere decisioni consapevoli.

Rendere espliciti gli accessi di sistema

Quando accedi a dati o hardware sensibili, come la fotocamera o il microfono, fornisci un'indicazione continua nella tua app se il sistema non fornisce già questi indicatori. Questo promemoria aiuta gli utenti a capire esattamente quando la tua app accede a dati soggetti a limitazioni o esegue azioni con limitazioni.

Autorizzazioni nei componenti di sistema

Le autorizzazioni non sono solo per richiedere la funzionalità di sistema. I componenti di sistema della tua app possono limitare le altre app che possono interagire con la tua app, come descritto nella pagina su come limitare le interazioni con altre app.