Wdrożenie

Wdrożenie pliku zasad autoryzacji określa wyznaczoną lokalizację przechowywania pliku zasad dotyczącego każdej usługi pojazdu programowalnego. Mechanizm wdrażania różni się w zależności od platformy SDV Core i SDV IVI.

Platforma SDV Core

Platforma SDV Core używa plików APEX do pakowania pakietów usług i ich konfiguracji. Komponent rejestru pakietów usług pobiera zasady autoryzacji dla pakietów usług SDV przechowywanych w plikach APEX.

APEX to podpisany pakiet o unikalnej nazwie, która jest nazywana nazwą pakietu. Każdy plik APEX może zawierać wiele pakietów usług. Każdy pakiet usług ma metadane zadeklarowane w pliku manifestu w pliku APEX.

Metadane pakietu usług zawierają ścieżkę do pliku zasad autoryzacji, który powinien znajdować się w tym samym pliku APEX.

Wdróż zasady autoryzacji dla usługi SDV z tożsamością {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} w SDV w ten sposób:

  1. Umieść plik zasad autoryzacji w pliku APEX package.name.
  2. Zaktualizuj wpis ServiceBundle w pliku manifestu pakietów usług w pliku APEX package.name, dodając odpowiednią ścieżkę zasad autoryzacji do pola authorization_policy_path.
  3. Wdróż plik APEX package.name na maszynie wirtualnej sdv-vm-name.

Przykład

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

Umieść plik zasad autoryzacji w etc/authz/sample_rpc/permissions.textproto w tym samym pliku APEX, w którym znajduje się sdv_service_bundles_manifest.textproto.

Platforma SDV IVI

Istnieją pewne różnice między platformą SDV IVI a implementacjami SDV Core. Na platformie SDV IVI:

  • Nie ma rejestru pakietów usług.
  • Aplikacje są oparte na Javie i dostarczane w plikach APK.
  • Agenty nie znajdują się w plikach APEX.

Z tych powodów wdrożenie na platformie SDV jest inne.

Wdróż zasady autoryzacji dla usługi SDV z tożsamością {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} w SDV IVI w ten sposób:

  1. Zdefiniuj ścieżkę zasad autoryzacji zgodnie ze wzorcem {policy-dir}/{package.name}/{ServiceBundle}.textproto.
    • Gdzie policy-dir to jedna z tych wartości:
      • /product/etc/sdv_authz_policies
      • /system/etc/sdv_authz_policies
      • /system_ext/etc/sdv_authz_policies
      • /vendor/etc/sdv_authz_policies
    • Na przykład /vendor/etc/sdv_authz_policies/com.sdv.pkg/WindowManager.textproto to prawidłowa ścieżka zasad autoryzacji.
  2. Umieść zasady autoryzacji w ścieżce zasad autoryzacji na maszynie wirtualnej ivi-vm-name.

Agenty i pomoc dotycząca testowania

Agenty SDV mają takie samo wdrożenie zasad autoryzacji zarówno w SDV Core, jak i SDV IVI. Jeśli agent nie ma pliku APEX, jego odpowiednie zasady autoryzacji muszą znajdować się w towarzyszącym pliku APEX zawierającym tylko konfigurację.

Przykład

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

Zasady autoryzacji na poziomie maszyny wirtualnej

Umieść zasady na poziomie maszyny wirtualnej w pliku APEX o nazwie pakietu com.oem.sdv.authz. Użyj specjalnego pliku o nazwie <vm_name>.textproto.

Jeśli odpowiedni plik <vm_name>.textproto nie istnieje, framework autoryzacji szuka też pliku .default.textproto w tym samym pliku APEX.

Uzasadnienie

Plik .default.textproto został wprowadzony z 2 powodów:

  • Uproszczona konfiguracja: w przypadku niektórych producentów OEM może wystarczyć ustawienie default.textproto dla wszystkich maszyn wirtualnych SDV i udostępnienie specjalnego pliku <vm-name>.textproto tylko dla maszyny wirtualnej IVI.
  • Możliwość aktualizacji: jeśli po aktualizacji pojazdu pojawi się nowa maszyna wirtualna, wystarczy rozsądny default.textproto, aby uniknąć aktualizowania wszystkich maszyn wirtualnych.

Logika rozwiązywania problemów

Podczas sprawdzania uprawnień podmiotu z maszyny wirtualnej o nazwie <vm-name> framework autoryzacji szuka zasad w tej kolejności:

  1. <vm-name>.textproto: jeśli istnieje, przeprowadź sprawdzenie na jego podstawie. Jeśli nie istnieje, wróć do pliku domyślnego.
  2. .default.textproto: jeśli istnieje, przeprowadź sprawdzenie na jego podstawie. Jeśli nie istnieje, odmów dostępu.

Zdefiniuj moduł Soong z uprawnieniami na poziomie maszyny wirtualnej

Moduł musi być plikiem APEX o nazwie pakietu com.oem.sdv.authz.

Dodaj wartość do pliku .mk:

SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}