النشر

يحدّد نشر ملف سياسة التفويض موقع التخزين المحدّد لملف السياسة الخاص بكل خدمة من خدمات المركبات المحدّدة بالبرامج. ويختلف أسلوب النشر بين منصات SDV الأساسية ومنصات SDV IVI.

المنصة الأساسية للمركبات المزوّدة ببرامج

تستخدم منصة SDV الأساسية ملفات APEX لتعبئة حِزم الخدمات وإعداد حِزم الخدمات. يستردّ مكوّن سجلّ حِزم الخدمات سياسة التفويض لحِزم خدمات SDV المخزّنة في حِزم APEX.

‫APEX هي حزمة موقَّعة تحمل اسمًا فريدًا يُعرف باسم اسم الحزمة. يمكن أن تحتوي كل حزمة APEX على حِزم خدمات متعددة. يحتوي كل حِزمة خدمة على بياناتها الوصفية المحدّدة في ملف البيان في حِزمة APEX.

تحتوي البيانات الوصفية لحِزمة الخدمة على مسار إلى ملف سياسة التفويض، والذي يجب أن يكون ضِمن حزمة APEX نفسها.

يجب نشر سياسة التفويض لخدمة SDV مع الهوية {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} على SDV على النحو التالي:

  1. ضَع ملف سياسة التفويض في حزمة package.name APEX.
  2. عدِّل الإدخال ServiceBundle في ملف بيان حِزم الخدمات في package.name APEX من خلال إضافة مسار سياسة التفويض المناسب إلى الحقل authorization_policy_path.
  3. نشر package.name APEX في الجهاز الافتراضي sdv-vm-name

مثال

(apex_root) sdv_service_bundles_manifest.textproto

sdv_service_bundle_metadata {
  name: "SampleRpcServer"
  version_number: 0
  version_name: "0.1 Alpha"
  native_library_path: "lib64/libsdv_sample_rpc.so"
  # Path to the authorization policy file.
  # Warning: Must be a relative path to the APEX root directory.
  authorization_policy_path: "etc/authz/sample_rpc/permissions.textproto"
}

ضَع ملف سياسة التفويض في etc/authz/sample_rpc/permissions.textproto ضِمن حزمة APEX نفسها التي يقع فيها sdv_service_bundles_manifest.textproto.

منصة المعلومات والترفيه داخل المركبة (IVI) في المركبات المحدّدة بالبرامج

هناك بعض الاختلافات بين منصة SDV IVI وعمليات التنفيذ الأساسية لـ SDV. في منصة SDV IVI:

  • لا يتوفّر سجلّ لحِزم الخدمات.
  • تستند التطبيقات إلى Java ويتم توفيرها في حِزم APK.
  • لا تتضمّن حِزم APEX وكلاء.

وبسبب هذه العوامل، يختلف النشر على منصة SDV.

يجب نشر سياسة التفويض لخدمة SDV مع الهوية {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} على نظام المعلومات والترفيه داخل المركبة (IVI) في SDV على النحو التالي:

  1. حدِّد مسار سياسة التفويض وفقًا للنمط {policy-dir}/{package.name}/{ServiceBundle}.textproto.
    • حيث policy-dir هي إحدى القيم التالية:
      • /product/etc/sdv_authz_policies
      • /system/etc/sdv_authz_policies
      • /system_ext/etc/sdv_authz_policies
      • /vendor/etc/sdv_authz_policies
    • على سبيل المثال، /vendor/etc/sdv_authz_policies/com.sdv.pkg/WindowManager.textproto هو مسار صالح لسياسة التفويض.
  2. ضَع سياسة التفويض في مسار سياسة التفويض على الجهاز الافتراضي ivi-vm-name.

موظّفو الدعم والمساعدة في الاختبار

تتّبع وكلاء SDV سياسة نشر الأذونات نفسها على كلّ من SDV الأساسية وSDV IVI. إذا لم يكن لدى أحد العناصر APEX، يجب أن تكون سياسة التفويض المقابلة له مضمّنة في حزمة APEX مصاحبة مخصّصة للإعدادات فقط.

مثال

(apex_root) sdv_service_bundles_manifest.textproto

sdv_service_bundle_metadata {
   # Should match the bundle name in the FQIN registered by the SOME/IP broker agent
   name: "SomeIpBroker"
   # Version number of the config APEX
   version_number: 1
   # Version name of the config APEX
   version_name: "1"

   # Reference the manifest itself to mark the metadata as a config-only
   # declaration.
   native_library_path: "etc/sdv_service_bundles_manifest.textproto"

   # Path to the authorization policy file for SOME/IP broker.
   authorization_policy_path: "etc/config/access_control/someip_authz_policy.textproto"
}

سياسة التفويض على مستوى الجهاز الظاهري

ضَع سياسات مستوى الجهاز الافتراضي في APEX مع اسم الحزمة com.oem.sdv.authz. استخدِم ملفًا مخصّصًا بالاسم <vm_name>.textproto المقابل.

إذا لم يكن ملف <vm_name>.textproto المقابل متوفّرًا، يبحث إطار عمل التفويض أيضًا عن ملف .default.textproto في حزمة APEX نفسها.

الأسباب

يتم تقديم .default.textproto لسببَين:

  • إعداد مبسط: قد يكون من الكافي لبعض المصنّعين الأصليين للأجهزة ضبط default.textproto لجميع الأجهزة الافتراضية التي تعمل بنظام التشغيل Android Virtualization، وتوفير <vm-name>.textproto خاص بالجهاز الافتراضي لنظام المعلومات والترفيه داخل المركبة فقط.
  • إمكانية التحديث: إذا ظهرت آلة افتراضية جديدة بعد تحديث السيارة، قد يكون توفير default.textproto معقولاً كافيًا لتجنُّب تحديث جميع الآلات الافتراضية.

منطق الحل

عند التحقّق من أذونات موضوع من جهاز افتراضي باسم <vm-name>، يبحث إطار عمل التفويض عن السياسات بالترتيب التالي:

  1. <vm-name>.textproto: إذا كان هذا العنصر متوفّرًا، عليك إجراء عملية التحقّق استنادًا إليه. إذا لم يكن متوفّرًا، سيتم استخدام الملف التلقائي.
  2. .default.textproto: إذا كان هذا العنصر متوفّرًا، عليك إجراء عملية التحقّق استنادًا إليه. إذا لم يكن الملف متاحًا، سيتم رفض منح إذن الوصول.

تحديد وحدة Soong مع أذونات على مستوى الجهاز الظاهري

يجب أن تكون الوحدة النمطية عبارة عن حزمة APEX تحمل اسم الحزمة com.oem.sdv.authz.

أضِف القيمة إلى ملف .mk:

SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}