【已评审】支持新增自定义用户角色设置

支持新增自定义用户角色设置

ISSUE链接:

背景:

某互联网客户需要支持新增自定义用户角色, 当前4个自定义用户角色不满足使用

决策点:

  1. 资源协作接口/bmc/kepler/AccountService/Roles新增bmc.kepler.AccountService.Roles接口,接口新增New方法;新增ExtendedCustomRoleEnabled属性

  2. 资源协作接口/bmc/kepler/AccountService/Roles/${RoleId} bmc.kepler.AccountService.Role接口下新增Delete方法;

  3. <V2已实现>Web-Rest支持/UI/Rest/AccessMgnt/RightManagement的POST接口;

  4. <V2已实现>Web-Rest新增/UI/Rest/AccessMgnt/RightManagement/${RoleId}接口,支持DELETE;

  5. Web-Rest /UI/Rest/AccessMgnt/AdvancedSecurity接口新增属性ExtendedCustomRoleEnabled;

  6. <V2特定客户已实现>导入导出项UserRole的Id范围支持CustomRole5~CustomRole16;增加配置导入子项EnabledStatus

兼容性风险:

  1. 升级版本新增自定义角色, 并有用户/用户组使用此角色后, 回退旧版本会发生异常
    计划先预埋能力,能力默认不开启,由客户组件仓做开启操作

详细描述:

一、资源协作接口/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

1 个赞