استقرار فایل سیاست مجوز، محل ذخیرهسازی تعیینشده برای فایل سیاست مختص هر سرویس وسیله نقلیه تعریفشده توسط نرمافزار (SDV) را تعریف میکند. مکانیسم استقرار بین پلتفرمهای SDV core و SDV IVI متفاوت است.
پلتفرم اصلی SDV
پلتفرم اصلی SDV از فایلهای APEX برای بستهبندی بستههای سرویس و پیکربندی بستههای سرویس استفاده میکند. مؤلفه رجیستری بستههای سرویس، سیاست مجوزدهی برای بستههای سرویس SDV ذخیره شده در APEXها را بازیابی میکند.
APEX یک بسته امضا شده با نامی منحصر به فرد به نام نام بسته است. هر APEX میتواند شامل چندین بسته سرویس باشد. هر بسته سرویس، فرادادههای خود را دارد که در فایل مانیفست APEX اعلام شده است.
متادیتای بستهی سرویس، مسیری به فایل سیاست مجوزدهی دارد که باید در همان APEX قرار داشته باشد.
سیاست مجوزدهی برای سرویس SDV با شناسه {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} روی SDV به صورت زیر مستقر کنید:
- فایل سیاست مجوز را در
package.nameAPEX قرار دهید. - ورودی
ServiceBundleرا در فایل مانیفست بستههای سرویس درpackage.nameAPEX با اضافه کردن مسیر سیاست مجوز مربوطه در فیلدauthorization_policy_pathبهروزرسانی کنید. -
package.nameAPEX را در ماشین مجازی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 به صورت زیر مستقر کنید:
- مسیر سیاست مجوزدهی را طبق الگوی
{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 یک مسیر معتبر برای سیاست مجوزدهی است.
- که در آن
- سیاست مجوز را در مسیر سیاست مجوز در ماشین مجازی
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> ، چارچوب مجوز به ترتیب زیر به دنبال خطمشیها میگردد:
-
<vm-name>.textproto: اگر وجود داشته باشد، بررسی را بر اساس آن انجام میدهد. اگر وجود نداشته باشد، به فایل پیشفرض برمیگردد. -
.default.textproto: اگر وجود داشته باشد، بررسی را بر اساس آن انجام میدهد. اگر وجود نداشته باشد، دسترسی را رد میکند.
ماژول Soong را با مجوزهای سطح ماشین مجازی تعریف کنید
ماژول باید یک APEX با نام بسته com.oem.sdv.authz باشد.
مقدار را به فایل .mk اضافه کنید:
SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}