As permissões do Android fornecem controles que aumentam a conscientização do usuário e limitam o acesso de um aplicativo a dados confidenciais. A configuração de permissões no Android 8.0 e versões anteriores inclui a lista de permissões, sem a qual os aplicativos privilegiados são desativados, mesmo que estejam no caminho priv-app
. No Android 9 e versões posteriores, um dispositivo que tenta usar aplicativos que não estejam na lista de permissões adequada não será inicializado.
O Android 10 introduziu o conceito de role , um nome exclusivo dentro do sistema associado a determinados requisitos e privilégios. Atribua funções a aplicativos para conceder-lhes permissões para uma finalidade específica e configure funções padrão usando recursos de configuração da plataforma.
As proteções aumentadas contra aplicativos potencialmente prejudiciais (PHAs) melhoram
- Transparência sobre comportamento potencialmente prejudicial do aplicativo.
- Controle do usuário sobre o comportamento do aplicativo.
- Critério dos desenvolvedores de aplicativos ao usar dados privados, protegidos por permissões.
Instalação e permissão do pacote
No Android 9 e versões anteriores, as funcionalidades de instalação de pacotes e controle de permissão estavam contidas no pacote PackageInstaller
( //packages/apps/PackageInstaller
). No Android 10 e versões posteriores, a funcionalidade de controle de permissão reside em um pacote separado, PermissionController
( //packages/apps/PermissionController
). A Figura 1 ilustra onde os dois pacotes residem no Android 10.
Listas de permissões e acesso
No Android 6.0 e superior, os aplicativos solicitam acesso a permissões perigosas em tempo de execução . O Android 10 adiciona permissões de tempo de execução de reconhecimento de atividade (AR), que solicitam que o usuário modifique ou conceda permissões perigosas.
O Android 8.0 exigia que você permitisse explicitamente aplicativos privilegiados nos arquivos XML de configuração do sistema no diretório /etc/permissions
. No Android 9 e versões posteriores, as permissões privilegiadas devem estar na lista de permissões ou o dispositivo não poderá inicializar.
Para limitar a visibilidade interna da API e evitar que aplicativos acessem acidentalmente as bibliotecas da plataforma, o Android 7.0 introduziu Namespaces para bibliotecas nativas . Isso separa as bibliotecas do sistema das bibliotecas de aplicativos, e os fabricantes de dispositivos podem adicionar suas próprias bibliotecas nativas.
A partir do Android 10, os aplicativos devem ter permissões de assinatura e consentimento do usuário para acessar o conteúdo da tela de um dispositivo . Aplicativos privilegiados que dependem da funcionalidade de captura silenciosa, como fazer uma captura de tela, devem usar a classe MediaProjection .
Transparência e privacidade
No Android 6.0 e superior, o endereço MAC de fábrica do dispositivo é protegido contra acesso por provedores de serviços Wi-Fi e analisadores de pacotes. Restrições adicionais a partir do Android 10 limitam o acesso de aplicativos aos identificadores de dispositivo (IDs) imutáveis , a menos que estejam na lista de permissões para permissões privilegiadas . (A seção Conectividade fornece uma discussão relacionada sobre identificadores de dispositivos , pois isso afeta as operadoras.)
No Android 9 e versões anteriores, os usuários fazem escolhas persistentes ao conceder acesso de localização aos aplicativos. A partir do Android 10, um recurso de permissões de localização tristate oferece aos usuários três opções para permitir o acesso do aplicativo à localização de um dispositivo. Esses requisitos de permissão são aplicados a aplicativos no Android 10, independentemente do SDK de destino.
Configure permissões para outros recursos de transparência e privacidade a partir do Android 10
- O lembrete de localização de acesso em segundo plano mostra aos usuários quando um aplicativo acessa a localização do dispositivo usando a permissão
ACCESS_FINE_LOCATION
em segundo plano. - Os dados relacionados à afinidade de contatos, gerenciados pelo componente Provedor de Contatos, são acessados de maneira diferente: os aplicativos não podem gravar ou ler os dados de afinidades de contato no banco de dados. Isso afeta as APIs relacionadas ao chamador .
Configurações simplificadas
As configurações de permissões foram simplificadas para Android 6.0 e superior.
- Os recursos ambientais para serviços iniciados pelo
init
mantêm todos os aspectos da configuração do serviço em um único arquivo.rc
. Ao definir recursos para serviços não iniciados porinit
, configure os recursos do sistema de arquivos usandofs_config.c
. - O Android 7.x e versões anteriores estendem o mecanismo de IDs do Android (AIDs), usando um arquivo
android_filesystem_config.h
específico do dispositivo para especificar recursos do sistema de arquivos e/ou AIDs personalizados do fabricante do dispositivo. O Android 8.0 e versões posteriores oferecem suporte a um novo método para ampliar os recursos do sistema de arquivos . - No Android 8.0, o manuseio de comandos USB saiu dos scripts
init
específicos do dispositivo (uma substituição das camadas HAL) e foi para um daemon USB nativo. A interface USB HAL deve ser implementada em todos os dispositivos com Android 8.0 e superior.