【已评审】固件管理新增厂商校验标识与厂商白名单管理方法

ISSUE链接

暂无

评审背景

  • 现网客户需求,要求BMC的固件升级时,必须验证固件镜像中的 Manufacturer ID 和 Product ID 是否与当前系统的 Manufacturer ID 和 Product ID 相匹配,防止误刷非预期的固件镜像。
  • 当前固件包已支持Product ID校验

当前现状以及差距

现状

  • 当前固件包已支持Product ID校验,不支持 Manufacturer ID校验
  • 升级包头内存在manufacture_id,可以采用该字段进行校验

差距

  • 升级流程中缺少Manufacture ID校验

解决方案

  • 当前伙伴可以选择不同供应商的固件,并且这些固件有可能来自于不同的厂商,如果仅采用固件包头中manufacture_id与BMC当前运行的ManufactureID进行对比会导致升级失败。
  • 新增资源协作接口属性ManufacturerValidateEnabled表示是否支持升级时进行厂商校验,属性值为false时,不进行厂商校验
  • 当前已存在方法AddMatchRules用于增加固件管理的匹配规则(该方法当前用于添加机型校验所需的系统的ProductId、Uid、Vid),可以通过该方法增加对应的厂商信息。但是当前AddMatchRules只有组件间调用,权限是ReadOnly,需要修改AddMatchRules权限为BasicSetting
  • 当前不存在没有对应的查询和删除接口,客户无法对已有的匹配规则进行查询和删除,因此需要另行新增接口

评审点

评审点1:新增支持厂商校验使能属性

path/bmc/kepler/UpdateService (原有)
interfacebmc.kepler.UpdateService(原有)
propertiesManufacturerValidateEnabled(新增)

说明
属性名称 ManufacturerValidateEnabled
属性类型 布尔
属性读写 读写
属性权限 R:ReadOnly
W:BasicSetting
属性广播 false
属性值来源 产业或者使用者自行设置
默认值 false
持久化
属性说明 是否支持升级时进行厂商校验

评审点2:新增固件管理匹配规则的查询和删除接口

path/bmc/kepler/UpdateService/FirmwareMatchRules (原有)
interfacebmc.kepler.UpdateService.FirmwareMatchRules(原有)
methodDeleteMatchRules(新增)
methodGetMatchRules(新增)

新增方法:DeleteMatchRules

说明
方法名称 DeleteMatchRules
权限 BasicSetting
请求签名 as
请求参数 RuleKeys:数组类型,每个元素都是固件管理的匹配规则键名称,当键名称不存在时直接跳过处理。支持的键名称如下:
 ProductId:固件支持的产品标识
 ProductVendorID:产品的供应商标识
 ProductUniqueID:产品的唯一标识
 ManufacturerID:固件的厂商标识,采用IANA编码十进制字符串,如:“2011”
响应签名
响应参数
说明 用于删除固件管理的匹配规则

新增方法:GetMatchRules

说明
方法名称 GetMatchRules
权限 ReadOnly
请求签名
请求参数
响应签名 a{ss}
响应参数 Rules:字典类型,每个元素都是固件管理的匹配规则键值对,支持的键名称如下:
 ProductId:固件支持的产品标识
 ProductVendorID:产品的供应商标识
 ProductUniqueID:产品的唯一标识
 ManufacturerID:固件的厂商标识,采用IANA编码十进制字符串,如:“2011”
说明 查询当前BMC中所有固件管理的匹配规则

评审点3:方法 AddMatchRules 权限和请求签名修改

path/bmc/kepler/UpdateService/FirmwareMatchRules (原有)
interfacebmc.kepler.UpdateService.FirmwareMatchRules(原有)
methodAddMathcRules(原有)

说明
方法名称 AddMatchRules
原权限 Readonly
新权限 BasicSetting
原请求签名 a(ss)
新请求签名 a{ss}
请求参数 Rules:字典类型,每个元素都是固件管理的匹配规则键值对,键值对中的键名称采用白名单管理,不在白名单中则跳过不处理。支持的键名称如下:
 ProductId:固件支持的产品标识
 ProductVendorID:产品的供应商标识
 ProductUniqueID:产品的唯一标识
 ManufacturerID:固件的厂商标识,采用IANA编码十进制字符串,如:“2011”
响应签名
响应参数
说明 用于增加固件管理的匹配规则

评审结论

  • 评审点1:通过,同意资源协作接口 bmc.kepler.UpdateService 下新增属性 ManufacturerValidateEnabled,表征固件管理升级时是否使能固件厂商校验,签名为 b,读权限为 ReadOnly,写权限为 BasciSetting
  • 评审点2:通过,同意资源协作接口 bmc.kepler.UpdateService.FirmwareMatchRules 下新增方法 GetMatchRules,表征获取当前固件管理的匹配规则列表,无请求参数,响应参数签名为 a{ss},字典类型,每个元素都代表一个匹配规则的键值对,方法权限为 ReadOnly;同意新增方法 DeleteMatchRules,表征删除固件管理中匹配的规则,请求参数签名为 as,数组类型,每个元素都代表一个匹配规则的键名称,方法权限为 BasicSetting
  • 评审点3:通过,同意资源协作接口 bmc.kepler.UpdateService 下的方法 AddMatchRules 权限由 ReadOnly 修改为 BasicSetting,请求签名由 a(ss) 修改为 a{ss}。由于该方法已经在使用,需要评估清楚兼容性影响。

遗留问题

问题1:方法 AddMatchRules 的权限和签名修改之后的兼容性方面是否有影响
结论: