परिनियोजन

अनुमति देने से जुड़ी नीति की फ़ाइल को डिप्लॉय करने से, हर सॉफ़्टवेयर से कंट्रोल होने वाले वाहन (एसडीवी) की सेवा के लिए, नीति की फ़ाइल की तय की गई स्टोरेज लोकेशन के बारे में पता चलता है. डिप्लॉयमेंट का तरीका, एसडीवी कोर और एसडीवी आईवीआई प्लैटफ़ॉर्म के हिसाब से अलग-अलग होता है.

SDV कोर प्लैटफ़ॉर्म

SDV का कोर प्लैटफ़ॉर्म, सेवा बंडलों को पैकेज करने और सेवा बंडलों को कॉन्फ़िगर करने के लिए, APEX फ़ाइलों का इस्तेमाल करता है. सेवा बंडल रजिस्ट्री कॉम्पोनेंट, APEX में सेव किए गए SDV सेवा बंडलों के लिए अनुमति देने की नीति को फिर से हासिल करता है.

APEX, हस्ताक्षर किया गया एक पैकेज होता है. इसका एक यूनीक नाम होता है, जिसे पैकेज का नाम कहा जाता है. हर APEX में एक से ज़्यादा सर्विस बंडल हो सकते हैं. हर सेवा बंडल का मेटाडेटा, APEX में मेनिफ़ेस्ट फ़ाइल में बताया जाता है.

सेवा के बंडल के मेटाडेटा में, अनुमति देने से जुड़ी नीति वाली फ़ाइल का पाथ होता है. यह फ़ाइल, उसी APEX में होनी चाहिए.

SDV सेवा के लिए अनुमति देने की नीति को {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} के साथ SDV पर इस तरह से लागू करें:

  1. अनुमति देने से जुड़ी नीति की फ़ाइल को package.name APEX में रखें.
  2. package.name APEX में मौजूद, सेवा बंडलों की मेनिफ़ेस्ट फ़ाइल में ServiceBundle एंट्री को अपडेट करें. इसके लिए, 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"
}

अनुमति देने की नीति वाली फ़ाइल को उसी APEX में etc/authz/sample_rpc/permissions.textproto में रखें जहां sdv_service_bundles_manifest.textproto मौजूद है.

SDV IVI प्लैटफ़ॉर्म

SDV IVI प्लैटफ़ॉर्म और SDV कोर के लागू होने के तरीके में कुछ अंतर हैं. SDV IVI प्लैटफ़ॉर्म में:

  • कोई सेवा बंडल रजिस्ट्री नहीं है.
  • ऐप्लिकेशन, Java पर आधारित होते हैं और इन्हें APK फ़ाइलों के तौर पर डिलीवर किया जाता है.
  • एजेंट, APEX में नहीं होते हैं.

इन वजहों से, एसडीवी प्लैटफ़ॉर्म पर डिप्लॉयमेंट अलग होता है.

एसडीवी सेवा के लिए अनुमति देने की नीति को इस पहचान के साथ लागू करें: {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} एसडीवी आईवीआई पर इस तरह:

  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"
}

वीएम-लेवल पर अनुमति से जुड़ी नीति

वीएम-लेवल की नीतियों को com.oem.sdv.authz पैकेज नाम वाले APEX में रखें. इसके लिए, <vm_name>.textproto नाम वाली एक अलग फ़ाइल का इस्तेमाल करें.

अगर इससे जुड़ी <vm_name>.textproto मौजूद नहीं है, तो अनुमति देने वाला फ़्रेमवर्क, उसी APEX में .default.textproto फ़ाइल भी ढूंढता है.

वजह

.default.textproto को दो वजहों से पेश किया गया है:

  • आसान सेटअप: कुछ ओईएम के लिए, सभी एसडीवी वीएम के लिए default.textproto सेट करना काफ़ी हो सकता है. साथ ही, सिर्फ़ IVI वीएम के लिए खास <vm-name>.textproto उपलब्ध कराना काफ़ी हो सकता है.
  • अपडेट करने की सुविधा: अगर वाहन के अपडेट के बाद कोई नया वीएम दिखता है, तो सभी वीएम को अपडेट करने से बचने के लिए, default.textproto काफ़ी हो सकता है.

रिज़ॉल्यूशन लॉजिक

<vm-name> नाम के वीएम से किसी विषय के लिए अनुमतियों की जांच करते समय, अनुमति देने वाला फ़्रेमवर्क इन क्रम में नीतियों की जांच करता है:

  1. <vm-name>.textproto: अगर यह मौजूद है, तो इसके आधार पर जांच करें. अगर यह मौजूद नहीं है, तो डिफ़ॉल्ट फ़ाइल पर वापस जाएं.
  2. .default.textproto: अगर यह मौजूद है, तो इसके आधार पर जांच करें. अगर यह मौजूद नहीं है, तो ऐक्सेस देने से इनकार करें.

वीएम-लेवल की अनुमतियों के साथ Soong मॉड्यूल को तय करना

मॉड्यूल, com.oem.sdv.authz पैकेज नाम वाला APEX होना चाहिए.

.mk फ़ाइल में वैल्यू जोड़ें:

SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}