الأدلة والقواعد وسياسات الأمان

توضِّح هذه الصفحة تنسيق الدليل للأجهزة التي تعمل بالإصدار 8.0 من Android والإصدارات الأحدث، وقواعد VNDK، وسياسات الأمان المرتبطة بها.

تنسيق الدليل

يتألف تنسيق الدليل المتدهّر من الدلائل التالية:

  • يحتوي /system/lib[64] على جميع المكتبات المشتركة للإطار الأساسي، بما في ذلك LL-NDK وVNDK والمكتبات المخصّصة للإطار الأساسي فقط (بما في ذلك LL-NDK-Private وبعض المكتبات التي تحمل الأسماء نفسها كتلك الواردة في VNDK-SP).
  • يحتوي /system/lib[64]/vndk-sp على مكتبات VNDK-SP لبرامج HAL التي تعمل في العملية نفسها.
  • /vendor/lib[64] يحتوي على مكتبات VNDK التي أضاف إليها المورّد (إما مكتبات DXUA أو DXUX VNDK) وعمليات تنفيذ HAL في العملية نفسها ومكتبات المشترَكة الأخرى الخاصة بالمورّد.
  • قد يحتوي /vendor/lib[64]/vndk-sp على مكتبات VNDK-SP التي أضاف إليها العميل.

تحمِّل وحدات المورّدين مكتبات VNDK من /system/lib[64].

قواعد VNDK

يوفّر هذا القسم قائمة شاملة بقواعد VNDK:

  • يجب ألا تحمِّل عمليات إطار العمل المكتبات المشتركة غير المتوافقة مع SP-HAL من أقسام المورِّد (يتم فرض ذلك بشكل صارم بدءًا من Android 8.1).
  • يجب ألا تحمِّل عمليات المورّدين مكتبات غير LL-NDK ومكتبات غير VNDK-SP و مكتبات غير VNDK من قسم النظام. (لا يتم فرض هذه القاعدة بشكل صارم في Android O، ولكن سيتم فرضها في إصدار مستقبلي).
  • يجب أن تكون مكتبات VNDK المثبَّتة مجموعة فرعية من مكتبات VNDK المؤهَّلة التي تحدّدها Google.
  • يجب أن تقتصر المهام التابعة الخارجية لكل من SP-HAL وSP-HAL-Dep على مكتبات LL-NDK أو مكتبات VNDK-SP التي تحدّدها Google.
    • يجب أن تقتصر التبعيات في مكتبة SP-HAL المشتركة على مكتبات LL-NDK ومكتبات VNDK-SP التي تحدّدها Google ومكتبات SP-HAL الأخرى و/أو مكتبات مشترَكة أخرى من المورّدين يمكن تصنيفها على أنّها مكتبات SP-HAL-Dep.
    • لا يمكن تصنيف مكتبة مشترَكة لجهة خارجية على أنّها مكتبة SP-HAL-Dep إلا إذا كانت ليست مكتبة AOSP وكانت تبعياتها مقتصرة على مكتبات LL-NDK و/أو مكتبات VNDK-SP التي تحدّدها Google و/أو مكتبات SP-HAL و/أو مكتبات SP-HAL-Dep الأخرى.
  • يجب أن تكون حزمة VNDK-SP مكتفية ذاتيًا. تحظى libRS_internal.so بمعالجة خاصة في Android 8.0، ولكن سيتم إعادة النظر فيها في إصدار مستقبلي.
  • عدم التواصل بين إطار العمل والمورّد من خلال واجهات غير HIDL، بما في ذلك (على سبيل المثال لا الحصر) الربط والمنافذ والذاكرة المشتركة والملفات وما إلى ذلك
  • يجب أن يكون حجم قسم النظام كبيرًا بما يكفي لتضمين نسختَين من جميع مكتبات VNDK المؤهَّلة ونسخة من مكتبات المشترَكة غير المؤهَّلة للإطار الأساسي.

sepolicy

تتوافق عمليات إطار العمل الموضّحة في هذا القسم مع coredomain في sepolicies، في حين تتوافق عمليات المورّدين مع non-coredomain. على سبيل المثال، لا يمكن الوصول إلى /dev/binder إلا في coredomain، ولا يمكن الوصول إلى /dev/vndbinder إلا في غير coredomain.

تفرض السياسات المشابهة قيودًا على الوصول إلى المكتبات المشتركة في أقسام النظام والمورّد. يعرض الجدول التالي حقوق الوصول إلى مكتبات مشترَكة من فئات مختلفة:

الفئة قسم يمكن الوصول إليها من
coredomain
يمكن الوصول إليها من
non-coredomain
LL-NDK النظام Y Y
LL-NDK-Private النظام Y Y
VNDK-SP/VNDK-SP-Private النظام Y Y
VNDK-SP-Ext المورّد Y Y
الدونغ الفيتنامي (VNDK) النظام Y Y
VNDK-Ext المورّد N Y
FWK-ONLY النظام Y N
FWK-ONLY-RS النظام Y N
SP-HAL المورّد Y Y
SP-HAL-Dep المورّد Y Y
دونغ فيتنامي فقط المورّد N Y

يجب أن يكون بالإمكان الوصول إلى LL-NDK-Private وVNDK-SP-Private من كلا النطاقَين لأنّ التطبيقات غير المتوافقة مع coredomain ستصل إليها بشكل غير مباشر. وبالمثل، يجب أن يكون بإمكانك الوصول إلى SP-HAL-Dep من coredomain لأنّ SP-HAL يعتمد عليه.

تصنيف same_process_hal_file

تتوفّر المكتبات التالية في قسم المورّد. اجعل هذه المكتبات متاحة من كلا يلي: coredomain وغيرcoredomain.

  • ‫VNDK-SP-Ext في /vendor/lib[64]/vndk-sp
  • ‫SP-HAL في /vendor/lib[64] أو /vendor/lib[64]/hw
  • SP-HAL-Dep في /vendor/lib[64] أو /vendor/lib[64]/hw

عليك تصنيف هذه الملفات صراحةً على أنّها same_process_hal_file، لأنّه لا يمكن لـ coredomain الوصول تلقائيًا إلى أي ملف في قسم vendor. أضِف أسطرًا مشابهة لتلك الواردة في المثال التالي إلى ملف file_contexts الخاص بالمورّد.

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0