支持新增自定义用户角色设置
ISSUE链接:
背景:
某互联网客户需要支持新增自定义用户角色, 当前4个自定义用户角色不满足使用
决策点:
-
资源协作接口/bmc/kepler/AccountService/Roles新增bmc.kepler.AccountService.Roles接口,接口新增New方法;新增ExtendedCustomRoleEnabled属性
-
资源协作接口/bmc/kepler/AccountService/Roles/${RoleId} bmc.kepler.AccountService.Role接口下新增Delete方法;
-
<V2已实现>Web-Rest支持/UI/Rest/AccessMgnt/RightManagement的POST接口;
-
<V2已实现>Web-Rest新增/UI/Rest/AccessMgnt/RightManagement/${RoleId}接口,支持DELETE;
-
Web-Rest /UI/Rest/AccessMgnt/AdvancedSecurity接口新增属性ExtendedCustomRoleEnabled;
-
<V2特定客户已实现>导入导出项UserRole的Id范围支持CustomRole5~CustomRole16;增加配置导入子项EnabledStatus
兼容性风险:
- 升级版本新增自定义角色, 并有用户/用户组使用此角色后, 回退旧版本会发生异常
计划先预埋能力,能力默认不开启,由客户组件仓做开启操作
详细描述:
一、资源协作接口/bmc/kepler/AccountService/Roles新增bmc.kepler.AccountService.Roles接口,接口新增New方法:
资源路径: /bmc/kepler/AccountService/Roles
资源接口: bmc.kepler.AccountService.Roles
应用场景: 创建自定义用户角色
BMC权限定义与Redfish权限定义映射关系
| PrivilegeMap配置权限 | 接口九大权限 | 九大权限英文名称 |
|---|---|---|
| Login | 查询功能 | ReadOnly |
| ConfigureUsers | 用户配置 | UserMgmt |
| ConfigureSelf | 配置自身 | ConfigureSelf |
| ConfigureComponents | 常规设置 | BasicSetting |
| OemPowerControl | 电源控制 | PowerMgmt |
| OemSecurityMgmt | 安全配置 | SecurityMgmt |
| OemKvm | 远程控制 | KVMMgmt |
| OemVmm | 远程媒体 | VMMMgmt |
| OemDiagnosis | 调试诊断 | DiagnoseMgmt |
创建自定义用户角色方法
| 字段 | 值 |
|---|---|
| 方法名称 | New |
| 变化类型 | 新增方法 |
| req签名 | a{ss}yasas |
| req说明 | a{ss}:上下文信息 y: RoleId,表示自定义角色Id,取值范围:9~20,分别对应CustomRole5~16 as: AssignedPrivileges,表示支持的标准权限,取值范围为[“ConfigureSelf”, “ReadOnly”, “BasicSetting”, “UserMgmt”] as: OemPrivileges,表示支持的Oem权限,取值范围[“DiagnoseMgmt”, “PowerMgmt”, “SecurityMgmt”, “VMMMgmt”, “KVMMgmt”] |
| rsp签名 | / |
| rsp说明 | / |
| 权限 | UserMgmt |
新增ExtendedCustomRoleEnabled属性
| 字段 | 值 |
|---|---|
| 属性名称 | ExtendedCustomRoleEnabled |
| 变化类型 | 新增属性 |
| 签名 | b |
| 读写&权限 | R:ReadOnly W:UserMgmt |
| 持久化 | 掉电持久化 |
| 变化通知 | false |
| 接口说明 | 支持新增定制自定义角色能力开关 |
| 接口约束 | NA |
二、资源协作接口/bmc/kepler/AccountService/Roles/{id} bmc.kepler.AccountService.Role接口下新增Delete方法:
资源路径: /bmc/kepler/AccountService/Roles/${RoleId}
资源接口: bmc.kepler.AccountService.Role
应用场景: 删除自定义用户角色
| 字段 | 值 |
|---|---|
| 方法名称 | Delete |
| 变化类型 | 新增方法 |
| req签名 | a{ss} |
| req说明 | a{ss}:上下文信息 |
| rsp签名 | / |
| rsp说明 | / |
| 权限 | UserMgmt |
三、Web-Rest接口/UI/Rest/AccessMgnt/RightManagement新增支持POST操作:
uri: /UI/Rest/AccessMgnt/RightManagement
变化类型: 新增接口操作
操作类型: POST
应用场景: 创建自定义用户角色
操作权限: UserMgmt
请求示例
{
"BasicConfigEnabled": false,
"DiagnosisEnabled": false,
"ID": 9,
"PowerControlEnabled": false,
"ReauthKey": "xxx",
"RemoteControlEnabled": false,
"SecurityConfigEnabled": false,
"UserConfigEnabled": false,
"VMMEnabled": false
}
| 参数 | 类型 | 是否必选 | 属性说明 | 取值范围 |
|---|---|---|---|---|
| ID | Integer | 是 | 自定义用户角色ID | 9~14, 16~21(V2的id15被NoAccess占用,此处与V2保持一致9~14对应CustomRole5~10,16~21对应CustomRole11~16) |
| BasicConfigEnabled | Boolean | 是 | 常规设置使能 | true/false |
| DiagnosisEnabled | Boolean | 是 | 调试诊断使能 | true/false |
| PowerControlEnabled | Boolean | 是 | 电源控制使能 | true/false |
| RemoteControlEnabled | Boolean | 是 | 远程控制使能 | true/false |
| SecurityConfigEnabled | Boolean | 是 | 安全配置使能 | true/false |
| UserConfigEnabled | Boolean | 是 | 用户配置使能 | false(不允许开启) |
| VMMEnabled | Boolean | 是 | 远程媒体使能 | true/false |
| ReauthKey | String | 是 | 二次认证密文 | / |
错误说明:
| 字段 | 值 |
|---|---|
| 错误场景 | 增加自定义角色ID已存在 |
| 错误名 | ResourceAlreadyExists |
| Description | Indicates that a resource change or creation was attempted but that the operation cannot proceed because the resource already exists. |
| Message | The requested resource already exists. |
| Severity | Critical |
| Resolution | Do not repeat the create operation as the resource has already been created. |
| HttpStatusCode | 400 |
| SnmpStatusCode | 5 |
| IpmiCompletionCode | 0xff |
四、Web-Rest新增/UI/Rest/AccessMgnt/RightManagement/${RoleId}接口,支持DELETE:
uri: /UI/Rest/AccessMgnt/RightManagement/${RoleId}
RoleId范围: 9~14, 16~21(V2的id15被NoAccess占用,此处与V2保持一致9~14对应CustomRole5~10,16~21对应CustomRole11~16)
变化类型: 新增DELETE接口
操作类型: DELETE
应用场景: 删除自定义用户角色
操作权限: UserMgmt
| 参数 | 类型 | 属性说明 | 取值范围 |
|---|---|---|---|
| ReauthKey | String | 二次认证密文 | / |
五、Web-Rest /UI/Rest/AccessMgnt/AdvancedSecurity接口新增属性ExtendedCustomRoleEnabled:
uri: /UI/Rest/AccessMgnt/AdvancedSecurity
变化类型: 新增属性ExtendedCustomRoleEnabled
操作类型: GET
应用场景: 根据属性校验是否开启定制功能(V2此功能通过定制化Id判断是否开启)
| 字段 | 字段说明 | 类型 | 默认值 |
|---|---|---|---|
| ExtendedCustomRoleEnabled | 新增自定义角色使能标志 | Boolean | false |
六、导入导出项UserRole的Id范围支持CustomRole5~CustomRole16:
| 字段 | 值 |
|---|---|
| 导出项 | UserRole |
| 导出子项 | Id |
| 含义说明 | 角色编号 |
| 约束说明 | 取值类型:字符串 导入导出类型:支持导入和导出 是否支持导出后直接导入生效:是 |
| 取值类型 | string |
| 属性类型 | ImportAndExport |
| 取值说明 | 取值范围: “NoAccess”, “CommonUser”, “Operator”, “Administrator”, “CustomRole${RoleId}”(RoleId:1~16)(默认CustomRole1~CustomRole4,客户可定制CustomRole5~16) |
| 备注 | 1.当Id为[“NoAccess”, “CommonUser”, “Operator”, “Administrator”]时,不可修改权限 2.导入仅支持变更自定义角色的权限配置;“CustomRole${RoleId}”, 3.支持通过导入Id创建5~16号自定义角色 |
补充:
| 字段 | 值 |
|---|---|
| 导出项 | UserRole |
| 导出子项 | EnabledStatus |
| 含义说明 | 角色使能(标志自定义角色的新增/删除) |
| 约束说明 | 取值类型:bool 默认值:true 导入导出类型:支持导入和导出 是否支持导出后直接导入生效:是 |
| 取值类型 | bool |
| 属性类型 | ImportAndExport |
| 取值说明 | 取值范围:true/false |
| 备注 | 1.对于UserRole.Id为CustomRole5~16的配置项: 1)EnabledStatus为true时表示增加角色(当角色已存在时则为修改角色) 2)EnabledStatus为false时表示删除角色 2.对于UserRole.Id为"NoAccess", “CommonUser”, “Operator”, "Administrator"或CustomRole1~4时 1)EnabledStatus仅支持导出,导入时会被忽略 |
评审结论
决策点1:同意新增资源协作接口bmc.kepler.AccountService.Roles,并且新增如下方法和属性
1)新增New方法,请求签名:a{ss}yasas,响应签名:无,权限UserMgmt
2)新增属性ExtendedCustomRoleEnabled,签名b,读权限:ReadOnly,写权限:UserMgmt,默认值为false,不发送变化通知;
决策点2:同意资源协作接口bmc.kepler.AccountService.Role新增Delete方法,无请求签名和响应签名,权限UserMgmt
决策点3:同意webrest接口/UI/Rest/AccessMgnt/RightManagement新增支持POST操作;
决策点4:同意新增webrest接口/UI/Rest/AccessMgnt/RightManagement/${RoleId},且支持DELETE操作
决策点5:同意webrest接口/UI/Rest/AccessMgnt/AdvancedSecurity新增只读属性ExtendedCustomRoleEnabled
决策点6:同意UserRole配置项的Id取值范围扩展支持CustomRole5~CustomRole,同意新增子项EnabledStatus