Zulassungsliste für privilegierte Berechtigungen

Privilegierte Apps sind System-Apps, die sich in einem priv-app-Verzeichnis auf einem System-Image-Partition. Für Android-Releases werden folgende Partitionen verwendet:

  • Android 9 und höher: /system, /product, /vendor
  • Android 8.1 und niedriger: /system
<ph type="x-smartling-placeholder">

Bisher hatten Gerätehersteller wenig Kontrolle darüber, Unterschrift | privilegierten Berechtigungen privilegierten Apps. Ab Android 8.0 können Hersteller explizit privilegierte Berechtigungen in den Systemkonfigurations-XML-Dateien in der /etc/permissions-Verzeichnis. Ab Android 9 können Implementierer alle privilegierten Berechtigungen explizit gewähren oder verweigern. Wenn keine privilegierten Berechtigungen gewährt werden, Das Gerät startet nicht.

In der Datei privapp-permissions.xml können nur Berechtigungen Berechtigungen für privilegierte Apps in derselben Partition Wenn beispielsweise eine App in der Partition /product privilegierte Berechtigungen anfordert, Die Anfrage kann nur von einem privapp-permissions.xml gewährt oder abgelehnt werden. Datei auf /product.

<ph type="x-smartling-placeholder">

Zulassungsliste hinzufügen

Berechtigungs-Zulassungslisten für Apps können in einer einzelnen XML-Datei oder in mehreren XML-Dateien, die sich im Verzeichnis frameworks/base/etc/permissions befinden:

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

Es gibt keine strenge Regel zur Strukturierung von Inhalten. Geräteimplementierungen können Inhaltsstruktur festlegen, solange alle Apps aus /system/priv-app auf der Zulassungsliste stehen. Beispielsweise hat Google eine einzige Zulassungsliste für alle privilegierten Apps entwickelt. Wir empfehlen die folgende Organisation:

  • Berechtigungen für Apps, die bereits in der Open-Source-Projekt von Android (AOSP) Baum sind in /etc/permissions/privapp-permissions-platform.xml aufgelistet.
  • Verwenden Sie für andere Apps Dateien des Formulars, /etc/permissions/privapp-permissions-DEVICE_NAME.xml

Zulassungsliste anpassen

AOSP umfasst eine Zulassungslistenimplementierung, die nach Bedarf angepasst werden kann.

Wenn eine Berechtigung verweigert werden muss, bearbeiten Sie die XML-Datei so, dass sie ein deny-permission-Tag verwendet. anstelle eines permission-Tags. Beispiel:

<!-- This XML file declares which signature|privileged permissions to grant 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 the 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>
    ...

Fehlende Berechtigungen suchen

Aktivieren Sie den Transitional-Log-Modus, um fehlende Berechtigungen beim Starten eines neuen Geräts zu finden:

ro.control_privapp_permissions=log

Verstöße werden in der Protokolldatei gemeldet. Nicht privilegierte Berechtigungen werden gewährt. Auf diese Weise wird sichergestellt, dass das Gerät in einem funktionsfähigen Zustand bleibt und weiterhin die Liste der Verstöße. Das Format der Fehlermeldungen sieht so aus:

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

Alle Verstöße müssen behoben werden, indem Sie die fehlenden Berechtigungen den entsprechenden Zulassungslisten hinzufügen. Beachten Sie Folgendes in:

  • Bei Android 9 und höher wird durch Verstöße gegen privilegierte Berechtigungen das Gerät daran gehindert, beginnt. Stattdessen müssen Sie alle privilegierten Berechtigungen explizit zulassen oder ablehnen.
  • Android 8.0 und niedriger werden den betroffenen Apps keine Berechtigungen gewährt, auch wenn im Pfad priv-app enthalten.

Zulassungsliste erzwingen

Aktivieren Sie nach dem Erstellen der Zulassungslisten die Laufzeiterzwingung, indem Sie den Build festlegen Property ro.control_privapp_permissions=enforce.

Eine Zulassungsliste ist nur für Berechtigungen erforderlich, die von Apps mit package="android" Das ro.control_privapp_permissions Property-Status muss den Abschnitt 9.1 Berechtigungen im Compatibility Definition Document (CDD).