Google se compromete a avanzar en la equidad racial para las comunidades negras. Ver cómo.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Lista blanca Permiso privilegiada

Aplicaciones privilegiadas son aplicaciones del sistema que se encuentran en un priv-app del directorio en una de las imágenes parciales del sistema. Las particiones usadas para las versiones de Android están

  • Android 8.1 y menor - /system
  • Android 9 o superior - Los /system, /product, /vendor

A través de esta página, /etc/permissions/priv-app resuelve a partition /etc/permissions/priv-app .

Históricamente, los fabricantes de dispositivos tenían poco control sobre lo que la firma | permisos privilegiados podían concederse a aplicaciones privilegiadas. A partir de Android 8.0, los fabricantes deben conceder explícitamente permisos privilegiados en los archivos XML de configuración del sistema en el /etc/permissions directorio. A partir del 9 de Android, los ejecutores deben conceder o denegar explícitamente todos los permisos privilegiados o el dispositivo no arranca.

El privapp-permissions.xml archivo sólo puede conceder o denegar permisos para aplicaciones privilegiadas en la misma partición. Por ejemplo, si una aplicación en el /vendor partición solicita permisos privilegiados, la solicitud sólo puede ser concedido o denegado por un privapp-permissions.xml archivo que también está en /vendor .

Adición de listas blancas

Listas blancas de permisos para aplicaciones se pueden enumerar en una sola XML o en varios archivos XML ubicados en el frameworks/base/etc/permissions directorio de la siguiente manera:

  • /etc/permissions/privapp-permissions- OEM_NAME .xml
  • /etc/permissions/privapp-permissions- DEVICE_NAME .xml

No hay una regla estricta para organizar el contenido. Ejecutores de dispositivos pueden determinar la estructura del contenido, siempre que todas las aplicaciones de /system/priv-app están en la lista blanca. Por ejemplo, Google tiene una única lista blanca para todas las aplicaciones privilegiadas desarrollados por Google, y recomienda la siguiente organización:

  • Los permisos para aplicaciones que ya están incluidos en el árbol de Android Open Source Project (AOSP) se enumeran en /etc/permissions/privapp-permissions-platform.xml .
  • Los permisos para aplicaciones de Google se enumeran en /etc/permissions/privapp-permissions-google.xml .
  • Para otras aplicaciones, archivos de uso de la forma: /etc/permissions/privapp-permissions- DEVICE_NAME .xml .

Generación de listas blancas

Para generar automáticamente una lista blanca para todas las aplicaciones disponibles en la imagen del sistema, utilice la herramienta de línea de comandos PSE al development/tools/privapp_permissions/privapp_permissions.py . Para generar una versión inicial de específica del dispositivo privapp-permissions.xml :

  1. Construir una imagen del sistema:
        . build/envsetup.sh
        lunch PRODUCT_NAME
        make -j 
  2. Ejecutar el privapp_permissions.py script para generar un privapp-permissions.xml archivo que muestra todas firma | permisos privilegiados requiere para ser la lista blanca:
    development/tools/privapp_permissions/privapp_permissions.py
    Este contenido XML impresiones herramienta que se puede utilizar ya sea como un solo archivo, o dividido en varios archivos en el /etc/permissions ruta del directorio. Si el dispositivo ya incluye listas blancas en los /etc/permissions directorios, la herramienta sólo imprime sólo las diferencias (como las firmas faltantes | permisos privilegiados que hay que añadir a la lista blanca). Esto también es útil para fines de auditoría: Cuando se añade una nueva versión de la aplicación, la herramienta detecta los permisos adicionales necesarios.
  3. Copiar los archivos generados con la apropiada /etc/permissions de directorio, donde el sistema lee los archivos durante el arranque.

Personalización de listas blancas

AOSP incluye una aplicación de lista blanca que se puede personalizar según sea necesario. Los permisos para aplicaciones incluidas en AOSP ya están en la lista blanca en /etc/permissions/privapp-permissions-platform.xml .

Por defecto, el privapp_permissions.py script genera de salida que automáticamente concede ningún tipo de permiso solicitado por una aplicación privilegiada. Si hay permisos que se debe denegar, editar el XML para utilizar una etiqueta de "negar el permiso" en lugar de una etiqueta de "permiso". Ejemplo:

<!--
    This XML file declares which signature|privileged permissions should be
    granted to privileged apps that come with the platform
    -->
    <permissions>
<privapp-permissions package="com.android.backupconfirm">
    <permission name="android.permission.BACKUP"/>
    <permission name="android.permission.CRYPT_KEEPER"/>
</privapp-permissions>
<privapp-permissions package="com.android.cellbroadcastreceiver">
    <!-- don't allow application to interact across users -->
    <deny-permission name="android.permission.INTERACT_ACROSS_USERS"/>
    <permission name="android.permission.MANAGE_USERS"/>
    <permission name="android.permission.MODIFY_PHONE_STATE"/>
    <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
    <permission name="android.permission.RECEIVE_EMERGENCY_BROADCAST"/>
</privapp-permissions>
    ...

Encontrar los permisos que faltan

Para encontrar permisisons Al plantear un nuevo dispositivo que falta, habilitar el modo de registro de transición:

ro.control_privapp_permissions=log

Violaciónes se presentan en el archivo de registro, pero no privilegiados permisos se conceden todavía. Esto mantiene el dispositivo en un estado de trabajo al tiempo que proporciona la lista de violaciónes. Este es el formato de mensaje de error:

PackageManager: Privileged permission {PERMISSION_NAME} for package {PACKAGE_NAME} - not in privapp-permissions whitelist

Todas las violaciónes deben abordarse mediante la adición de los permisos que faltan para las listas blancas apropiadas.

  • En Android 8.0 y más bajo, las aplicaciones afectadas no se conceden los permisos que faltan, incluso si están en el priv-app camino.
  • En Android 9 y superiores, violaciónes (de permisos privilegiados) significa que el dispositivo no arranca. Debe explícitamente permitir o denegar todos los permisos privilegiados

La aplicación de listas blancas

Después de listas blancas están en su lugar, permitir la aplicación de tiempo de ejecución mediante el establecimiento de las característica de la estructura ro.control_privapp_permissions=enforce .