Déploiement

Le déploiement du fichier de stratégie d'autorisation définit l'emplacement de stockage désigné pour le fichier de stratégie spécifique à chaque service de véhicule défini par logiciel (SDV). Le mécanisme de déploiement varie entre les plates-formes SDV Core et SDV IVI.

Plate-forme SDV Core

La plate-forme SDV Core utilise des fichiers APEX pour regrouper les services et configurer les regroupements de services. Le composant du registre des bundles de services récupère la règle d'autorisation pour les bundles de services SDV stockés dans les APEX.

APEX est un package signé avec un nom unique appelé nom de package. Chaque APEX peut contenir plusieurs groupes de services. Chaque bundle de services possède ses métadonnées déclarées dans le fichier manifeste de l'APEX.

Les métadonnées du bundle de services contiennent un chemin d'accès au fichier de stratégie d'autorisation, qui doit se trouver dans le même APEX.

Déployez la règle d'autorisation pour le service SDV avec l'identité {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} sur SDV comme suit :

  1. Placez le fichier de règles d'autorisation dans l'APEX package.name.
  2. Mettez à jour l'entrée ServiceBundle dans le fichier manifeste des bundles de services dans l'APEX package.name en ajoutant le chemin d'accès de la règle d'autorisation correspondante dans le champ authorization_policy_path.
  3. Déployez l'APEX package.name dans la VM sdv-vm-name.

Exemple

(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"
}

Placez le fichier de règles d'autorisation dans etc/authz/sample_rpc/permissions.textproto au sein du même APEX que sdv_service_bundles_manifest.textproto.

Plate-forme IVI SDV

Il existe certaines différences entre la plate-forme SDV IVI et les implémentations SDV Core. Dans la plate-forme SDV IVI :

  • Il n'existe pas de registre de lots de services.
  • Les applications sont basées sur Java et fournies dans des APK.
  • Les agents ne sont pas dans les APEX.

En raison de ces facteurs, le déploiement sur la plate-forme SDV est différent.

Déployez la règle d'autorisation pour le service SDV avec l'identité {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} sur SDV IVI comme suit :

  1. Définissez le chemin d'accès à la règle d'autorisation selon le modèle {policy-dir}/{package.name}/{ServiceBundle}.textproto.
    • policy-dir est l'un des éléments suivants :
      • /product/etc/sdv_authz_policies
      • /system/etc/sdv_authz_policies
      • /system_ext/etc/sdv_authz_policies
      • /vendor/etc/sdv_authz_policies
    • Par exemple, /vendor/etc/sdv_authz_policies/com.sdv.pkg/WindowManager.textproto est un chemin d'accès de règle d'autorisation valide.
  2. Placez la règle d'autorisation dans le chemin d'accès à la règle d'autorisation sur la VM ivi-vm-name.

Agents et assistance pour les tests

Les agents SDV disposent du même déploiement de règles d'autorisation sur le cœur SDV et sur SDV IVI. Si un agent ne possède pas d'APEX, sa règle d'autorisation correspondante doit se trouver dans un APEX de configuration uniquement associé.

Exemple

(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"
}

Règle d'autorisation au niveau de la VM

Placez les règles au niveau de la VM dans l'APEX avec le nom de package com.oem.sdv.authz. Utilisez un fichier dédié portant le nom <vm_name>.textproto correspondant.

Si le fichier <vm_name>.textproto correspondant n'existe pas, le framework d'autorisation recherche également un fichier .default.textproto dans le même APEX.

Explication

L'élément .default.textproto est introduit pour deux raisons :

  • Configuration simplifiée : pour certains OEM, il peut suffire de définir default.textproto pour toutes les VM SDV et de ne fournir qu'un <vm-name>.textproto spécial pour la VM IVI.
  • Mise à jour : si une nouvelle VM apparaît après une mise à jour du véhicule, un default.textproto raisonnable peut suffire à éviter de mettre à jour toutes les VM.

Logique de résolution

Lorsque vous vérifiez les autorisations d'un sujet à partir d'une VM appelée <vm-name>, le framework d'autorisation recherche les règles dans l'ordre suivant :

  1. <vm-name>.textproto : si le fichier existe, effectuez la vérification en fonction de celui-ci. S'il n'existe pas, revenez au fichier par défaut.
  2. .default.textproto : si elle existe, effectuez la vérification en fonction de cette valeur. S'il n'existe pas, refusez l'accès.

Définir le module Soong avec des autorisations au niveau de la VM

Le module doit être un APEX avec le nom de package com.oem.sdv.authz.

Ajoutez la valeur au fichier .mk :

SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}