【已评审】新增资源协作接口和方法支持获取虚机启动度量信息

背景

在25.12版本迭代开发过程中,新增支持虚机启动度量接口(【已评审】 新增资源协作和Rest接口支持虚机启动度量),供Web查询各虚机启动度量固件信息,但虚机资源在北向映射器中获取性能较差,一个虚拟机的基本信息(2个资源树对象)和度量信息(6个资源树对象),总共需要访问8次dbus。 当有32个虚拟机时,需要获取256个对象,256次dbus访问,Rest接口访问需要8s左右,希望提供方法供北向接口一次获取完成。

关联ISSUE

[需求]: 自主可信计算支持虚机度量

整体方案

新增资源协作接口下的方法用于获取指定宿主机下所有的虚机信息及度量信息,返回供北向映射器解析。

因虚机资源较多,业务侧拼装资源数对象较为复杂,使用json字符串传递整体度量信息,并在北向解析展示。

评审点

  1. 新增资源协作接口bmc.kepler.Systems.VirtualMachines.TPCM和方法GetVirtualMachines用于获取指定宿主机下所有虚机信息及度量信息。
  2. 将bmc.kepler.Managers.TPCM.Config迁移下的设置虚拟机度量基准值方法(SetStandardDigest)迁移到bmc.kepler.Systems.VirtualMachines.TPCM

详细描述

  1. 新增方法查询指定宿主机下虚机信息及度量信息:

path(已有) : /bmc/kepler/Systems/:SystemId/VirtualMachines
interface(新增) : bmc.kepler.Systems.VirtualMachines.TPCM
方法(新增) :GetVMMeasurements

方法说明:

项目 说明
方法名 GetVMMeasurements
方法描述 获取指定宿主机下所有虚机基本信息及度量信息
权限 ReadOnly
请求签名 y
请求说明 HostingSystemId - 宿主机Id
响应签名 as
响应说明 字符串数组,数组最大长度32,每个字符串表示指定宿主机下单个虚机基本信息及度量信息的json字符串
  1. 删除bmc.kepler.Managers.TPCM.Config下的SetStandardDigest方法,并同步迁移至bmc.kepler.Systems.VirtualMachines.TPCM:

path(已有) : /bmc/kepler/Systems/:SystemId/VirtualMachines
interface(新增) : bmc.kepler.Systems.VirtualMachines.TPCM
方法(新增) :SetStandardDigest

方法说明:

项目 说明
方法名 SetStandardDigest
方法描述 设置度量对象基准值
权限 UserMgmt
请求签名 yasss
请求说明 HostingSystemId - 宿主机Id
VMIds - 虚拟机Id列表
MeasureObject - 字符串,度量对象,取值范围:(Bios、Shim、Grub、Grub.Cfg、Kernel、Initrd)
StandardDigest - 字符串,度量对象基准值,数据格式需满足如下正则: ^[0-9a-fA-F]{64}$
响应签名 无
响应说明 无

评审结论

1、同意新增资源协作接口bmc.kepler.Systems.VirtualMachines.TPCM和方法GetVirtualMachines用于获取指定宿主机下所有虚机基本信息及度量信息。
2、同意将SetStandardDigest方法从bmc.kepler.Managers.TPCM.Config接口下迁移至bmc.kepler.Systems.VirtualMachines.TPCM

遗留问题

  1. 优化GetVMMeasurements方法的响应签名格式
    结论:已闭环,调整为as。(因数据封装与解析开发效率、性能等考虑,将单虚机的度量信息打包为整体字符串传输)
  2. 优化bmc.kepler.Managers.TPCM.Config 中方法SetStandardDigest的资源路径,归一到虚机资源的interface下
    结论: 已闭环,迁移到 bmc.kepler.Systems.VirtualMachines.TPCM