Los permisos de Android proporcionan controles que aumentan la conciencia del usuario y limitan el acceso de una aplicación a datos confidenciales. La configuración de permisos en Android 8.0 y versiones anteriores incluye listas de permitidos, sin las cuales las aplicaciones privilegiadas se deshabilitan, incluso si se encuentran en la ruta priv-app
. En Android 9 y versiones posteriores, un dispositivo que intenta utilizar aplicaciones que no están correctamente incluidas en la lista de permitidos no arranca.
Android 10 introdujo el concepto de rol , un nombre único dentro del sistema asociado a ciertos requisitos y privilegios. Asigne roles a aplicaciones para otorgarles permisos para un propósito específico y configure roles predeterminados utilizando los recursos de configuración de la plataforma.
Mejoran las protecciones aumentadas contra aplicaciones potencialmente dañinas (PHA)
- Transparencia sobre el comportamiento de aplicaciones potencialmente dañinas.
- Control del usuario sobre el comportamiento de la aplicación.
- A discreción de los desarrolladores de aplicaciones al utilizar datos privados, protegidos por permisos.
Instalación y permiso del paquete.
En Android 9 y versiones anteriores, las funcionalidades de instalación de paquetes y control de permisos estaban contenidas en el paquete PackageInstaller
( //packages/apps/PackageInstaller
). En Android 10 y versiones posteriores, la funcionalidad de control de permisos reside en un paquete separado, PermissionController
( //packages/apps/PermissionController
). La Figura 1 ilustra dónde residen los dos paquetes en Android 10.
Listas permitidas y acceso
En Android 6.0 y superiores, las aplicaciones solicitan acceso a permisos peligrosos en tiempo de ejecución . Android 10 agrega permisos de tiempo de ejecución de reconocimiento de actividad (AR), que solicitan al usuario que modifique o permita permisos peligrosos.
Android 8.0 requería que permitieras explícitamente aplicaciones privilegiadas en los archivos XML de configuración del sistema en el directorio /etc/permissions
. En Android 9 y versiones posteriores, los permisos privilegiados deben estar incluidos en la lista de permitidos o el dispositivo no podrá iniciarse.
Para limitar la visibilidad de la API interna y evitar que las aplicaciones accedan accidentalmente a las bibliotecas de la plataforma, Android 7.0 introdujo espacios de nombres para bibliotecas nativas . Esto separa las bibliotecas del sistema de las bibliotecas de aplicaciones, y los fabricantes de dispositivos pueden agregar sus propias bibliotecas nativas.
A partir de Android 10, las aplicaciones deben tener permisos de firma y consentimiento del usuario para acceder al contenido de la pantalla de un dispositivo . Las aplicaciones privilegiadas que dependen de la funcionalidad de captura silenciosa, como tomar una captura de pantalla, deberían usar la clase MediaProjection en su lugar.
Transparencia y privacidad
En Android 6.0 y versiones posteriores, la dirección MAC de fábrica de un dispositivo está protegida del acceso por parte de proveedores de servicios Wi-Fi y analizadores de paquetes. Las restricciones adicionales a partir de Android 10 limitan el acceso de las aplicaciones a los identificadores de dispositivo (ID) inmutables a menos que estén incluidas en la lista de permitidos para permisos privilegiados . (La sección Conectividad proporciona una discusión relacionada sobre Identificadores de dispositivos , ya que esto afecta a los operadores).
En Android 9 y versiones anteriores, los usuarios toman decisiones persistentes al otorgar acceso a la ubicación de las aplicaciones. A partir de Android 10, una función de permisos de ubicación de tres estados brinda a los usuarios tres opciones para permitir el acceso de la aplicación a la ubicación de un dispositivo. Estos requisitos de permiso se aplican a las aplicaciones en Android 10 independientemente del SDK de destino.
Configure permisos para otras funciones de transparencia y privacidad a partir de Android 10
- El recordatorio de ubicación de acceso en segundo plano muestra a los usuarios cuando una aplicación accede a la ubicación de su dispositivo usando 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 aplicaciones no pueden escribir ni leer los datos de afinidades de contacto en la base de datos. Esto afecta las API relacionadas con las personas que llaman .
Configuraciones optimizadas
Las configuraciones de permisos se han optimizado para Android 6.0 y versiones posteriores.
- Las capacidades ambientales para los servicios iniciados por
init
mantienen todos los aspectos de la configuración del servicio en un único archivo.rc
. Al configurar capacidades para servicios no iniciados porinit
, configure las capacidades del sistema de archivos usandofs_config.c
en su lugar. - Android 7.x y versiones anteriores amplían el mecanismo de ID de Android (AID) mediante el uso de un archivo
android_filesystem_config.h
específico del dispositivo para especificar las capacidades del sistema de archivos y/o los AID personalizados del fabricante del dispositivo. Android 8.0 y versiones posteriores admiten un nuevo método para ampliar las capacidades del sistema de archivos . - En Android 8.0, el manejo de comandos USB pasó de los scripts
init
específicos del dispositivo (una sustitución de las capas HAL) a un demonio USB nativo. La interfaz USB HAL debe implementarse en todos los dispositivos que se inicien con Android 8.0 y superior.