【已评审】新增资源协作接口扩展框内BMC间通信认证能力

背景

部分产品存在管理板和节点板区分,用户仅需操作管理板,向各节点板下发配置,不需要直接关注各节点板。需要扩展框内通信认证能力以满足管理板通过不同协议访问节点板的诉求。

关联ISSUE

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

整体方案

1、提供独立的框内通信账户,可设置权限、登录接口、导入/删除公钥,用于框内认证授权。
2、框内BMC间通信采用IP白名单+证书的认证方式(用户免密登录),其中IP白名单可以是动态获取(如LLDP报文)、也可以是静态配置,并可以跟随系统配置和运行环境变化修改。

评审点

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

详细描述

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

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

  • 场景2:新增方法 ManageInterChassisWhitelist
变更类型 方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述 访问权限
新增 ManageInterChassisWhitelist sss Operation:s,代表操作类型,取值范围:[“Get“,”Add”,”Remove”]
Type:s,表示白名单类型,取值范围:[“IP”]
Item:s,表示要操作的白名单,最大长度500
当Operation为”Add”时,不可为空字符串或"*";当Operation为”Remove”时,不可为空字符串,此时若传入”*”,代表清空本类白名单;当Operation为“Get”时,本参数被忽略
as List:白名单列表,代表完成对应操作后当前白名单类型的白名单全集 用于管理机框内BMC间通信请求源地址的白名单,仅在白名单中的地址,才允许创建会话。
当InterChassisValidation属性值为”Static”时,通过本方法设置的白名单实时生效;当InterChassisValidation属性值不是”Static”时,通过本方法设置的白名单不会生效。
单个类型的白名单最多支持10条。
UserMgmt

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

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

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

当新增白名单超过最大数量限制时,抛出错误 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 如下变更

1)扩展属性 “InterChassisValidation“ 枚举取值范围,新增”Static”,表示对机框内设备间BMC通信请求源地址白名单采用静态配置

2)新增方法 ManageInterChassisWhitelist**,用于管理机框内设备间BMC通信请求源地址白名单
权限为 UserMgmt,请求签名为 sss,响应签名as,通过该方法最多可在单个白名单类型下添加10条白名单。

参数说明如下表:
请求参数:

参数属性名称 签名 取值说明
Operation s 操作类型,取值范围:[“Get”、“Add”、“Remove”]
Type s 白名单类型,取值范围: [“IP”]
Item s 待操作的白名单,最大长度500
当Operation为”Add”时,不可为空字符串;当Operation为”Remove”时,不可为空字符串,此时若Item传入”*”,代表清空本类白名单;当Operation为“Get”时,本参数被忽略。

响应参数:

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

2、不同意在 Rest 接口 /UI/Rest/AccessMgnt/AdvancedSecurity 中新增响应值 AllowedLoginInterfaces/InterChassis,无使用场景。

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

4、同意在资源协作接口 bmc.kepler.CertificateService 下新增属性 InterChassisCertificateAuthEnabled,表示机框内BMC间通信证书认证使能状态,签名b,访问权限为 Read: ReadOnly | Write:UserMgmt

遗留问题

【预审】

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

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