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:
- Umieść plik zasad autoryzacji w pliku APEX
package.name. - Zaktualizuj wpis
ServiceBundlew pliku manifestu pakietów usług w pliku APEXpackage.name, dodając odpowiednią ścieżkę zasad autoryzacji do polaauthorization_policy_path. - Wdróż plik APEX
package.namena maszynie wirtualnejsdv-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:
- Zdefiniuj ścieżkę zasad autoryzacji zgodnie ze wzorcem
{policy-dir}/{package.name}/{ServiceBundle}.textproto.- Gdzie
policy-dirto 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.textprototo prawidłowa ścieżka zasad autoryzacji.
- Gdzie
- 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.textprotodla wszystkich maszyn wirtualnych SDV i udostępnienie specjalnego pliku<vm-name>.textprototylko 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:
<vm-name>.textproto: jeśli istnieje, przeprowadź sprawdzenie na jego podstawie. Jeśli nie istnieje, wróć do pliku domyślnego..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}