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:
- Yetkilendirme politikası dosyasını
package.nameAPEX'ine yerleştirin. ServiceBundleAPEX'teki hizmet paketleri manifest dosyasındapackage.namegirişini,authorization_policy_pathalanına ilgili yetkilendirme politikası yolunu 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ı, 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:
- Yetkilendirme politikası yolunu
{policy-dir}/{package.name}/{ServiceBundle}.textprotokalıbına göre tanımlayın.- Burada
policy-diraş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-nameVM'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.textprotoayarlamak ve yalnızca IVI VM'si için özel bir<vm-name>.textprotosağ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.textprotoyeterli 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:
<vm-name>.textproto: Varsa kontrolü buna göre yapın. Bu dosya yoksa varsayılan dosyaya geri dönülür..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}