Permisos de Android

Los permisos de Android proporcionan controles que aumentan la conciencia 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 creación de listas de entidades permitidas, sin las cuales se inhabilitan las apps con privilegios, incluso si se encuentran 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 en la lista de entidades permitidas de forma adecuada.

Android 10 introdujo el concepto de rol, un nombre único dentro del sistema asociado con ciertos requisitos y privilegios. Asigna roles a las apps para otorgarles permisos con un propósito específico y configura roles predeterminados con recursos de configuración de la plataforma.

Las protecciones mejoradas contra las aplicaciones potencialmente dañinas (APD) mejoran lo siguiente:

  • Transparencia sobre el comportamiento de las apps potencialmente dañinas
  • El usuario controla el comportamiento de la app.
  • Discreción de los desarrolladores de apps cuando usan datos privados, protegidos por permisos

Instalación y permisos de paquetes

En Android 9 y versiones anteriores, las funciones de control de permisos y de instalación de paquetes se incluían en el paquete PackageInstaller (//packages/apps/PackageInstaller). En Android 10 y versiones posteriores, la función de control de permisos reside en un paquete independiente, PermissionController (//packages/apps/PermissionController). En la Figura 1, se ilustra dónde residen los dos paquetes en Android 10.

Separación de las funcionalidades de control de permisos y de instalación de paquetes para las apps del sistema y las apps instaladas por el usuario

Figura 1: Funcionalidades 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 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 se incluyeran 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 privilegiados deben estar en la lista de entidades permitidas, o el dispositivo no podrá arrancar.

Para limitar la visibilidad de las APIs internas 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 la app, 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 funcionalidad de captura silenciosa, como la toma de capturas de pantalla, deben usar la clase MediaProjection en su lugar.

Android 15 requiere que permitas explícitamente los permisos de firma de la plataforma que solicitan las apps que no son del sistema o que solicitan las actualizaciones a 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, la dirección MAC de fábrica del dispositivo está protegida contra el acceso de los proveedores de servicios de Wi-Fi y los analizadores de paquetes. Las restricciones adicionales de Android 10 limitan el acceso de las apps a los identificadores (IDs) inmutables del dispositivo, a menos que estén en la lista de entidades permitidas para permisos con privilegios. (En la sección Conectividad, se proporciona un análisis 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, la 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

Configuraciones optimizadas

Se optimizaron las configuraciones de permisos para Android 6.0 y versiones posteriores.

  • Las capacidades ambientales para los servicios que inicia init mantienen todos los aspectos de la configuración del servicio en un solo archivo .rc. Cuando configures capacidades para servicios que no se inician con init, usa fs_config.c para configurar las capacidades del sistema de archivos.
  • Android 7.x y versiones anteriores extienden el mecanismo de IDs de Android (AIDs) con un archivo android_filesystem_config.h especí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 init específicas del dispositivo (un reemplazo para las capas HAL) a un daemon USB nativo. La interfaz del HAL de USB se debe implementar en todos los dispositivos que se lancen con Android 8.0 y versiones posteriores.