Lista dozwolonych uprawnień z podwyższonymi uprawnieniami

Aplikacje z podwyższonymi uprawnieniami to aplikacje systemowe znajdujące się w katalogu priv-app w partycji obrazu systemu. Partycje używane w przypadku wersji Androida to:

  • Android 9 lub nowszy: /system, /product, /vendor
  • Android 8.1 lub starszy: /system
.

Dawniej producenci urządzeń nie mieli wpływu na to, podpis | użytkownik z podwyższonymi uprawnieniami aplikacji z podwyższonymi uprawnieniami. Począwszy od Androida 8.0, producenci mogą wprost przyznać z podwyższonymi uprawnieniami w plikach XML konfiguracji systemu w pliku Katalog /etc/permissions. Od Androida 9 narzędzia implementujące mogą wyraźnie przyznać lub odrzucić wszystkie uprawnienia z podwyższonymi uprawnieniami. Jeśli nie przyznano uprzywilejowanych uprawnień, urządzenie się nie uruchomi.

Plik privapp-permissions.xml może tylko przyznawać i odrzucać uprawnienia aplikacji z podwyższonymi uprawnieniami na tej samej partycji. Na przykład, jeśli aplikacja na partycji /product prosi o uprawnienia uprzywilejowane, tylko privapp-permissions.xml może zaakceptować lub odrzucić prośbę /product.

Dodaj listę dozwolonych

Listy dozwolonych uprawnień aplikacji mogą być wymienione w pojedynczym pliku XML lub w wielu Pliki XML w katalogu frameworks/base/etc/permissions:

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

Organizowanie treści nie obejmuje żadnej ścisłej reguły. Implementacje kodu na urządzeniu Określ strukturę treści, dopóki wszystkie aplikacje z /system/priv-app znajdują się na liście dozwolonych. Na przykład firma Google opracowała jedną listę dozwolonych dla wszystkich aplikacji z podwyższonymi uprawnieniami. Zalecamy tę organizację:

  • Uprawnienia aplikacji uwzględnionych już w tabeli Projekt Android Open Source Project (AOSP) drzewo znajduje się na liście /etc/permissions/privapp-permissions-platform.xml.
  • W przypadku innych aplikacji użyj plików formularza, /etc/permissions/privapp-permissions-DEVICE_NAME.xml

Dostosowywanie listy dozwolonych

AOSP zawiera wdrożenie z listy dozwolonych, które można dostosować w razie potrzeby.

Jeśli musisz odmówić przyznania uprawnień, zmodyfikuj plik XML, tak aby używał tagu deny-permission. zamiast tagu permission. Na przykład:

<!-- 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>
    ...

Znajdowanie brakujących uprawnień

Aby znaleźć brakujące uprawnienia podczas uruchamiania nowego urządzenia, włącz tryb dziennika przejściowy:

ro.control_privapp_permissions=log

Naruszenia są zgłaszane w pliku dziennika. Przyznano uprawnienia bez podwyższonych uprawnień. Dzięki temu urządzenie pozostanie w stanie działania, a jednocześnie będzie wyświetlana lista naruszenia zasad. Komunikat o błędzie ma taki format:

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

Wszystkie naruszenia należy rozwiązać, dodając brakujące uprawnienia do odpowiednich list dozwolonych. Pamiętaj, że w sekcji:

  • w Androidzie 9 i nowszych, naruszenia uprzywilejowanych uprawnień uniemożliwiają urządzeniu od uruchomienia. Zamiast tego musisz wyraźnie przyznać lub odrzucić wszystkie uprzywilejowane uprawnienia.
  • Android 8.0 i starsze wersje nie są przyznawane aplikacjom, których dotyczy problem, pomimo na ścieżce priv-app.

Wymuszanie listy dozwolonych

Po utworzeniu list dozwolonych włącz wymuszanie w czasie działania przez ustawienie kompilacji usłudze ro.control_privapp_permissions=enforce.

Lista dozwolonych jest wymagana tylko w przypadku uprawnień zadeklarowanych przez aplikacje – package="android" ro.control_privapp_permissions stan właściwości musi być zgodny z Sekcja 9.1 Uprawnienia w dokumencie Compatibility Definition Document (CDD).