Dağıtım

Yetkilendirme politikası dosyası dağıtımı, her yazılım tanımlı araç (SDV) hizmetine özgü politika dosyası için belirlenen depolama konumunu tanımlar. Dağıtım mekanizması, SDV Core ve SDV IVI platformları arasında farklılık gösterir.

SDV temel platformu

SDV temel platformu, hizmet paketlerini ve hizmet paketi yapılandırmasını paketlemek için APEX dosyalarını kullanır. Hizmet paketleri kayıt defteri bileşeni, APEX'lerde depolanan SDV hizmet paketlerinin yetkilendirme politikasını alır.

APEX, paket adı olarak adlandırılan benzersiz bir ada sahip imzalı bir pakettir. Her APEX birden fazla hizmet paketi içerebilir. Her hizmet paketinin meta verileri, APEX'teki manifest dosyasında tanımlanır.

Hizmet paketi meta verilerinde, aynı APEX'te bulunması gereken yetkilendirme politikası dosyasının yolu yer alır.

SDV hizmeti için yetkilendirme politikasını SDV'de kimlikle {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} şu şekilde dağıtın:

  1. Yetkilendirme politikası dosyasını package.name APEX'e yerleştirin.
  2. package.name APEX'teki hizmet paketleri manifest dosyasında bulunan ServiceBundle girişini, ilgili yetkilendirme politikası yolunu authorization_policy_path alanına ekleyerek güncelleyin.
  3. package.name APEX'i sdv-vm-name sanal makinesine dağıtın.

Örnek

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

Yetkilendirme politikası dosyasını, sdv_service_bundles_manifest.textproto dosyasının bulunduğu APEX'te etc/authz/sample_rpc/permissions.textproto dizinine yerleştirin.

SDV IVI platformu

SDV IVI platformu ile SDV çekirdek uygulamaları arasında bazı farklar vardır. SDV IVI platformunda:

  • Hizmet paketi kaydı yok.
  • Uygulamalar Java tabanlıdır ve APK'lar halinde sunulur.
  • Temsilciler APEX'lerde değildir.

Bu faktörler nedeniyle SDV platformunda dağıtım farklıdır.

SDV IVI'da {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} kimliğiyle SDV hizmeti için yetkilendirme politikasını aşağıdaki gibi dağıtın:

  1. Yetkilendirme politikası yolunu {policy-dir}/{package.name}/{ServiceBundle}.textproto kalıbına göre tanımlayın.
    • Burada policy-dir, aşağıdakilerden biridir:
      • /product/etc/sdv_authz_policies
      • /system/etc/sdv_authz_policies
      • /system_ext/etc/sdv_authz_policies
      • /vendor/etc/sdv_authz_policies
    • Örneğin, /vendor/etc/sdv_authz_policies/com.sdv.pkg/WindowManager.textproto geçerli bir yetkilendirme politikası yoludur.
  2. Yetkilendirme politikasını, ivi-vm-name sanal makinesindeki yetkilendirme politikası yoluna yerleştirin.

Temsilciler ve test desteği

SDV temsilcileri, hem SDV çekirdeğinde hem de SDV IVI'da aynı yetkilendirme politikası dağıtımına sahiptir. Bir aracının APEX'i yoksa ilgili yetkilendirme politikası, yalnızca yapılandırma içeren bir tamamlayıcı APEX'te bulunmalıdır.

Örnek

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

Sanal makine düzeyinde yetkilendirme politikası

Sanal makine düzeyindeki politikaları, paket adı com.oem.sdv.authz olan APEX'e yerleştirin. İlgili <vm_name>.textproto adını taşıyan özel bir dosya kullanın.

İlgili <vm_name>.textproto yoksa yetkilendirme çerçevesi aynı APEX'te bir .default.textproto dosyası da arar.

Gerekçe

.default.textproto iki nedenden dolayı kullanıma sunulmuştur:

  • Basitleştirilmiş kurulum: Bazı OEM'ler için tüm SDV sanal makinelerinde default.textproto değerini ayarlamak ve yalnızca IVI sanal makinesi için özel bir <vm-name>.textproto sağlamak yeterli olabilir.
  • Güncellenebilme durumu: Araç güncellemesinden sonra yeni bir sanal makine görünürse tüm sanal makinelerin güncellenmesini önlemek için makul bir default.textproto yeterli olabilir.

Çözüm mantığı

<vm-name> adlı bir sanal makineden bir öznenin izinleri kontrol edilirken yetkilendirme çerçevesi, politikaları aşağıdaki sırayla arar:

  1. <vm-name>.textproto: Varsa kontrolü buna göre yapın. Dosya yoksa varsayılan dosyaya geri dönülür.
  2. .default.textproto: Varsa kontrolü buna göre yapın. Yoksa erişimi reddedin.

Sanal makine düzeyinde izinlerle Soong modülünü tanımlama

Modül, paket adı com.oem.sdv.authz olan bir APEX olmalıdır.

Değeri .mk dosyasına ekleyin:

SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}