【已评审】支持 Firewall 资源协作接口以及IPMI标准命令

关联issue

支持IPMI规范的 Firewall 中添加/删除/查询白名单

评审背景

客户对于 IPMI 规范的 Firmware Firewall 命令需要支持,并且需要支持在其他非IPMI的北向接口进行查询和设置。

差距

  • 当前BMC不支持 IPMI 规范的 Firmware Firewall 命令
  • 当前BMC不支持 IPMI 规范的 Firmware Firewall 白名单的管理接口

评审点

评审点1

BMC新增 IPMI 规范的 Firmware Firewall 命令,具体的IPMI命令请见 IPMI 2.0规范 章节 18 & 21。本次评审的IPMI命令如下:

备注: 由于新增的IPMI命令是规范的,因此命令文档请求体和响应体不再评审点中,具体可以参考上述规范。

IPMI命令 角色权限 对应规范章节 NetFN Cmd
Get NetFn Support Command User 21.2 App 06h 09h
Get Command Support Command User 21.3 App 06h 0Ah
Get Configurable Commands Command User 21.5 App 06h 0Ch
Set Command Enables Command Administrator 21.7 App 06h 60h
Get Command Enables Command User 21.8 App 06h 61h

评审点2

BMC新增 IPMI 规范的 Firmware Firewall 白名单的管理接口。具体的接口新增在如下资源和接口下:

path:/bmc/kepler/IpmiService
interface:bmc.kepler.IpmiService.Firewall

新增接口1:AddWhiteList

取值以及说明
方法名称 AddWhiteList
方法描述 增加 IPMI Firewall 白名单,当前仅支持标准IPMI命令
方法权限 UserMgmt(和对应的IPMI命令Enable操作对齐)
请求签名 ya{yay}
请求参数 NetFN:uint8 类型,表征添加白名单的网络功能码,取值范围[0, 64],必填参数
CmdList:array<uint8> 类型,表征添加白名单的命令列表,每个元素的取值范围 [0, 255],可选参数,如果长度为空则添加NetFN下的所有命令
SubFunctionList:array<uint8> 类型,表征添加白名单的命令列表,每个元素的取值范围 [0, 63],可选参数,如果长度为空则添加的NetFN和CmdList的交集下的所有命令
响应签名
响应参数 无,添加成功之后不会返回任何数据,添加失败之后会返回error引擎

新增接口2:RemoveWhiteList

取值以及说明
方法名称 RemoveWhiteList
方法描述 删除 IPMI Firewall 白名单,当前仅支持标准IPMI命令
方法权限 UserMgmt(和对应的IPMI命令Disable操作对齐)
请求签名 ya{yay}
请求参数 NetFN:uint8 类型,表征删除白名单的网络功能码,取值范围[0, 64],必填参数
CmdList:array<uint8> 类型,表征删除白名单的命令列表,每个元素的取值范围 [0, 255],可选参数,如果长度为空则删除NetFN下的所有的命令
SubFunctionList:array<uint8> 类型,表征删除白名单的命令列表,每个元素的取值范围 [0, 63],可选参数,如果长度为空则删除NetFN和CmdList的交集下的所有命令
响应签名
响应参数 无,删除成功之后不会返回任何数据,删除失败之后会返回error引擎

新增接口3:GetWhiteList

取值以及说明
方法名称 GetWhiteList
方法描述 查询 IPMI Firewall 白名单列表,当前仅支持标准IPMI命令
方法权限 ReadOnly
请求签名
请求参数
响应签名 a{ya{yay}}
响应参数 查询失败之后会返回error引擎,查询成功时返回参数如下:
NetFN:uint8 类型,表征删除白名单的网络功能码,取值范围[0, 64],必填参数
CmdList:array<uint8> 类型,表征删除白名单的命令列表,每个元素的取值范围 [0, 255],可选参数,如果长度为空则删除NetFN下的所有的命令
SubFunctionList:array<uint8> 类型,表征删除白名单的命令列表,每个元素的取值范围 [0, 63],可选参数,如果长度为空则删除NetFN和CmdList的交集下的所有命令

评审结论

  • 评审点1:通过,同意新增下述IPMI命令:
    (1) Get NetFn Support Command
    (2) Get Command Support Command
    (3) Get Configurable Commands Command
    (4) Set Command Enables Command
    (5) Get Command Enables Command
  • 评审点2:通过,同意在 bmc.kepler.IpmiService.Firewall 下新增下述方法:
    (1) RemoveWhiteList,请求签名:ya{yay},响应签名:无,权限:UserMgmt
    (2) RemoveWhiteList,请求签名:ya{yay},响应签名:无,权限:UserMgmt
    (3) GetWhiteList,请求签名:无,响应签名:a{ya{yay}},权限:ReadOnly