【已评审】支持框内通信能力扩展

背景

部分产品存在管理板和节点板区分,用户仅需操作管理板,向各节点板下发配置,不需要直接关注各节点板。

需要扩展框内通信能力已达到管理板访问节点板的更多诉求。

关联ISSUE

[需求]: 支持框内通信账户管理

整体方案

提供独立的框内通信账户,可设置权限、登录接口、导入/删除公钥,用于框内认证赋权行为。

当框内通信使能打开后,支持框内通信账户通过内部ip证书认证创建Rest、Redfish会话,支持通过框内通信账户公钥认证建立SSH、SFTP链接。

框内通信账户支持设置登录接口,范围局限于 Web、Redfish、SSH、SFTP

扩展框间通信内部鉴权校验策略,支持通过白名单机制进行ip拦截

扩展资源树方法证书用途参数枚举类型取值范围,支持处理框内身份证书

变更资源协作接口,增加框内通信使能状态属性字段,支持certificate组件获取框内通信证书认证使能状态

评审点

1、变更资源协作接口 bmc.kepler.AccountService.CertificateAuthentication,扩展框内通信鉴权校验策略

详细描述

  • 场景1:扩展属性 InterChassisValidation 取值范围
变更类型 属性名称 签名 只读 变化通知 属性描述 访问权限 属性来源 持久化类型 变更影响
变更 InterChassisValidation s false false 机框内BMC间通信的鉴权请求校验策略取值范围:
变更前:[“LLDP”,“None”]
变更后:[“LLDP”,“None”,“Whitelist”]
Read:ReadOnly
Write:UserMgmt
CSR 不持久化 扩展枚举取值范围

新增扩展校验策略 Whitelist,代表通过特定的白名单进行校验,仅白名单内的请求可通过,否则被拦截

  • 场景2:新增方法 ManageInterChassisWhitelist
变更类型 方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述 访问权限
新增 ManageInterChassisWhitelist sss Operation:s,代表操作类型,取值范围:[“Get“,”Add”,”Remove”]

Type:s,表示白名单类型,取值范围:[“IP”]

Item:s,表示要操作的白名单对象,当Operation为”Add”、”Remove”时,不可为空字符串
as List:白名单列表,代表完成对应操作后当前白名单类型的白名单全集 用于管理机框内BMC间通信的鉴权请求校验的白名单,当校验策略为”WhiteList ”时,基于本方法设置的白名单用于进行校验;当校验策略非”WhiteList”时,本方法依然可用,白名单不生效。单个类型的白名单最多支持10条。 UserMgmt

当校验策略非”WhiteList”时,本方法可用,白名单不生效

当新增白名单已重复时,不报错,仅返回当前白名单全集

当删除白名单不存在时,不报错,仅返回当前白名单全集

当新增白名单超过最大数量限制时,抛出错误 base.CreateLimitReachedForResource

2、变更 webrest 接口 /UI/Rest/AccessMgnt/AdvancedSecurity,支持前端限制框内通信账户的登陆接口

详细描述

  • 场景1:变更webrest接口 /UI/Rest/AccessMgnt/AdvancedSecurity

URI:/UI/Rest/AccessMgnt/AdvancedSecurity

操作类型:GET

变化类型:新增返回字段

属性名称 属性类型 属性说明 约束
“AllowedLoginInterfaces”: {
“InterChassis” array(string) 代表机框内BMC间账户可用的登陆接口集合,用于前端界面限制框内通信账户的可设置的登陆接口 仅当机框内BMC间通信使能打开时该属性可见
}

RspBody响应体示例:

{
    ....
    "AllowedLoginInterfaces": {
        ....,
        "InterChassis": ["Web", "Redfish"]
    }
}

3、变更资源协作接口 bmc.kepler.CertificateService.Certificate

详细描述

  • 场景1:扩展属性 CertificateUsageType 的枚举值范围
变更类型 属性名称 签名 只读 变化通知 属性描述 访问权限 属性来源 持久化类型 变更影响
变更 CertificateUsageType u false false 代表单本证书的使用类型:
变更前:
ManagerCACertificate: 0
ManagerSSLCertificate: 1
ManagerAccountCertificate: 2
ManagerCMPCertificate: 3
ManagerFirmwareCertificate: 4
TrustedComponentCertificate: 5

变更后:
ManagerCACertificate: 0
ManagerSSLCertificate: 1
ManagerAccountCertificate: 2
ManagerCMPCertificate: 3
ManagerFirmwareCertificate: 4
TrustedComponentCertificate: 5
InterChassisAuthCertificate: 6
read:ReadOnly 基于持久化证书 掉电持久化 资源协作接口 bmc.kepler.CertificateService 中 GetCertPath、ImportCert、ImportCertWithKey、ImportCertificate、ExportCertKeyByFIFO、DeleteCert、GetCertChainInfo 等涉及证书导入、导出、查询的方法入参扩展

4、变更资源协作接口 bmc.kepler.CertificateService ,增加机框内BMC间通信证书认证使能状态字段名称

  • PATH/bmc/kepler/CertificateService

  • Interface: bmc.kepler.CertificateService

  • 变化类型:新增属性字段

  • 新增属性字段

属性名称 签名 只读 变化通知 属性描述 访问权限 持久化类型
InterChassisCertificateAuthEnabled b False False 机框内BMC间通信证书认证使能 Read: ReadOnly
Write:UserMgmt
掉电持久化

评审结论

1、同意扩展资源协作接口 bmc.kepler.AccountService.CertificateAuthentication 下的属性 “InterChassisValidation“ 枚举取值范围

新增”Whitelist”,代表对机框内设备间BMC通信的鉴权请求通过特定的白名单进行校验,仅白名单内的请求可通过,否则被拦截

同意在资源协作接口 bmc.kepler.AccountService.CertificateAuthentication 下新增方法 ManageInterChassisWhitelist,用于管理机框内设备间BMC通信的请求校验白名单

权限为 UserMgmt,请求签名为 sss,响应签名as,通过该方法最多可在单个白名单类型下添加10条白名单。

参数说明如下表:

请求参数:

参数属性名称 签名 取值说明
Operation s 操作类型,取值范围:[“Get”、“Add”、“Remove”]
Type s 白名单类型,取值范围: [“IP”]
Item s 待操作的白名单,当操作类型为"Add"或"Remove"时不可为空字符串。

响应参数:

参数属性名称 签名 取值说明
List as 白名单列表,代表完成对应操作后当前白名单类型的白名单全集

2、同意在 Rest 接口 /UI/Rest/AccessMgnt/AdvancedSecurity 中新增响应值 AllowedLoginInterfaces/InterChassis,代表机框内设备间BMC通信使用的账户可用的登陆接口,该属性仅在机框内BMC间通信使能打开时可见。

3、同意扩展 CertificateUsageType 枚举类的取值范围,用于呈现机框内 BMC 间通信证书的用途

4、同意在资源协作接口 bmc.kepler.CertificateService 下新增属性 InterChassisCertificateAuthEnabled,表示机框内BMC间通信证书认证使能状态

属性签名b,访问权限为 Read: ReadOnly | Write:UserMgmt,掉电持久化存储

遗留问题

【预审】

  1. 这里的属性是 string,新增的属性会有兼容性问题吧,需要补充一下兼容性策略

InterChassisValidation 属性来源仅 CSR,不支持北向接口设置,具体校验策略与产业绑定,调整为不持久化,默认LLDP,以解决兼容性问题