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:
- Yetkilendirme politikası dosyasını
package.nameAPEX'e yerleştirin. package.nameAPEX'teki hizmet paketleri manifest dosyasında bulunanServiceBundlegirişini, ilgili yetkilendirme politikası yolunuauthorization_policy_pathalanına ekleyerek güncelleyin.package.nameAPEX'isdv-vm-namesanal 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:
- Yetkilendirme politikası yolunu
{policy-dir}/{package.name}/{ServiceBundle}.textprotokalı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.textprotogeçerli bir yetkilendirme politikası yoludur.
- Burada
- Yetkilendirme politikasını,
ivi-vm-namesanal 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.textprotodeğerini ayarlamak ve yalnızca IVI sanal makinesi için özel bir<vm-name>.textprotosağ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.textprotoyeterli 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:
<vm-name>.textproto: Varsa kontrolü buna göre yapın. Dosya yoksa varsayılan dosyaya geri dönülür..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}