Развертывание

Развертывание файла политики авторизации определяет место хранения файла политики, специфичного для каждой службы программно-определяемого транспортного средства (SDV). Механизм развертывания различается между базовыми платформами SDV и платформами SDV IVI.

Основная платформа SDV

Основная платформа SDV использует файлы APEX для упаковки пакетов услуг и их конфигурации. Компонент реестра пакетов услуг получает политику авторизации для пакетов услуг SDV, хранящихся в файлах APEX.

APEX — это подписанный пакет с уникальным именем, называемым именем пакета . Каждый APEX может содержать несколько пакетов служб. Метаданные каждого пакета служб указаны в файле манифеста в APEX.

Метаданные пакета сервиса содержат путь к файлу политики авторизации, который должен находиться в том же APEX-архиве.

Разверните политику авторизации для службы SDV с идентификатором {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} на SDV следующим образом:

  1. Поместите файл политики авторизации в папку package.name APEX.
  2. Обновите запись ServiceBundle в файле манифеста пакетов служб в package.name APEX, добавив соответствующий путь к политике авторизации в поле authorization_policy_path .
  3. Разверните пакет APEX package.name в виртуальной машине sdv-vm-name .

Пример

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

Разместите файл политики авторизации в папке etc/authz/sample_rpc/permissions.textproto в том же APEX-файле, где находится sdv_service_bundles_manifest.textproto .

Платформа SDV IVI

Между платформой SDV IVI и базовыми реализациями SDV существуют определенные различия. В платформе SDV IVI:

  • Реестр пакетов услуг отсутствует.
  • Приложения созданы на Java и распространяются в формате APK.
  • Агенты не находятся в зонах APEX.

Вследствие этих факторов развертывание на платформе SDV отличается.

Разверните политику авторизации для службы SDV с идентификатором {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} на сервере SDV IVI следующим образом:

  1. Определите путь к политике авторизации в соответствии с шаблоном {policy-dir}/{package.name}/{ServiceBundle}.textproto .
    • Где policy-dir — одно из следующих значений:
      • /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 — это допустимый путь к политике авторизации.
  2. Разместите политику авторизации в пути к политике авторизации на виртуальной машине ivi-vm-name .

Агенты и поддержка тестирования

Агенты SDV используют одну и ту же политику авторизации как в ядре SDV, так и в SDV IVI. Если у агента нет APEX, соответствующая политика авторизации должна находиться в дополнительном APEX, предназначенном только для конфигурации.

Пример

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

Политика авторизации на уровне виртуальной машины

Разместите политики уровня виртуальной машины в файле APEX с именем пакета com.oem.sdv.authz . Используйте отдельный файл с соответствующим именем <vm_name>.textproto .

Если соответствующий файл <vm_name>.textproto отсутствует, система авторизации также ищет файл .default.textproto в том же файле APEX.

Обоснование

Объект .default.textproto введен по двум причинам:

  • Упрощенная настройка : для некоторых OEM-производителей может быть достаточно установить default.textproto для всех виртуальных машин SDV и предоставить специальный <vm-name>.textproto только для виртуальной машины IVI.
  • Возможность обновления : Если после обновления автомобиля появляется новая виртуальная машина, разумного значения default.textproto может быть достаточно, чтобы избежать обновления всех виртуальных машин.

Логика разрешения

При проверке прав доступа для субъекта из виртуальной машины с именем <vm-name> машины>, система авторизации ищет политики в следующем порядке:

  1. <vm-name>.textproto : Если он существует, выполните проверку на его основе. Если он не существует, используйте файл по умолчанию.
  2. .default.textproto : Если он существует, выполнить проверку на его основе. Если он не существует, запретить доступ.

Определите модуль Soong с правами доступа на уровне виртуальной машины.

Модуль должен быть APEX-файлом с именем пакета com.oem.sdv.authz .

Добавьте это значение в файл .mk :

SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}