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 (原有)
interface: bmc.kepler.UpdateService(原有)
properties:ManufacturerValidateEnabled(新增)
| 项 | 说明 |
|---|---|
| 属性名称 | ManufacturerValidateEnabled |
| 属性类型 | 布尔 |
| 属性读写 | 读写 |
| 属性权限 | R:ReadOnly W:BasicSetting |
| 属性广播 | false |
| 属性值来源 | 产业或者使用者自行设置 |
| 默认值 | false |
| 持久化 | 否 |
| 属性说明 | 是否支持升级时进行厂商校验 |
评审点2:新增固件管理匹配规则的查询和删除接口
path:/bmc/kepler/UpdateService/FirmwareMatchRules (原有)
interface: bmc.kepler.UpdateService.FirmwareMatchRules(原有)
method:DeleteMatchRules(新增)
method:GetMatchRules(新增)
新增方法: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 (原有)
interface: bmc.kepler.UpdateService.FirmwareMatchRules(原有)
method:AddMathcRules(原有)
| 项 | 说明 |
|---|---|
| 方法名称 | 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 的权限和签名修改之后的兼容性方面是否有影响
结论:
- 当前方法使用场景仅有产品管理组件使用,签名修改之后需要同步适配;权限修改之后由于是组件之间的 RPC 调用,没有权限影响。
- BMC SDK 的资源协作接口权限和签名变更需要发布接口变更声明: 【变更声明】资源协作接口 FirmwareMatchRules 权限和签名变更