القائمة المسموح بها للأذونات المميّزة

التطبيقات المميّزة هي تطبيقات نظام تتوفّر في دليل priv-app على قسم صورة النظام. في ما يلي الأقسام المستخدمة لإصدارات Android:

  • الإصدار 9 من نظام Android والإصدارات الأحدث: /system, /product, /vendor
  • الإصدار 8.1 من نظام التشغيل Android والإصدارات الأقدم: /system

سابقًا، لم يكن لدى الشركات المصنعة للأجهزة سوى القليل من التحكم في التوقيع | الأذونات المميزة والامتيازات يمكن منحها إلى التطبيقات المتميزة. بدءًا من الإصدار Android 8.0، يمكن للشركات المصنّعة منح الأذونات المميزة في ملفات XML الخاصة بتهيئة النظام في دليل /etc/permissions. اعتبارًا من الإصدار Android 9، يمكن للمستخدمين الذين ينفذون التطبيق منح أو رفض جميع الأذونات المميزة بشكل صريح. إذا لم يتم منح الأذونات المميزة، لا يتم تشغيل الجهاز.

ملف privapp-permissions.xml يمكنه فقط منح أو رفض أذونات التطبيقات المميزة على القسم نفسه. على سبيل المثال، إذا يطلب تطبيق في قسم /product أذونات مميزة، لا يمكن منح الطلب أو رفضه إلا بواسطة privapp-permissions.xml. في /product.

إضافة قائمة مسموح بها

يمكن إدراج قوائم الأذونات المسموح بها للتطبيقات في ملف XML واحد أو في عدة ملفات ملفات XML المتوفرة في الدليل frameworks/base/etc/permissions:

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

لا تنطبق أي قاعدة صارمة على كيفية تنظيم المحتوى. يمكن لأدوات تنفيذ الأجهزة تحديد بنية المحتوى ما دامت جميع التطبيقات من /system/priv-app مدرجين في القائمة المسموح بها. على سبيل المثال، طوّرت Google قائمة مسموح بها واحدة لجميع التطبيقات الحاصلة على إذن مميّز. نقترح عليك اختيار المؤسّسة التالية:

  • أذونات التطبيقات المضمّنة في ملف المشروع المفتوح المصدر لنظام Android (AOSP) تم سرد الشجرة في /etc/permissions/privapp-permissions-platform.xml.
  • بالنسبة إلى التطبيقات الأخرى، يمكن استخدام ملفات النموذج /etc/permissions/privapp-permissions-DEVICE_NAME.xml

تخصيص قائمة مسموح بها

يتضمن AOSP تنفيذ قائمة مسموح بها يمكن تخصيصها حسب الحاجة.

إذا كان يجب رفض الإذن، يمكنك تعديل ملف XML لاستخدام علامة deny-permission. بدلاً من استخدام علامة permission مثلاً:

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

العثور على الأذونات الناقصة

للعثور على الأذونات الناقصة عند بدء جهاز جديد، فعِّل وضع السجلّ الانتقالي:

ro.control_privapp_permissions=log

يتم الإبلاغ عن الانتهاكات في ملف السجلّ. ويتم منح الأذونات غير المميزة. ويضمن إجراء ذلك بقاء الجهاز في حالة عمل مع الاستمرار في تقديم قائمة الانتهاكات. يكون تنسيق رسالة الخطأ كما يلي:

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

يجب معالجة جميع الانتهاكات من خلال إضافة الأذونات الناقصة إلى القوائم المسموح بها المناسبة. لاحظ أنه في:

  • الإصدار 9 من نظام Android والإصدارات الأحدث، تمنع انتهاكات الأذونات المميزة الجهاز من البدء. وبدلاً من ذلك، عليك السماح بجميع الأذونات المميّزة أو رفضها بشكل صريح.
  • الإصدار 8.0 من نظام التشغيل Android والإصدارات الأقدم، لا يتم منح التطبيقات المتأثرة أذونات مفقودة على الرغم من في المسار priv-app.

فرض قائمة مسموح بها

بعد إنشاء القوائم المسموح بها، يمكنك تفعيل فرض بيئة التشغيل من خلال إعداد الإصدار. الموقع ro.control_privapp_permissions=enforce.

لا يكون الإدراج في القائمة المسموح بها مطلوبًا إلا للأذونات المُعلَن عنها من خلال التطبيقات التي تحتوي على package="android" ro.control_privapp_permissions سمة الملكية القسم 9.1: الأذونات في مستند تعريف التوافق (CDD).