【已评审】新增允许的登录接口资源树/定制项属性

ISSUE链接:

【平台】提供禁止创建特定登录接口用户的能力-account-GitCode

背景:

支持部分客户禁止创建含有指定登录接口用户的诉求:
某客户要求对ssh,串口用户独立管理,禁止其他用户开启ssh/串口

决策点:

  1. 资源协作接口: bmc.kepler.AccountService.AccountPolicy接口新增AllowedLoginInterfaces属性;
  2. 资源协作接口: bmc.kepler.AccountService.RemoteGroups接口新增AllowedLoginInterfaces属性;
  3. 新增定制项BMCSet_LocalAccountAllowedLoginInterfaces、BMCSet_RemoteGroupAllowedLoginInterfaces;
  4. 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,表示本地用户允许使能的登录接口类型