Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Izin Hak Istimewa yang Diizinkan

Aplikasi istimewa adalah aplikasi sistem yang terletak di direktori priv-app pribadi di salah satu partisi citra sistem. Partisi yang digunakan untuk rilis Android adalah

  • Android 8.1 dan lebih rendah - /system
  • Android 9 dan lebih tinggi - /system, /product, /vendor

Sepanjang halaman ini, /etc/permissions/priv-app memutuskan untuk partition /etc/permissions/priv-app .

Secara historis, produsen perangkat memiliki sedikit kendali atas tanda tangan|izin istimewa mana yang dapat diberikan ke aplikasi istimewa. Mulai Android 8.0, produsen harus secara eksplisit memberikan izin istimewa dalam file XML konfigurasi sistem di direktori /etc/permissions . Mulai Android 9, pelaksana harus secara eksplisit memberikan atau menolak semua izin istimewa atau perangkat tidak dapat melakukan booting.

File privapp-permissions.xml hanya dapat memberikan atau menolak izin untuk aplikasi istimewa di partisi yang sama. Misalnya, jika aplikasi di partisi /product meminta izin istimewa, permintaan tersebut hanya dapat diberikan atau ditolak oleh file privapp-permissions.xml yang juga ada di /product .

Menambahkan daftar yang diizinkan

Daftar izin yang diizinkan untuk aplikasi dapat dicantumkan dalam satu XML atau dalam beberapa file XML yang terletak di direktori frameworks/base/etc/permissions sebagai berikut:

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

Tidak ada aturan ketat untuk mengatur konten. Pelaksana perangkat dapat menentukan struktur konten selama semua aplikasi dari /system/priv-app diizinkan. Misalnya, Google memiliki satu daftar yang diizinkan untuk semua aplikasi istimewa yang dikembangkan oleh Google, dan merekomendasikan organisasi berikut:

  • Izin untuk aplikasi yang sudah disertakan dalam pohon Android Open Source Project (AOSP) tercantum di /etc/permissions/privapp-permissions-platform.xml .
  • Izin untuk aplikasi Google tercantum di /etc/permissions/privapp-permissions-google.xml .
  • Untuk aplikasi lain, gunakan file berbentuk: /etc/permissions/privapp-permissions- DEVICE_NAME .xml .

Menyesuaikan daftar yang diizinkan

AOSP menyertakan implementasi daftar yang diizinkan yang dapat disesuaikan sesuai kebutuhan. Izin untuk aplikasi yang disertakan dalam AOSP sudah diizinkan di /etc/permissions/privapp-permissions-platform.xml .

Jika ada izin yang harus ditolak, edit XML untuk menggunakan tag "deny-permission" alih-alih tag "permission". Contoh:

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

Menemukan izin yang hilang

Untuk menemukan izin yang hilang saat membuka perangkat baru, aktifkan mode log transisi:

ro.control_privapp_permissions=log

Pelanggaran dilaporkan dalam file log, tetapi izin nonprivileged masih diberikan. Ini membuat perangkat dalam keadaan bekerja sambil memberikan daftar pelanggaran. Ini adalah format pesan kesalahan:

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

Semua pelanggaran harus diatasi dengan menambahkan izin yang hilang ke daftar yang diizinkan.

  • Di Android 8.0 dan yang lebih rendah, aplikasi yang terpengaruh tidak diberikan izin yang hilang meskipun berada di jalur priv-app pribadi.
  • Di Android 9 dan lebih tinggi, pelanggaran (izin istimewa ) berarti perangkat tidak bisa boot . Anda harus secara eksplisit mengizinkan atau menolak semua izin istimewa

Menegakkan daftar yang diizinkan

Setelah daftar yang diizinkan diterapkan, aktifkan penegakan waktu proses dengan menyetel properti build ro.control_privapp_permissions=enforce .