背景
框式设备包含管理板和节点板,管理板通过证书认证和节点板之间进行通信,框内通信使用的证书包含管理板的身份证书和节点板的CA证书。支持用户通过管理板导入框内通信身份证书和CA证书。
关联ISSUE
无
整体方案
为了保证证书匹配,需要约束框内通信身份证书和框内通信CA证书同时导入,导入时对两本证书做匹配校验;导入框内通信证书操作需要支持四个能力:
- 导出框内通信身份证书的CSR
- rest接口导出框内通信身份证书的CSR
- 导入框内通信证书
- rest接口导入框内通信身份证书和CA证书
- 查询框内通信对接状态
- rest接口查询框内通信状态
- 向选定节点导入框内通信CA证书
- rest接口向选定节点导入框内通信CA证书
评审点
- 新增资源协作路径
/bmc/kepler/Chassis/:ChassisId/Enclosure/AggregationService- 新增资源协作接口
bmc.kepler.Chassis.AggregationService.CertificateService- 新增导入框内通信证书方法
ImportCertificate - 新增导入框内通信CA证书方法
ImportCACertificate
- 新增导入框内通信证书方法
- 新增资源协作接口
bmc.kepler.Chassis.AggregationService.CommunicateState- 新增查询框内通信状态方法
GetCommunicationStates
- 新增查询框内通信状态方法
- 新增资源协作接口
- 新增rest接口
/UI/Rest/Chassis/Enclosure/AggregationService/Actions/AggregationService.ExportCSR - 新增rest接口
/UI/Rest/Chassis/Enclosure/AggregationService/Actions/AggregationService.ImportCertificate - 新增rest接口
/UI/Rest/Chassis/Enclosure/AggregationService/OverView - 新增rest接口
/UI/Rest/Chassis/Enclosure/AggregationService/Actions/AggregationService.ImportCACertificate
详细描述
评审点1:新增资源协作路径 /bmc/kepler/Chassis/:ChassisId/Enclosure/AggregationService
路径描述:新增接口用于提供管理板框内通信管理能力。
path(新增): /bmc/kepler/Chassis/:ChassisId/Enclosure/AggregationService
interface(新增): bmc.kepler.Chassis.AggregationService.CertificateService
interface(新增): bmc.kepler.Chassis.AggregationService.CommunicateState
实现接口
| 实现接口 | 实现接口描述 | CSR配置影响 | 持久化影响 | 其他影响 |
|---|---|---|---|---|
| bmc.kepler.Chassis.AggregationService.CertificateService | 实现ImportCertificate方法和ImportCACertificate方法,提供框内通信证书管理功能 | 不涉及CSR配置,无影响 | 不涉及持久化,无影响 | 仅实现方法,属性当前暂不实现 |
| bmc.kepler.Chassis.AggregationService.CommunicateState | 实现GetCommunicationStates方法,提供框内通信状态查询能力 | 不涉及CSR配置,无影响 | 不涉及持久化,无影响 | 仅实现方法,属性当前暂不实现 |
新增方法
| 方法名称 | 请求签名 | 请求参数描述 | 响应签名 | 响应参数描述 | 方法描述 | 访问权限 | 变更影响 |
|---|---|---|---|---|---|---|---|
| ImportCertificate | sssbsa{ss} | Type: s,文件导入类型,可以是text或URI,text表示文本内容,URI表示文件路径;配合Certificate字段和CACertificate字段使用,Type值为text时,Certificate和CACertificate是证书文本内容,Type值为URI时,Certificate和CACertificate是证书文件路径;路径包含本地路径和远程路径,本地路径要在/tmp目录下,远程路径支持https、scp、sftp、cifs、nfs协议 Certificate: s,身份证书文本内容或文件路径,和Type字段配合使用 CACertificate: s,CA证书文本内容或文件路径,和Type字段配合使用 WithEncryptedKey: b,身份证书是否携带加密私钥 Password: s,身份证书文件密码,当身份证书携带私钥且被密码保护时需要设置 Extra: a{ss},扩展信息,预留 |
ua{ss} | TaskId: u 任务id Extra: a{ss} 扩展信息,预留 |
导入框内通信证书,需要同时传入身份证书和CA证书 | SecurityMgmt | 新增方法,无影响 |
| ImportCACertificate | uss | Slot: u,槽位号 UserName: s,节点板BMC用户的用户名 PassWord: s,节点板BMC用户的密码 |
u | TaskId: u 任务id | 向选定节点导入框内通信CA证书 | SecurityMgmt | 新增方法,无影响 |
| GetCommunicationStates | - | - | a(uss) | CommunicationStates: a(uss) 节点板框内通信状态数组 Slot: u 节点槽位号 BoardName: s 节点板名 CommunicationState: s 节点通信状态 |
获取各节点框内通信状态 | ReadOnly | 新增方法,无影响 |
评审点2:新增Rest接口导出框内通信身份证书CSR
- URI: /UI/Rest/Chassis/Enclosure/AggregationService/Actions/AggregationService.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"]
}
RspBody示例:
{
"url": "/UI/Rest/Task/1"
}
评审点3:新增Rest接口导入框内通信证书
- URI: /UI/Rest/Chassis/Enclosure/AggregationService/Actions/AggregationService.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": "****"
}
RspBody示例:
{
"url": "/UI/Rest/Task/1"
}
评审点4:新增Rest接口查询框内节点板信息
- URI: /UI/Rest/Chassis/Enclosure/AggregationService/OverView
- 操作类型: GET
- 变化类型: 新增接口
- 接口说明: 查询框内各节点板的信息
- 操作权限: ReadOnly
- 响应体结构:
| 属性 | 数据类型 | 属性说明 |
|---|---|---|
| Count | integer | 在位节点数量 |
| Members | array[object] | 在位节点集合 |
| Slot | integer | 节点槽位号 |
| BoardName | string | 节点板名 |
| CommunicationState | string | 节点板框内通信状态 |
RspBody示例:
{
"Members": [
{
"Slot": 1,
"BoardName": "Blade1",
"CommunicationState": ""
},
...
]
}
评审点5:新增Rest接口进行向节点板导入框内通信CA证书操作
- URI: /UI/Rest/Chassis/Enclosure/AggregationService/Actions/AggregationService.ImportCACertificate
- 操作类型: POST
- 变化类型: 新增接口
- 接口说明: 选择节点板,输入节点板用户名密码进行认证,向节点板导入框内通信CA证书
- 操作权限: SecurityMgmt
- 输入参数:
| 属性 | 数据类型 | 属性说明 | 取值范围 | 约束 |
|---|---|---|---|---|
| Slot | integer | 节点槽位号 | 由查询时获取到的Slot号决定 | 必选 |
| UserName | string | 节点板用户名 | NA | 必选 |
| Password | string | 节点板密码 | NA | 必选 |
ReqBody示例:
{
"Slot": "1",
"UserName": "Administrator",
"Password": "****"
}
RspBody示例:
{
"url": "/UI/Rest/Task/1"
}
是否准备好AI预审
是
评审结论
同意新增接口:
- 新增资源协作路径
/bmc/kepler/Chassis/:ChassisId/Enclosure/AggregationService- 新增资源协作接口
bmc.kepler.Chassis.AggregationService.CertificateService- 新增导入框内通信证书方法
ImportCertificate - 新增导入框内通信CA证书方法
ImportCACertificate
- 新增导入框内通信证书方法
- 新增资源协作接口
bmc.kepler.Chassis.AggregationService.CommunicateState- 新增查询框内通信状态方法
GetCommunicationStates
- 新增查询框内通信状态方法
- 新增资源协作接口
- 新增rest接口
/UI/Rest/Chassis/Enclosure/AggregationService/Actions/AggregationService.ExportCSR - 新增rest接口
/UI/Rest/Chassis/Enclosure/AggregationService/Actions/AggregationService.ImportCertificate - 新增rest接口
/UI/Rest/Chassis/Enclosure/AggregationService/OverView - 新增rest接口
/UI/Rest/Chassis/Enclosure/AggregationService/Actions/AggregationService.ImportCACertificate
遗留问题
- URI类型要说明本地和远程,远程导入支持的协议
结论:已补充 - 接口修改为bmc.kepler.Chassis.InterChassis.CertificateService,评审点1和评审点2合并,评审点2的表放到评审点1里
结论:已合并 - path借鉴聚合服务的path
结论:已刷新path - GetCommunitionState 的响应建议改成a(uss)
结论:已修改 - rest接口路径修改为: …/Actions/… .ExportCSR
结论:已修改 - rest接口路径的interChassisCert也和资源树接口path一样改掉
结论:已修改 - 查询节点信息的接口汇聚到一个接口里;
聚合服务里增加查询节点信息的接口,查询聚合服务相关的信息,框内通信状态字段增加到聚合服务的Overview接口里
结论:已刷新接口 - 导入CA证书操作的URi改成ImportCACertificate
结论:已修改 - 补一下接口的返回:Task的URi
结论:已补充