背景
框式设备包含管理板和节点板,管理板通过证书认证和节点板之间进行通信,框内通信使用的证书包含管理板的身份证书和节点板的CA证书。支持用户通过管理板导入框内通信身份证书和CA证书。
关联ISSUE
无
整体方案
为了保证证书匹配,需要约束框内通信身份证书和框内通信CA证书同时导入,导入时对两本证书做匹配校验;导入框内通信证书操作需要支持四个能力:
- 导出框内通信身份证书的CSR
- rest接口导出框内通信身份证书的CSR
- 导入框内通信证书
- rest接口导入框内通信身份证书和CA证书
- 查询框内通信对接状态
- rest接口查询框内通信状态
- 进行框内通信对接
- rest接口进行框内通信对接
评审点
- 新增资源协作接口
bmc.kepler.Chassis.InterChassisCommunicate- 新增导入框内通信证书方法
ImportCertificate - 新增查询框内通信状态方法
GetCommunitionState - 新增导入框内通信CA证书方法
ImportCACertificate
- 新增导入框内通信证书方法
- 新增资源协作路径
/bmc/kepler/Chassis/:ChassisId/Enclosure/InterChassisCommunicate - 新增rest接口
/UI/Rest/Chassis/Enclosure/InterChassisCert/Actions.ExportCSR - 新增rest接口
/UI/Rest/Chassis/Enclosure/InterChassisCert/Actions.ImportCertificate - 新增rest接口
/UI/Rest/Chassis/Enclosure/InterChassisCert/CommunitionInfo - 新增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预审
是