Los permisos de Android proporcionan controles que aumentan el conocimiento de los usuarios y limitan el acceso de una app a datos sensibles. La configuración de permisos en Android 8.0 y versiones anteriores incluye la lista de entidades permitidas, sin la cual se inhabilitan las apps con privilegios, incluso si están en la ruta de acceso priv-app
. En Android 9 y versiones posteriores, no se iniciará un dispositivo que intente usar apps que no estén incluidas en la lista de entidades permitidas de forma correcta.
Android 10 introdujo el concepto de rol, un nombre único dentro del sistema asociado con ciertos requisitos y privilegios. Asigna funciones a las apps a fin de otorgarles permisos para un propósito específico y configura las funciones predeterminadas con los recursos de configuración de la plataforma.
Las mayores protecciones contra las apps potencialmente dañinas (APD) mejoran los siguientes aspectos:
- Transparencia sobre el comportamiento potencialmente dañino de las apps
- Control del usuario sobre el comportamiento de la app
- Discreción de los desarrolladores de apps cuando usan datos privados protegidos por permisos
Instalación de paquete y permiso
En Android 9 y versiones anteriores, las funciones de instalación de paquetes y control de permisos estaban incluidas en el paquete PackageInstaller
(//packages/apps/PackageInstaller
). En Android 10 y versiones posteriores, la funcionalidad de control de permisos reside en un paquete independiente, PermissionController
(//packages/apps/PermissionController
). En la Figura 1, se muestra dónde residen los dos paquetes en Android 10.
Figura 1: Funciones de instalación de paquetes y control de permisos en Android 10
Listas de entidades permitidas y acceso
En Android 6.0 y versiones posteriores, las apps solicitan acceso a permisos peligrosos durante el tiempo de ejecución. Android 10 agrega permisos de tiempo de ejecución de reconocimiento de actividad (AR), que le solicitan al usuario que modifique o permita permisos peligrosos.
Android 8.0 requería que incluyeras explícitamente en la lista de entidades permitidas las apps con privilegios en los archivos en formato XML de configuración del sistema en el directorio /etc/permissions
.
En Android 9 y versiones posteriores, los permisos con privilegios deben estar en la lista de entidades permitidas, o el dispositivo no podrá iniciarse.
Para limitar la visibilidad de la API interna y evitar que las apps accedan accidentalmente a las bibliotecas de la plataforma, Android 7.0 introdujo los espacios de nombres para bibliotecas nativas. Esto separa las bibliotecas del sistema de las bibliotecas de apps, y los fabricantes de dispositivos pueden agregar sus propias bibliotecas nativas.
A partir de Android 10, las apps deben tener permisos de firma y consentimiento del usuario para acceder al contenido de la pantalla de un dispositivo. Las apps con privilegios que dependen de la función de captura silenciosa, como tomar una captura de pantalla, deben usar la clase MediaProjection en su lugar.
Android 15 requiere que incluyas de forma explícita en la lista de entidades permitidas los permisos de firma de la plataforma que solicitan las apps que no son del sistema o que solicitan recientemente las actualizaciones de las apps del sistema, en los archivos en formato XML de configuración del sistema en el directorio /etc/permissions
.
Transparencia y privacidad
En Android 6.0 y versiones posteriores, los proveedores de servicios de Wi-Fi y los analizadores de paquetes protegen la dirección MAC de fábrica de un dispositivo del acceso. Las restricciones adicionales a partir de Android 10 limitan el acceso de las apps a los identificadores (IDs) de dispositivos inmutables, a menos que estén en la lista de entidades permitidas para permisos de privilegio. (En la sección Conectividad, se proporciona un debate sobre los identificadores de dispositivos, ya que esto afecta a los operadores).
En Android 9 y versiones anteriores, los usuarios toman decisiones persistentes cuando otorgan acceso a la ubicación a las apps. A partir de Android 10, una función de permisos de ubicación triestado ofrece a los usuarios tres opciones para permitir que la app acceda a la ubicación de un dispositivo. Estos requisitos de permisos se aplican a las apps en Android 10, independientemente del SDK de destino.
Configura permisos para otras funciones de transparencia y privacidad a partir de Android 10
- El recordatorio de
acceso a la ubicación en segundo plano les muestra a los usuarios cuando una app accede a la ubicación de su dispositivo con el permiso
ACCESS_FINE_LOCATION
en segundo plano. - Se accede a los datos relacionados con la afinidad de contactos, administrados por el componente Proveedor de contactos, de manera diferente: las apps no pueden escribir en los datos de afinidad de contactos ni leerlos en la base de datos. Esto afecta a las APIs relacionadas con el llamador.
Configuración optimizada
Se optimizó la configuración de permisos para Android 6.0 y versiones posteriores.
- Las funciones ambientales para los servicios que inicia
init
mantienen todos los aspectos de la configuración del servicio en un solo archivo.rc
. Cuando configures las capacidades de los servicios que no iniciainit
, configura las capacidades del sistema de archivos confs_config.c
. - Android 7.x y las versiones anteriores extienden el mecanismo de IDs de Android (AID) con un archivo
android_filesystem_config.h
específico del dispositivo para especificar las capacidades del sistema de archivos o los AID del fabricante del dispositivo personalizados. Android 8.0 y versiones posteriores admiten un nuevo método para extender las capacidades del sistema de archivos. - En Android 8.0, el manejo de los comandos USB se trasladó de las secuencias de comandos
init
específicas del dispositivo (una sustitución de las capas HAL) a un daemon USB nativo. La interfaz de HAL de USB se debe implementar en todos los dispositivos que se inicien en Android 8.0 y versiones posteriores.