Los permisos de Android proporcionan controles que aumentan el conocimiento del usuario 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 correctamente en la lista de entidades permitidas.
Android 10 introdujo el concepto de un rol, un nombre único dentro del sistema asociado con ciertos requisitos y privilegios. Asigna roles a las apps para otorgarles permisos para un propósito específico y configura los roles predeterminados con recursos de configuración de la plataforma.
Las mayores protecciones contra las apps potencialmente dañinas (PHA) mejoran lo siguiente:
- Transparencia en el comportamiento de aplicaciones potencialmente dañinas
- 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 paquetes y permisos
En Android 9 y versiones anteriores, las funcionalidades de control de instalación de paquetes y permisos
se incluían en el paquetePackageInstaller
(//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: Funcionalidades de control de instalación de paquetes y permisos en Android 10
Listas de entidades permitidas y acceso
En Android 6.0 y versiones posteriores, las apps solicitan acceso a permisos peligrosos en 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 XML de configuración del sistema en el directorio /etc/permissions.
En Android 9 y versiones posteriores, los permisos con privilegios deben incluirse 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 las 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 tanto permisos de firma como consentimiento del usuario para acceder al contenido de la pantalla de un dispositivo. Las apps con privilegios que dependen de la funcionalidad de captura silenciosa, como tomar una captura de pantalla, deben usar la clase MediaProjection en su lugar.
Android 15 requiere que incluyas explícitamente
en la lista de entidades permitidas
los permisos de firma de la plataforma que solicitan las apps que no son del sistema o que se solicitan recientemente con las actualizaciones
de las apps del sistema en los archivos XML de configuración del sistema en el directorio /etc/permissions.
Transparencia y privacidad
En Android 6.0 y versiones posteriores, una dirección MAC de fábrica del dispositivo está protegida contra el acceso de proveedores de servicios Wi-Fi y analizadores de paquetes. Las restricciones adicionales a partir de Android 10 limitan el acceso de las apps a los IDs de dispositivos inmutables, a menos que estén en la lista de entidades permitidas para permisos con privilegios. (En la sección Conectividad , se proporciona un debate relacionado 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 de triestado les brinda a los usuarios tres opciones para permitir el acceso de la app 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
ACCESS_FINE_LOCATIONpermiso en segundo plano. - Los datos relacionados con la afinidad de contactos, administrados por el componente Proveedor de contactos, se acceden de manera diferente: las apps no pueden escribir ni leer los datos de afinidad de contactos en la base de datos. Esto afecta a las APIs relacionadas con el llamador.
Configuraciones optimizadas
Las configuraciones de permisos se optimizaron para Android 6.0 y versiones posteriores.
- Las
capacidades ambientales para los servicios iniciados por
initmantienen todos los aspectos de la configuración del servicio en un solo archivo.rc. Cuando configures capacidades para servicios que no se iniciaron coninit, configura las capacidades del sistema de archivos confs_config.cen su lugar. - Android 7.x y versiones anteriores extienden el mecanismo de IDs de Android (AIDs) con un archivo
android_filesystem_config.hespecífico del dispositivo para especificar las capacidades del sistema de archivos o los AIDs personalizados del fabricante del dispositivo. 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
initespecíficas del dispositivo (una sustitución de las capas HAL) a un daemon USB nativo. La interfaz HAL de USB se debe implementar en todos los dispositivos que se inicien en Android 8.0 y versiones posteriores.