การทำให้ใช้งานได้

การติดตั้งไฟล์นโยบายการให้สิทธิ์จะกำหนดตำแหน่งที่เก็บข้อมูลที่กำหนด สำหรับไฟล์นโยบายที่เฉพาะเจาะจงกับบริการยานพาหนะที่กำหนดโดยซอฟต์แวร์ (SDV) แต่ละรายการ กลไกการติดตั้งใช้งานจะแตกต่างกันระหว่างแพลตฟอร์มหลักของ SDV กับแพลตฟอร์ม IVI ของ SDV

แพลตฟอร์มหลักของ SDV

แพลตฟอร์มหลักของ SDV ใช้ไฟล์ APEX สำหรับการจัดแพ็กเกจชุดบริการและ การกำหนดค่าชุดบริการ คอมโพเนนต์รีจิสทรีของแพ็กเกจบริการจะเรียกนโยบายการให้สิทธิ์สำหรับแพ็กเกจบริการ SDV ที่จัดเก็บไว้ใน APEX

APEX เป็นแพ็กเกจที่ลงนามแล้วซึ่งมีชื่อที่ไม่ซ้ำกันเรียกว่าชื่อแพ็กเกจ APEX แต่ละรายการ มีชุดบริการได้หลายชุด แต่ละแพ็กเกจบริการมีข้อมูลเมตา ที่ประกาศไว้ในไฟล์ Manifest ใน APEX

ข้อมูลเมตาของแพ็กเกจบริการมีเส้นทางไปยังไฟล์นโยบายการให้สิทธิ์ ซึ่ง ควรอยู่ใน APEX เดียวกัน

นำนโยบายการให้สิทธิ์สำหรับบริการ SDV ที่มีข้อมูลระบุตัวตน {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} ใน SDV ไปใช้ดังนี้

  1. วางไฟล์นโยบายการให้สิทธิ์ใน package.name APEX
  2. อัปเดตรายการ ServiceBundle ในไฟล์ Manifest ของแพ็กเกจบริการใน package.name APEX โดยการเพิ่มเส้นทางนโยบายการให้สิทธิ์ที่เกี่ยวข้อง ลงในช่อง authorization_policy_path
  3. ติดตั้งใช้งาน package.name APEX ใน sdv-vm-name VM

ตัวอย่าง

(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 ดังนี้

  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-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> เฟรมเวิร์กการให้สิทธิ์จะค้นหานโยบายตามลำดับต่อไปนี้

  1. <vm-name>.textproto: หากมี ให้ตรวจสอบตามไฟล์ดังกล่าว หากไม่มี ให้ใช้ไฟล์เริ่มต้นแทน
  2. .default.textproto: หากมี ให้ตรวจสอบตามนั้น หากไม่มี ให้ปฏิเสธการเข้าถึง

กำหนดโมดูล Soong ที่มีสิทธิ์ระดับ VM

โมดูลต้องเป็น APEX ที่มีชื่อแพ็กเกจ com.oem.sdv.authz

เพิ่มค่าลงในไฟล์ .mk ดังนี้

SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}