การติดตั้งไฟล์นโยบายการให้สิทธิ์จะกำหนดตำแหน่งที่เก็บข้อมูลที่กำหนด สำหรับไฟล์นโยบายที่เฉพาะเจาะจงกับบริการยานพาหนะที่กำหนดโดยซอฟต์แวร์ (SDV) แต่ละรายการ กลไกการติดตั้งใช้งานจะแตกต่างกันระหว่างแพลตฟอร์มหลักของ SDV กับแพลตฟอร์ม IVI ของ SDV
แพลตฟอร์มหลักของ SDV
แพลตฟอร์มหลักของ SDV ใช้ไฟล์ APEX สำหรับการจัดแพ็กเกจชุดบริการและ การกำหนดค่าชุดบริการ คอมโพเนนต์รีจิสทรีของแพ็กเกจบริการจะเรียกนโยบายการให้สิทธิ์สำหรับแพ็กเกจบริการ SDV ที่จัดเก็บไว้ใน APEX
APEX เป็นแพ็กเกจที่ลงนามแล้วซึ่งมีชื่อที่ไม่ซ้ำกันเรียกว่าชื่อแพ็กเกจ APEX แต่ละรายการ มีชุดบริการได้หลายชุด แต่ละแพ็กเกจบริการมีข้อมูลเมตา ที่ประกาศไว้ในไฟล์ Manifest ใน APEX
ข้อมูลเมตาของแพ็กเกจบริการมีเส้นทางไปยังไฟล์นโยบายการให้สิทธิ์ ซึ่ง ควรอยู่ใน APEX เดียวกัน
นำนโยบายการให้สิทธิ์สำหรับบริการ SDV ที่มีข้อมูลระบุตัวตน
{sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} ใน SDV ไปใช้ดังนี้
- วางไฟล์นโยบายการให้สิทธิ์ใน
package.nameAPEX - อัปเดตรายการ
ServiceBundleในไฟล์ Manifest ของแพ็กเกจบริการในpackage.nameAPEX โดยการเพิ่มเส้นทางนโยบายการให้สิทธิ์ที่เกี่ยวข้อง ลงในช่องauthorization_policy_path - ติดตั้งใช้งาน
package.nameAPEX ในsdv-vm-nameVM
ตัวอย่าง
(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
- ไม่มีรีจิสทรีแพ็กเกจบริการ
- แอปใช้ Java และนำส่งในรูปแบบ APK
- Agent จะไม่อยู่ใน 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-nameVM
ตัวแทนและการสนับสนุนการทดสอบ
เอเจนต์ 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"
}
นโยบายการให้สิทธิ์ระดับ VM
ใส่นโยบายระดับ VM ใน APEX ที่มีชื่อแพ็กเกจ com.oem.sdv.authz ใช้
ไฟล์เฉพาะที่มีชื่อ <vm_name>.textproto ที่เกี่ยวข้อง
หากไม่มี <vm_name>.textproto ที่เกี่ยวข้อง เฟรมเวิร์กการให้สิทธิ์จะค้นหาไฟล์ .default.textproto ใน APEX เดียวกันด้วย
เหตุผล
เราเปิดตัว .default.textproto ด้วยเหตุผล 2 ประการ ดังนี้
- การตั้งค่าที่ง่ายขึ้น: สำหรับ OEM บางราย การตั้งค่า
default.textprotoสำหรับ VM ของ SDV ทั้งหมดอาจเพียงพอแล้ว และคุณอาจต้องระบุ<vm-name>.textprotoพิเศษสำหรับ VM ของ IVI เท่านั้น - ความสามารถในการอัปเดต: หากมี VM ใหม่ปรากฏขึ้นหลังจากการอัปเดตรถยนต์
default.textprotoที่สมเหตุสมผลอาจเพียงพอที่จะหลีกเลี่ยงการอัปเดต VM ทั้งหมด
ตรรกะการแก้ปัญหา
เมื่อตรวจสอบสิทธิ์สำหรับเรื่องจาก VM ที่ชื่อ <vm-name>
เฟรมเวิร์กการให้สิทธิ์จะค้นหานโยบายตามลำดับต่อไปนี้
<vm-name>.textproto: หากมี ให้ตรวจสอบตามไฟล์ดังกล่าว หากไม่มี ให้ใช้ไฟล์เริ่มต้นแทน.default.textproto: หากมี ให้ตรวจสอบตามนั้น หากไม่มี ให้ปฏิเสธการเข้าถึง
กำหนดโมดูล Soong ที่มีสิทธิ์ระดับ VM
โมดูลต้องเป็น APEX ที่มีชื่อแพ็กเกจ com.oem.sdv.authz
เพิ่มค่าลงในไฟล์ .mk ดังนี้
SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}