گسترش

استقرار فایل سیاست مجوز، محل ذخیره‌سازی تعیین‌شده برای فایل سیاست مختص هر سرویس وسیله نقلیه تعریف‌شده توسط نرم‌افزار (SDV) را تعریف می‌کند. مکانیسم استقرار بین پلتفرم‌های SDV core و SDV IVI متفاوت است.

پلتفرم اصلی SDV

پلتفرم اصلی 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 در آن قرار دارد، قرار دهید.

پلتفرم SDV IVI

تفاوت‌های مشخصی بین پلتفرم SDV IVI و پیاده‌سازی‌های اصلی SDV وجود دارد. در پلتفرم SDV IVI:

  • هیچ رجیستری برای بسته‌های خدماتی وجود ندارد.
  • برنامه‌ها مبتنی بر جاوا هستند و به صورت APK ارائه می‌شوند.
  • مامورها توی APEX ها نیستن.

به دلیل این عوامل، استقرار در پلتفرم SDV متفاوت است.

سیاست مجوزدهی برای سرویس SDV با شناسه {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} روی SDV IVI به صورت زیر مستقر کنید:

  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 core و هم در 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 به دو دلیل معرفی شده است:

  • راه‌اندازی ساده : برای برخی از تولیدکنندگان اصلی تجهیزات (OEM)، ممکن است کافی باشد که default.textproto برای همه ماشین‌های مجازی SDV تنظیم کنید و فقط یک <vm-name>.textproto ویژه برای ماشین مجازی IVI ارائه دهید.
  • قابلیت به‌روزرسانی : اگر پس از به‌روزرسانی خودرو، یک ماشین مجازی جدید ظاهر شود، یک 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}