Il deployment del file della policy di autorizzazione definisce la località di archiviazione designata per il file della policy specifico per ogni servizio di veicolo software-defined (SDV). Il meccanismo di deployment varia tra le piattaforme SDV Core e SDV IVI.
Piattaforma SDV Core
La piattaforma SDV Core utilizza i file APEX per il packaging dei bundle di servizi e la configurazione dei bundle di servizi. Il componente del registro dei bundle di servizi recupera la policy di autorizzazione per i bundle di servizi SDV archiviati in APEX.
APEX è un pacchetto firmato con un nome univoco chiamato nome del pacchetto. Ogni APEX può contenere più bundle di servizi. I metadati di ogni bundle di servizi sono dichiarati nel file manifest in APEX.
I metadati del bundle di servizi hanno un percorso al file della policy di autorizzazione, che deve trovarsi all'interno dello stesso APEX.
Esegui il deployment della policy di autorizzazione per il servizio SDV con l'identità {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} su SDV nel seguente modo:
- Inserisci il file della policy di autorizzazione nell'APEX
package.name. - Aggiorna la voce
ServiceBundlenel file manifest dei bundle di servizi nell'APEXpackage.nameaggiungendo il percorso della policy di autorizzazione corrispondente nel campoauthorization_policy_path. - Esegui il deployment dell'APEX
package.namenella VMsdv-vm-name.
Esempio
(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"
}
Inserisci il file della policy di autorizzazione in etc/authz/sample_rpc/permissions.textproto all'interno dello stesso APEX in cui si trova sdv_service_bundles_manifest.textproto.
Piattaforma SDV IVI
Esistono alcune differenze tra la piattaforma SDV IVI e le implementazioni SDV Core. Nella piattaforma SDV IVI:
- Non esiste un registro dei bundle di servizi.
- Le app sono basate su Java e vengono distribuite in APK.
- Gli agenti non sono in APEX.
A causa di questi fattori, il deployment sulla piattaforma SDV è diverso.
Esegui il deployment della policy di autorizzazione per il servizio SDV con l'identità {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} su SDV IVI nel seguente modo:
- Definisci il percorso della policy di autorizzazione in base al pattern
{policy-dir}/{package.name}/{ServiceBundle}.textproto.- Dove
policy-dirè uno dei seguenti:/product/etc/sdv_authz_policies/system/etc/sdv_authz_policies/system_ext/etc/sdv_authz_policies/vendor/etc/sdv_authz_policies
- Ad esempio,
/vendor/etc/sdv_authz_policies/com.sdv.pkg/WindowManager.textprotoè un percorso della policy di autorizzazione valido.
- Dove
- Inserisci la policy di autorizzazione nel percorso della policy di autorizzazione nella VM
ivi-vm-name.
Agenti e assistenza per i test
Gli agenti SDV hanno lo stesso deployment della policy di autorizzazione sia su SDV Core sia su SDV IVI. Se un agente non ha un APEX, la policy di autorizzazione corrispondente deve trovarsi in un APEX di sola configurazione complementare.
Esempio
(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"
}
Policy di autorizzazione a livello di VM
Inserisci le policy a livello di VM nell'APEX con il nome del pacchetto com.oem.sdv.authz. Utilizza un
file dedicato con il nome corrispondente <vm_name>.textproto.
Se il <vm_name>.textproto corrispondente non esiste, il framework di autorizzazione cerca anche un file .default.textproto nello stesso APEX.
Motivazione
Il file .default.textproto viene introdotto per due motivi:
- Configurazione semplificata: per alcuni OEM, potrebbe essere sufficiente impostare
default.textprotoper tutte le VM SDV e fornire solo un file<vm-name>.textprotospeciale per la VM IVI. - Aggiornabilità: se viene visualizzata una nuova VM dopo un aggiornamento del veicolo, un file ragionevole
default.textprotopotrebbe essere sufficiente per evitare di aggiornare tutte le VM.
Logica di risoluzione
Quando controlla le autorizzazioni per un soggetto da una VM denominata <vm-name>, il
framework di autorizzazione cerca le policy nel seguente ordine:
<vm-name>.textproto: se esiste, esegui il controllo in base a questo file. Se non esiste, torna al file predefinito..default.textproto: se esiste, esegui il controllo in base a questo file. Se non esiste, nega l'accesso.
Definisci il modulo Soong con le autorizzazioni a livello di VM
Il modulo deve essere un APEX con il nome del pacchetto com.oem.sdv.authz.
Aggiungi il valore al file .mk:
SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}