Deployment

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:

  1. Inserisci il file della policy di autorizzazione nell'APEX package.name.
  2. Aggiorna la voce ServiceBundle nel file manifest dei bundle di servizi nell'APEX package.name aggiungendo il percorso della policy di autorizzazione corrispondente nel campo authorization_policy_path.
  3. Esegui il deployment dell'APEX package.name nella VM sdv-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:

  1. 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.
  2. 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.textproto per tutte le VM SDV e fornire solo un file <vm-name>.textproto speciale per la VM IVI.
  • Aggiornabilità: se viene visualizzata una nuova VM dopo un aggiornamento del veicolo, un file ragionevole default.textproto potrebbe 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:

  1. <vm-name>.textproto: se esiste, esegui il controllo in base a questo file. Se non esiste, torna al file predefinito.
  2. .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}