关联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