服务软件包身份

AAOS SDV 的核心是面向服务的架构 (SOA),它通过将整个系统分解为称为服务包的各个组件来提供模块化。必须对这些服务软件包进行识别和身份验证,以确保分布式系统的安全可靠运行。

原生汽车服务控制器和注册中心(服务发现代理)是在 AAOS SDV Core 配置文件中实现的分布式系统,可帮助服务进行识别和身份验证。

一个服务软件包可以在一个或多个虚拟机中拥有多个实例。每个服务软件包实例都会从服务发现代理接收一个车辆特有的身份。

服务包实例标识符

服务软件包的运行实例(即操作系统进程)具有两个车辆范围内的唯一标识符:

  • 完全限定的服务包实例名称 (FQIN)
  • 服务包实例 ID 编号 (SID)

在操作系统进程重启和系统重新启动期间,FQIN 保持不变。无论所引用服务包实例的生命周期状态如何,它都有效。

SID 与服务软件包实例的操作系统进程生命周期相关联。因此,每次启动(或重启)服务软件包实例时,服务发现代理都会为其分配不同的 SID。这是一个不可预测的不透明值。与操作系统进程 ID 类似,一旦 SID 所指的服务软件包实例的操作系统进程停止,该 SID 就会失效。这两个标识符并不等效。

由于 SID 是临时标识符,因此在指定服务软件包实例的大多数情况下,请使用 FQIN。

本地身份

当服务软件包实例启动时,它会向本地服务发现代理注册自身,该代理是向操作系统进程分配服务软件包身份 (FQIN 和 SID) 的本地授权机构。服务发现代理通过 Linux 用户 ID (UID) 识别本地服务软件包实例。

远程识别

服务软件包实例可以创建非对称密钥对,并在 X.509 证书中将其公钥与其 FQIN 相关联。为此,它会向本地服务发现代理发送证书签名请求,而本地服务发现代理是 SDV 虚拟机中所有服务软件包实例的证书授权机构。

除了由本地服务发现代理签名的 X.509 证书之外,服务软件包实例还会收到车辆中所有服务发现代理的根公钥列表。

借助此信息,位于不同 SDV 虚拟机中的两个服务软件包实例可以相互识别和验证,以建立安全的 TLS 连接。