ISSUE链接:
【平台】提供禁止创建特定登录接口用户的能力-account-GitCode
背景:
支持部分客户禁止创建含有指定登录接口用户的诉求:
某客户要求对ssh,串口用户独立管理,禁止其他用户开启ssh/串口
决策点:
- 资源协作接口: bmc.kepler.AccountService.AccountPolicy接口新增AllowedLoginInterfaces属性;
- 资源协作接口: bmc.kepler.AccountService.RemoteGroups接口新增AllowedLoginInterfaces属性;
- 新增定制项BMCSet_LocalAccountAllowedLoginInterfaces、BMCSet_RemoteGroupAllowedLoginInterfaces;
- web-rest AdvancedSecurity接口新增属性对象:AllowedLoginInterfaces, 对象字段:LocalAccount, RemoteGroup;
详细描述:
一、资源协作接口: bmc.kepler.AccountService.AccountPolicy接口新增AllowedLoginInterfaces属性:
资源路径: /bmc/kepler/AccountService/AccountPolicies/Local
资源接口: bmc.kepler.AccountService.AccountPolicy
应用场景: 本地用户允许开启的登录接口
| 属性名称 | 变化类型 | 签名 | 读写&权限 | 持久化 | 变化通知 | 接口说明 | 接口约束 |
|---|---|---|---|---|---|---|---|
| AllowedLoginInterfaces | 新增属性 | as | R:ReadOnly W:UserMgmt |
掉电持久化 | false | 允许用户开启的登录接口字符串数组 | 取值类型: 字符串数组,[color=#ff0000]至少含有一个元素,且不能只有SFTP[/color] 设置为空表时报错:ArrayPropertyInvalidItem 取值范围: Web SNMP IPMI SSH SFTP Local Redfish |
二、bmc.kepler.AccountService.RemoteGroups接口新增AllowedLoginInterfaces属性:
新增资源Path: /bmc/kepler/AccountService/RemoteGroups
资源Interface: bmc.kepler.AccountService.RemoteGroups
应用场景: 远程用户组允许开启的登录接口
| 属性名称 | 变化类型 | 签名 | 读写&权限 | 持久化 | 变化通知 | 接口说明 | 接口约束 |
|---|---|---|---|---|---|---|---|
| AllowedLoginInterfaces | 新增属性 | as | R:ReadOnly W:UserMgmt |
掉电持久化 | false | 允许远程用户组开启的登录接口字符串数组 | 取值类型: 字符串数组,[color=#ff0000]至少含有一个元素[/color] 设置为空表时报错:ArrayPropertyInvalidItem 取值范围: Web SSH Redfish |
三、新增定制项
定制化项名称: BMCSet_LocalAccountAllowedLoginInterfaces:允许本地用户开启的登录接口 BMCSet_RemoteGroupAllowedLoginInterfaces:允许远程用户组开启的登录接口
| 定制化项名称 | 定制化项 | 归属组件 | 取值说明 | 默认值 | 处理逻辑(伪代码) | 说明 | 实现方式(配置文件导入、IPMI命令) | |
|---|---|---|---|---|---|---|---|---|
| 允许本地用户开启的登录接口 | BMCSet_LocalAccountAllowedLoginInterfaces | account | integer类型,按位表示登录接口: Web:1 SNMP:2 IPMI:4 SSH:8 SFTP:16 Local:64 Redfish:128 |
223 | if(BMCSet_XXXAllowedLoginInterfaces == 空) value = 默认值 End 设置属性AllowedLoginInterface为value的值 |
允许远程用户组开启的登录接口,至少含有一个接口,且不能只有SFTP | 配置文件导入 | |
| 允许远程用户组开启的登录接口 | BMCSet_RemoteGroupAllowedLoginInterfaces | iam | integer类型,按位表示登录接口类型: Web:1 SSH:8 Redfish:128 |
137 | 允许远程用户组开启的登录接口,至少含有一个接口 | 配置文件导入 |
四、web-rest新增属性
uri: /UI/Rest/AccessMgnt/AdvancedSecurity
变化类型: 新增属性
操作类型: GET
应用场景: 前端查询允许的登录接口,决定页面展示的登录接口
| 属性名称 | 取值类型 | 取值范围 | 默认值 | 操作权限 | 约束 |
|---|---|---|---|---|---|
| AllowedLoginInterfaces{ | object | NA | NA | ReadOnly | NA |
| LocalAccount | array | 字符串数组:Web、SNMP、IPMI、SSH、SFTP、Local、Redfish | [“Web”, “SNMP”,“IPMI”, “SSH”, “SFTP”, “Local”, “Redfish”] | ReadOnly | NA |
| RemoteGroup | array | 字符串数组:Web、SSH、Redfish | [“Web”, “SSH”, “Redfish”] | ReadOnly | NA |
| } |
评审结论
决策点1:同意bmc.kepler.AccountService.AccountPolicy接口新增属性
- AllowedLoginInterfaces,表示允许使能的登录接口类型,签名为as,读权限:ReadOnly,写权限:UserMgmt,不发送变更通知事件
决策点2:同意bmc.kepler.AccountService.RemoteGroups接口新增属性
- AllowedLoginInterfaces,表示允许使能的登录接口类型,签名为as,读权限:ReadOnly,写权限:UserMgmt,不发送变更通知事件
决策点3:同意新增定制项
- BMCSet_LocalAccountAllowedLoginInterfaces,用于定制本地用户允许使能的登录接口类型,按位定义登录接口类型,1:Web,2:SNMP,4:IPMI,8:SSH,16:SFTP,64:Local,128:Redfish,支持同时指定多个接口(即按位或处理)
- BMCSet_RemoteGroupAllowedLoginInterfaces,用于定制域用户允许使能的登录接口类型,按位定义登录接口类型,1:Web,8:SSH,128:Redfish,支持同时指定多个接口(即按位或处理)
决策点4:同意在/UI/Rest/AccessMgnt/AdvancedSecurity接口GET操作的响应新增属性
- AllowedLoginInterfaces,类型为object,包含两个子属性
- LocalAccount,类型为array,元素为string,表示本地用户允许使能的登录接口类型
- RemoteGroup,类型为array,元素为string,表示本地用户允许使能的登录接口类型