【待评审】支持北向接口进行内部通信管理

背景

框式设备包含管理板和节点板,管理板通过证书认证和节点板之间进行通信,框内通信使用的证书包含管理板的身份证书和节点板的CA证书。支持用户通过管理板导入框内通信身份证书和CA证书。

关联ISSUE

整体方案

为了保证证书匹配,需要约束框内通信身份证书和框内通信CA证书同时导入,导入时对两本证书做匹配校验;导入框内通信证书操作需要支持四个能力:

  1. 导出框内通信身份证书的CSR
    • rest接口导出框内通信身份证书的CSR
  2. 导入框内通信证书
    • rest接口导入框内通信身份证书和CA证书
  3. 查询框内通信对接状态
    • rest接口查询框内通信状态
  4. 进行框内通信对接
    • rest接口进行框内通信对接

评审点

  1. 新增资源协作接口 bmc.kepler.Chassis.InterChassisCommunicate
    1. 新增导入框内通信证书方法ImportCertificate
    2. 新增查询框内通信状态方法GetCommunitionState
    3. 新增导入框内通信CA证书方法ImportCACertificate
  2. 新增资源协作路径 /bmc/kepler/Chassis/:ChassisId/Enclosure/InterChassisCommunicate
  3. 新增rest接口 /UI/Rest/Chassis/Enclosure/InterChassisCert/Actions.ExportCSR
  4. 新增rest接口 /UI/Rest/Chassis/Enclosure/InterChassisCert/Actions.ImportCertificate
  5. 新增rest接口 /UI/Rest/Chassis/Enclosure/InterChassisCert/CommunitionInfo
  6. 新增rest接口 /UI/Rest/Chassis/Enclosure/InterChassisCert/Actions.Connect

详细描述

评审点1:新增资源协作接口 bmc.kepler.Chassis.InterChassisCommunicate

接口描述:新增接口用于提供管理板框内通信管理能力。
path(新增): /bmc/kepler/Chassis/:ChassisId/Enclosure/InterChassisCommunicate
interface(新增): bmc.kepler.Chassis.InterChassisCommunicate

新增方法

方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述 访问权限 变更影响
ImportCertificate sssbsa{ss} Type: s,文件导入类型,可以是text或URI,text表示文本内容,URI表示文件路径;配合Certificate字段和CACertificate字段使用,Type值为text时,Certificate和CACertificate是证书文本内容,Type值为URI时,Certificate和CACertificate是证书文件路径

Certificate: s,身份证书文本内容或文件路径,和Type字段配合使用

CACertificate: s,CA证书文本内容或文件路径,和Type字段配合使用

WithEncryptedKey: b,身份证书是否携带加密私钥

Password: s,身份证书文件密码,当身份证书携带私钥且被密码保护时需要设置

Extra: a{ss},扩展信息,预留
ua{ss} TaskId: 任务id
Extra: 扩展信息,预留
导入框内通信证书,需要同时传入身份证书和CA证书 SecurityMgmt 新增方法,无影响
ImportCACertificate uss Slot: u,槽位号

UserName: s,节点板BMC用户的用户名

PassWord: s,节点板BMC用户的密码
u TaskId: 任务id 和选定节点进行框内通信对接 SecurityMgmt 新增方法,无影响
GetCommunitionState - - as CommunitionState: 所有在位节点的槽位号、节点名、通信状态的json字符串数组 获取各节点框内通信对接状态 ReadOnly 新增方法,无影响

评审点2:新增资源协作路径 /bmc/kepler/Chassis/:ChassisId/Enclosure/InterChassisCommunicate

路径描述: 机框内部通信相关功能,进行机框内部通信的管理

实现接口

实现接口 实现接口描述 CSR配置影响 持久化影响 其他影响
bmc.kepler.Chassis.InterChassisCommunicate 实现ImportCertificate方法、GetCommunitionState方法和ImportCACertificate方法,提供框内通信证书管理功能和框内通信状态查询能力 不涉及CSR配置,无影响 不涉及持久化,无影响 仅实现方法,属性当前暂不实现

评审点3:新增Rest接口导出框内通信身份证书CSR

  • URI: /UI/Rest/Chassis/Enclosure/InterChassisCert/Actions.ExportCSR
  • 操作类型: POST
  • 变化类型: 新增接口
  • 接口说明: 生成并导出框内通信身份证书的CSR文件
  • 操作权限: SecurityMgmt
  • 输入参数:
属性 数据类型 属性说明 取值范围 约束
Country string 国家缩写 ^[A-Za-z]{2}$ 必选
State string 州/省 ^[0-9a-zA-Z_ \\-.]{0,128}$ 非必选
City string 城市 ^[0-9a-zA-Z_ \\-.]{0,128}$ 非必选
OrgName string 组织 ^[0-9a-zA-Z_ \\-.]{0,64}$ 非必选
OrgUnit string 部门 ^[0-9a-zA-Z_ \\-.]{0,64}$ 非必选
CommonName string 证书实体名称 ^[0-9a-zA-Z_ \\-.]{1,64}$ 必选
AlternativeNames array[string] 使用者可选名称 数组长度最大50,单个string的长度是0-255 非必选

ReqBody示例:

{
    "Country": "****",
    "State": "****",
	"City": "****",
	"OrgName": "****",
	"OrgUnit": "****",
    "CommonName": "OpenUBMC",
    "AlternativeNames": ["DNS:1.1.1.1","email:111@example.com","IP:1.1.1.1","URI:example.com"]
}

评审点4:新增Rest接口导入框内通信证书

  • URI: /UI/Rest/Chassis/Enclosure/InterChassisCert/Actions.ImportCertificate
  • 操作类型: POST
  • 变化类型: 新增接口
  • 接口说明: 导入框内通信证书,需要同时选择身份证书和CA证书进行导入;身份证书可选带私钥证书和不带私钥的证书
  • 操作权限: SecurityMgmt
  • 输入参数:
属性 数据类型 属性说明 取值范围 约束
CertificateType string 证书类型(是否带私钥) Client/Custom 必选
Certificate string 框内通信身份证书路径 NA 必选
CACertificate string 框内通信CA证书路径 NA 必选
Password string 密码 NA,敏感信息 非必选

ReqBody示例:

{
    "CertificateType": "Custom",
    "Certificate": "/tmp/Certificate.p12",
	"CACertificate": "/tmp/CACertificate.pem",
	"Password": "****"
}

评审点5:新增Rest接口查询框内通信对接状态

  • URI: /UI/Rest/Chassis/Enclosure/InterChassisCert/CommunitionInfo
  • 操作类型: GET
  • 变化类型: 新增接口
  • 接口说明: 查询管理板和各节点板间的框内通信对接状态
  • 操作权限: ReadOnly
  • 响应体结构:
属性 数据类型 属性说明
Count integer 在位节点数量
Members array[object] 在位节点集合
Slot integer 节点槽位号
BoardName string 节点板名
State string 状态

RspBody示例:

{
	"Count": 2,
	"Members": [
		{
			"Slot": 1,
			"BoardName": "Blade1",
			"State": ""
		},
		...
	]
}

评审点6:新增Rest接口进行框内通信对接操作

  • URI: /UI/Rest/Chassis/Enclosure/InterChassisCert/Actions.Connect
  • 操作类型: POST
  • 变化类型: 新增接口
  • 接口说明: 选择节点板,进行板间通信对接
  • 操作权限: SecurityMgmt
  • 输入参数:
属性 数据类型 属性说明 取值范围 约束
Slot integer 节点槽位号 由查询时获取到的Slot号决定 必选
UserName string 节点板用户名 NA 必选
Password string 节点板密码 NA 必选

ReqBody示例:

{
    "Slot": "1",
    "UserName": "Administrator",
	"Password": "****"
}

是否准备好AI预审

评审结论

遗留问题

预审答案内容由AI生成,仅供参考:

帖子评审结论:【待评审】支持北向接口进行内部通信管理

帖子相关性:相关(Redfish 相关: 帖子内容包含相关关键字 ‘bmc’)

  • 总评审点数:9
  • MDB 资源协作接口评审点:3
  • 其他评审点:6

总体结果:不通过(1/3 个评审点通过)

评审点 1:新增资源协作接口路径 /bmc/kepler/Managers/:ManagerId/InterChassisCommunicate【MDB】

结果:不通过

  • 规则合规性检查:不通过(2/25 项失败)
    • 规则合规性失败项(必须项)
      规则ID:MDB-PROPERTY-014
      级别:必须项
      问题描述:方法请求参数的签名与描述中的类型标记不一致,且描述中的类型标记与业务语义不符。
      处理建议:1. 修正 ImportCertificate 方法请求参数 Extra 的描述类型,当前签名定义为 a{ss}(字典数组),描述中误写为 s(字符串),请修正描述以匹配签名。
  1. 修正 ImportCACertificate 方法请求参数 UserName 和 PassWord 的描述类型,当前签名定义为 s(字符串),描述中误写为 u(uint32),请修正描述以匹配签名及业务语义。

    规则ID:MDB-METHOD-016
    级别:必须项
    问题描述:方法 ImportCertificate 和 ImportCACertificate 的请求参数描述与签名不一致,Extra 参数描述为 s 类型但签名为 a{ss},UserName 和 PassWord 参数描述为 u 类型但签名为 s。
    处理建议:请修正参数描述中的类型标注,使其与签名一致:ImportCertificate 的 Extra 参数类型应为 a{ss}(字典数组),ImportCACertificate 的 UserName 和 PassWord 参数类型应为 s(字符串)。

  • 警告项(建议性)
    规则ID:MDB-RISK-004
    级别:建议性
    问题描述:涉及证书导入和凭据传递的高风险安全操作,未说明防误操作、失败恢复及审计日志策略。
    处理建议:severity=‘should’ 建议性规则,建议修改以提升规范符合性

    规则ID:MDB-INTERFACE-008
    级别:建议性
    问题描述:新增资源协作接口仅定义了方法,未提供属性定义,可能缺少状态属性或配置属性。
    处理建议:severity=‘should’ 建议性规则,建议修改以提升规范符合性

评审点 2:新增资源协作接口 bmc.kepler.Managers.InterChassisCommunicate【MDB】

结果:通过

  • 规则合规性检查:通过(25 项检查全部通过)
    • 警告项(建议性)
      规则ID:MDB-REVIEW-001
      级别:建议性
      问题描述:评审点编号不一致,帖子标题为“评审点2”,正文标题为“评审点1”,属于编号错乱。
      处理建议:severity=‘should’ 建议性规则,建议修改以提升规范符合性

      规则ID:MDB-REVIEW-003
      级别:建议性
      问题描述:评审点缺少业务背景、消费方/使用场景及变更原因说明。
      处理建议:severity=‘should’ 建议性规则,建议修改以提升规范符合性

      规则ID:MDB-RISK-004
      级别:建议性
      问题描述:涉及证书导入和密码传递的高风险方法未充分说明防误操作、失败恢复及审计策略。
      处理建议:severity=‘should’ 建议性规则,建议修改以提升规范符合性

评审点 3:新增导入框内通信证书方法ImportCertificate【MDB】

结果:不通过

  • 规则合规性检查:不通过(1/25 项失败)
    • 规则合规性失败项(必须项)
      规则ID:MDB-METHOD-016
      级别:必须项
      问题描述:方法请求签名与参数描述中的类型标注不一致,ImportCACertificate 的 UserName/PassWord 类型标注为 u 但签名为 s,ImportCertificate 的 Extra 类型标注为 s 但签名为 a{ss}
      处理建议:请修正参数描述中的类型标注,使其与请求签名一致:ImportCACertificate 的 UserName 和 PassWord 类型应标注为 s(string);ImportCertificate 的 Extra 类型应标注为 a{ss}(字典数组)