Развертывание файла политики авторизации определяет место хранения файла политики, специфичного для каждой службы программно-определяемого транспортного средства (SDV). Механизм развертывания различается между базовыми платформами SDV и платформами SDV IVI.
Основная платформа SDV
Основная платформа SDV использует файлы APEX для упаковки пакетов услуг и их конфигурации. Компонент реестра пакетов услуг получает политику авторизации для пакетов услуг SDV, хранящихся в файлах APEX.
APEX — это подписанный пакет с уникальным именем, называемым именем пакета . Каждый APEX может содержать несколько пакетов служб. Метаданные каждого пакета служб указаны в файле манифеста в APEX.
Метаданные пакета сервиса содержат путь к файлу политики авторизации, который должен находиться в том же APEX-архиве.
Разверните политику авторизации для службы SDV с идентификатором {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} на SDV следующим образом:
- Поместите файл политики авторизации в папку
package.nameAPEX. - Обновите запись
ServiceBundleв файле манифеста пакетов служб вpackage.nameAPEX, добавив соответствующий путь к политике авторизации в полеauthorization_policy_path. - Разверните пакет 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 следующим образом:
- Определите путь к политике авторизации в соответствии с шаблоном
{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— это допустимый путь к политике авторизации.
- Где
- Разместите политику авторизации в пути к политике авторизации на виртуальной машине
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> машины>, система авторизации ищет политики в следующем порядке:
-
<vm-name>.textproto: Если он существует, выполните проверку на его основе. Если он не существует, используйте файл по умолчанию. -
.default.textproto: Если он существует, выполнить проверку на его основе. Если он не существует, запретить доступ.
Определите модуль Soong с правами доступа на уровне виртуальной машины.
Модуль должен быть APEX-файлом с именем пакета com.oem.sdv.authz .
Добавьте это значение в файл .mk :
SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}