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:
- Legen Sie die Autorisierungsrichtliniendatei im
package.name-APEX ab. - Aktualisieren Sie den
ServiceBundle-Eintrag in der Manifestdatei der Service-Bundles impackage.name-APEX, indem Sie den entsprechenden Autorisierungsrichtlinienpfad in das Feldauthorization_policy_patheinfügen. - Stellen Sie die
package.nameAPEX-Datei auf dersdv-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:
- Definieren Sie den Pfad der Autorisierungsrichtlinie gemäß dem Muster
{policy-dir}/{package.name}/{ServiceBundle}.textproto.- Dabei kann
policy-dirfü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.textprotoist beispielsweise ein gültiger Pfad für eine Autorisierungsrichtlinie.
- Dabei kann
- 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.textprotofür alle SDV-VMs festzulegen und nur für die IVI-VM ein spezielles<vm-name>.textprotobereitzustellen. - Aktualisierbarkeit: Wenn nach einem Fahrzeugupdate eine neue VM angezeigt wird, reicht möglicherweise ein angemessenes
default.textprotoaus, 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:
<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..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}