Permisos de Android

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.

Separación de las funcionalidades de instalación de paquetes y control de permisos para las aplicaciones del sistema y las utilizadas por las aplicaciones instaladas por el usuario.
Figura 1. Funciones de instalación de paquetes y control de permisos 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

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 por init , configure las capacidades del sistema de archivos usando fs_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.