Dağıtım

Yetkilendirme politikası dosyası dağıtımı, her yazılımla tanımlanmış araç (SDV) hizmetine özel politika dosyasının belirlenen depolama konumunu tanımlar. Dağıtım mekanizması, SDV çekirdeği 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 içinde bulunması gereken yetkilendirme politikası dosyasının yolu vardır.

SDV hizmeti için yetkilendirme politikasını, SDV'deki kimlik {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} ile aşağıdaki şekilde dağıtın:

  1. Yetkilendirme politikası dosyasını package.name APEX'ine yerleştirin.
  2. ServiceBundle APEX'teki hizmet paketleri manifest dosyasında package.name girişini, authorization_policy_path alanına ilgili yetkilendirme politikası yolunu 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ı, etc/authz/sample_rpc/permissions.textproto konumunun bulunduğu APEX'in içindeki sdv_service_bundles_manifest.textproto konumuna yerleştirin.

SDV IVI platformu

SDV IVI platformu ile SDV temel uygulamaları arasında belirli farklar vardır. SDV IVI platformunda:

  • Hizmet paketi kaydı yoktur.
  • Uygulamalar Java tabanlıdır ve APK'lar halinde sunulur.
  • Aracılar APEX'lerde yer almaz.

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

SDV IVI'de {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} kimliğiyle SDV hizmeti için yetkilendirme politikasını aşağıdaki şekilde 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 VM'sindeki yetkilendirme politikası yoluna yerleştirin.

Temsilciler ve test desteği

SDV aracıları, 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 yardımcı 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ı

Paket adı com.oem.sdv.authz olan APEX'e VM düzeyindeki politikaları yerleştirin. İlgili <vm_name>.textproto adıyla özel bir dosya kullanın.

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

Gerekçe

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

  • Basitleştirilmiş kurulum: Bazı OEM'ler için tüm SDV VM'leri için default.textproto ayarlamak ve yalnızca IVI VM'si için özel bir <vm-name>.textproto sağlamak yeterli olabilir.
  • Güncellenebilirlik: 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 gelen bir konuyla ilgili izinler kontrol edilirken yetkilendirme çerçevesi, politikaları aşağıdaki sırayla arar:

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

Soong modülünü sanal makine düzeyinde izinlerle tanımlayın

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

Değeri .mk dosyasına ekleyin:

SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}