La implementación del archivo de política de autorización define la ubicación de almacenamiento designada para el archivo de política específico de cada servicio de vehículo definido por software (SDV). El mecanismo de implementación varía entre las plataformas principales de SDV y SDV IVI.
Plataforma principal de SDV
La plataforma principal de SDV usa archivos APEX para empaquetar paquetes de servicios y configurar paquetes de servicios. El componente de registro de paquetes de servicios recupera la política de autorización para los paquetes de servicios de SDV almacenados en APEX.
APEX es un paquete firmado con un nombre único llamado nombre de paquete. Cada APEX puede contener varios paquetes de servicios. Cada paquete de servicios tiene sus metadatos declarados en el archivo de manifiesto en el APEX.
Los metadatos del paquete de servicios tienen una ruta de acceso al archivo de política de autorización, que debe ubicarse dentro del mismo APEX.
Implementa la política de autorización para el servicio de SDV con la identidad {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} en SDV de la siguiente manera:
- Coloca el archivo de política de autorización en el APEX
package.name. - Actualiza la entrada
ServiceBundleen el archivo de manifiesto de los paquetes de servicios en el APEXpackage.name. Para ello, agrega la ruta de acceso de la política de autorización correspondiente en el campoauthorization_policy_path. - Implementa el APEX
package.nameen la VMsdv-vm-name.
Ejemplo
(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"
}
Coloca el archivo de política de autorización en etc/authz/sample_rpc/permissions.textproto dentro del mismo APEX en el que se encuentra sdv_service_bundles_manifest.textproto.
Plataforma de SDV IVI
Existen ciertas diferencias entre la plataforma de SDV IVI y las implementaciones principales de SDV. En la plataforma de SDV IVI, sucede lo siguiente:
- No hay registro de paquetes de servicios.
- Las apps se basan en Java y se entregan en APKs.
- Los agentes no están en APEX.
Debido a estos factores, la implementación en la plataforma de SDV es diferente.
Implementa la política de autorización para el servicio de SDV con la identidad {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} en SDV IVI de la siguiente manera:
- Define la ruta de acceso de la política de autorización según el patrón
{policy-dir}/{package.name}/{ServiceBundle}.textproto.- Donde
policy-dires uno de los siguientes:/product/etc/sdv_authz_policies/system/etc/sdv_authz_policies/system_ext/etc/sdv_authz_policies/vendor/etc/sdv_authz_policies
- Por ejemplo,
/vendor/etc/sdv_authz_policies/com.sdv.pkg/WindowManager.textprotoes una ruta de acceso de política de autorización válida.
- Donde
- Coloca la política de autorización en la ruta de acceso de la política de autorización en la VM
ivi-vm-name.
Agentes y compatibilidad con pruebas
Los agentes de SDV tienen la misma implementación de política de autorización en SDV principal y SDV IVI. Si un agente no tiene un APEX, su política de autorización correspondiente debe ubicarse en un APEX complementario solo de configuración.
Ejemplo
(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"
}
Política de autorización a nivel de VM
Coloca las políticas a nivel de VM en el APEX con el nombre de paquete com.oem.sdv.authz. Usa un
archivo dedicado con el nombre <vm_name>.textproto correspondiente.
Si no existe el <vm_name>.textproto correspondiente, el framework
de autorización también busca un archivo .default.textproto en el mismo APEX.
Razones
Se introduce .default.textproto por dos motivos:
- Configuración simplificada: Para algunos OEMs, puede ser suficiente configurar
default.textprotopara todas las VMs de SDV y solo proporcionar un<vm-name>.textprotoespecial para la VM de IVI. - Capacidad de actualización: Si aparece una VM nueva después de una actualización del vehículo, un
default.textprotorazonable podría ser suficiente para evitar actualizar todas las VMs.
Lógica de resolución
Cuando se verifican los permisos de un tema desde una VM llamada <vm-name>, el
framework de autorización busca políticas en el siguiente orden:
<vm-name>.textproto: Si existe, realiza la verificación en función de él. Si no existe, vuelve al archivo predeterminado..default.textproto: Si existe, realiza la verificación en función de él. Si no existe, deniega el acceso.
Define el módulo Soong con permisos a nivel de VM
El módulo debe ser un APEX con el nombre de paquete com.oem.sdv.authz.
Agrega el valor al archivo .mk:
SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}