Bereitstellung

Bei der Bereitstellung von Autorisierungsrichtliniendateien wird der vorgesehene Speicherort für die Richtliniendatei für jeden SDV-Dienst (Software-Defined Vehicle) definiert. Der Bereitstellungsmechanismus variiert zwischen SDV-Kern- und SDV-IVI-Plattformen.

SDV-Kernplattform

Die SDV-Kernplattform verwendet APEX-Dateien zum Verpacken von Dienstbündeln und zur Konfiguration von Dienstbündeln. Die Registrierungskomponente für Dienst-Bundles ruft die Autorisierungsrichtlinie für SDV-Dienst-Bundles ab, die in APEXes gespeichert sind.

APEX ist ein signiertes Paket mit einem eindeutigen Namen, dem Paketnamen. Jedes APEX kann mehrere Dienst-Bundles enthalten. Die Metadaten jedes Dienst-Bundles werden in der Manifestdatei im APEX deklariert.

Die Metadaten des Service-Bundles enthalten einen Pfad zur Autorisierungsrichtliniendatei, die sich im selben APEX befinden sollte.

Stellen Sie die Autorisierungsrichtlinie für den SDV-Dienst mit der Identität {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} in SDV wie folgt bereit:

  1. Legen Sie die Autorisierungsrichtliniendatei im package.name-APEX ab.
  2. Aktualisieren Sie den ServiceBundle-Eintrag in der Manifestdatei der Service-Bundles im package.name-APEX, indem Sie den entsprechenden Autorisierungsrichtlinienpfad in das Feld authorization_policy_path einfügen.
  3. Stellen Sie die package.name APEX-Datei auf der sdv-vm-name-VM bereit.

Beispiel

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

Platzieren Sie die Autorisierungsrichtliniendatei in etc/authz/sample_rpc/permissions.textproto im selben APEX wie sdv_service_bundles_manifest.textproto.

SDV IVI-Plattform

Es gibt bestimmte Unterschiede zwischen der SDV IVI-Plattform und den SDV-Kernimplementierungen. Auf der SDV IVI-Plattform:

  • Es gibt keine Registry für Dienst-Bundles.
  • Apps basieren auf Java und werden in APKs bereitgestellt.
  • Agents sind nicht in APEX-Modulen enthalten.

Aus diesen Gründen unterscheidet sich die Bereitstellung auf der SDV-Plattform.

Stellen Sie die Autorisierungsrichtlinie für den SDV-Dienst mit der Identität {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} auf SDV IVI wie folgt bereit:

  1. Definieren Sie den Pfad der Autorisierungsrichtlinie gemäß dem Muster {policy-dir}/{package.name}/{ServiceBundle}.textproto.
    • Dabei kann policy-dir für folgendes stehen:
      • /product/etc/sdv_authz_policies
      • /system/etc/sdv_authz_policies
      • /system_ext/etc/sdv_authz_policies
      • /vendor/etc/sdv_authz_policies
    • /vendor/etc/sdv_authz_policies/com.sdv.pkg/WindowManager.textproto ist beispielsweise ein gültiger Pfad für eine Autorisierungsrichtlinie.
  2. Platzieren Sie die Autorisierungsrichtlinie im Autorisierungsrichtlinienpfad auf der ivi-vm-name-VM.

KI‑Agents und Testunterstützung

SDV-Agents haben dieselbe Berechtigungsrichtlinienbereitstellung sowohl für SDV Core als auch für SDV IVI. Wenn ein Agent keinen APEX hat, muss sich die entsprechende Berechtigungsrichtlinie in einem begleitenden reinen Konfigurations-APEX befinden.

Beispiel

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

Autorisierungsrichtlinie auf VM-Ebene

Richtlinien auf VM-Ebene gehören in den APEX mit dem Paketnamen com.oem.sdv.authz. Verwenden Sie eine separate Datei mit dem entsprechenden Namen <vm_name>.textproto.

Wenn die entsprechende <vm_name>.textproto nicht vorhanden ist, sucht das Autorisierungs-Framework auch nach einer .default.textproto-Datei im selben APEX.

Begründung

Die .default.textproto wird aus zwei Gründen eingeführt:

  • Vereinfachte Einrichtung: Für einige OEMs reicht es möglicherweise aus, default.textproto für alle SDV-VMs festzulegen und nur für die IVI-VM ein spezielles <vm-name>.textproto bereitzustellen.
  • Aktualisierbarkeit: Wenn nach einem Fahrzeugupdate eine neue VM angezeigt wird, reicht möglicherweise ein angemessenes default.textproto aus, um zu vermeiden, dass alle VMs aktualisiert werden.

Lösungslogik

Wenn Berechtigungen für ein Subjekt von einer VM namens <vm-name> geprüft werden, sucht das Autorisierungsframework in der folgenden Reihenfolge nach Richtlinien:

  1. <vm-name>.textproto: Wenn sie vorhanden ist, führen Sie die Prüfung anhand dieser durch. Wenn sie nicht vorhanden ist, wird auf die Standarddatei zurückgegriffen.
  2. .default.textproto: Wenn sie vorhanden ist, führen Sie die Prüfung anhand dieser durch. Wenn sie nicht vorhanden ist, verweigern Sie den Zugriff.

Soong-Modul mit Berechtigungen auf VM-Ebene definieren

Das Modul muss ein APEX mit dem Paketnamen com.oem.sdv.authz sein.

Fügen Sie den Wert der Datei .mk hinzu:

SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}