A implantação do arquivo de política de autorização define o local de armazenamento designado para o arquivo de política específico de cada serviço de veículo definido por software (SDV, na sigla em inglês). O mecanismo de implantação varia entre as plataformas principais e IVI do SDV.
Plataforma principal do SDV
A plataforma principal do SDV usa arquivos APEX para empacotar pacotes de serviços e configuração de pacotes de serviços. O componente do registro de pacotes de serviços recupera a política de autorização para pacotes de serviços do SDV armazenados em APEXes.
O APEX é um pacote assinado com um nome exclusivo chamado nome do pacote. Cada APEX pode conter vários pacotes de serviços. Cada pacote de serviços tem seus metadados declarados no arquivo de manifesto no APEX.
Os metadados do pacote de serviços têm um caminho para o arquivo de política de autorização, que precisa estar localizado no mesmo APEX.
Implante a política de autorização para o serviço SDV com a identidade
{sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} no SDV da seguinte maneira:
- Coloque o arquivo de política de autorização no APEX
package.name. - Atualize a entrada
ServiceBundleno arquivo de manifesto dos pacotes de serviços no APEXpackage.nameadicionando o caminho da política de autorização correspondente ao campoauthorization_policy_path. - Implante o
package.nameAPEX na VMsdv-vm-name.
Exemplo
(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"
}
Coloque o arquivo de política de autorização em
etc/authz/sample_rpc/permissions.textproto no mesmo APEX em que
sdv_service_bundles_manifest.textproto está localizado.
Plataforma IVI do SDV
Há algumas diferenças entre a plataforma IVI do SDV e as implementações principais do SDV. Na plataforma SDV IVI:
- Não há um registro de pacote de serviços.
- Os apps são baseados em Java e entregues em APKs.
- Os agentes não estão em APEXes.
Devido a esses fatores, a implantação na plataforma SDV é diferente.
Implante a política de autorização para o serviço SDV com a identidade
{ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} no SDV IVI da seguinte forma:
- Defina o caminho da política de autorização de acordo com o padrão
{policy-dir}/{package.name}/{ServiceBundle}.textproto.- Em que
policy-diré um dos seguintes:/product/etc/sdv_authz_policies/system/etc/sdv_authz_policies/system_ext/etc/sdv_authz_policies/vendor/etc/sdv_authz_policies
- Por exemplo,
/vendor/etc/sdv_authz_policies/com.sdv.pkg/WindowManager.textprotoé um caminho de política de autorização válido.
- Em que
- Coloque a política de autorização no caminho da política de autorização na VM
ivi-vm-name.
Agentes e suporte a testes
Os agentes do SDV têm a mesma implantação de política de autorização no núcleo do SDV e no SDV IVI. Se um agente não tiver um APEX, a política de autorização correspondente precisará estar localizada em um APEX complementar somente de configuração.
Exemplo
(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 autorização no nível da VM
Coloque as políticas no nível da VM no APEX com o nome do pacote com.oem.sdv.authz. Use um arquivo dedicado com o nome <vm_name>.textproto correspondente.
Se o <vm_name>.textproto correspondente não existir, a estrutura de autorização também vai procurar um arquivo .default.textproto no mesmo APEX.
Justificativa
O .default.textproto é introduzido por dois motivos:
- Configuração simplificada: para alguns OEMs, pode ser suficiente definir
default.textprotopara todas as VMs de SDV e fornecer apenas um<vm-name>.textprotoespecial para a VM de IVI. - Capacidade de atualização: se uma nova VM aparecer após uma atualização do veículo, um
default.textprotorazoável poderá ser suficiente para evitar a atualização de todas as VMs.
Lógica de resolução
Ao verificar as permissões de um assunto em uma VM chamada <vm-name>, a
estrutura de autorização procura políticas na seguinte ordem:
<vm-name>.textproto: se existir, faça a verificação com base nele. Se ele não existir, volte para o arquivo padrão..default.textproto: se existir, faça a verificação com base nele. Se ele não existir, negue o acesso.
Defina o módulo Soong com permissões no nível da VM
O módulo precisa ser um APEX com o nome de pacote com.oem.sdv.authz.
Adicione o valor ao arquivo .mk:
SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}