背景
客户诉求SSH专用用户的密码长度限制与linux配置一致。由于用户的密码同时需要用于ipmi,当前仅支持长度1~20,不满足客户使用诉求
触发原因
新需求
关联ISSUE
决策点
1、新增资源协作属性
path:/bmc/kepler/AccountService/PasswordPolicys/:AccountType
interface:bmc.kepler.AccountService.PasswordPolicy
变化类型:新增属性
应用场景:定制组件打开使能后可支持对应账户类型使用长密码
| 属性名称 | 变化类型 | 签名 | 取值范围 | 读写&权限 | 持久化 | 变化通知 | 接口说明 | 接口约束 |
|---|---|---|---|---|---|---|---|---|
| AccountType | 新增属性 | s | [“Local”、“SnmpCommunity”、“VNC”、“Oem”] | 只读属性 | 不持久化 | 否 | 账户类型 | |
| MaxPasswordLength | 新增属性 | u | 最大值:512 | R:ReadOnly W:SecurityMgmt | 临时持久化 | 否 | 本账户类型可支持的最大密码长度 | 仅AccountType为Oem可调整最大密码长度 本属性最小值限制由业务基于不同账户类型进行区分 |
该属性默认值与最小边界值由业务基于账户类型(AccountType)进行区分:
本地账户(Local)默认密码最大长度:20
SNMP团体名(SnmpCommunity)默认密码最大长度:32
VNC默认密码最大长度:8
OEM账户(Oem)默认密码最大长度:20
2、修改bmc.kepler.AccountService.ManagerAccount资源协作方法入参限制
path:/bmc/kepler/AccountService/Accounts/:ManagerAccountId
interface:bmc.kepler.AccountService.ManagerAccount
变化类型:修改属性限制
应用场景:设置密码
| 方法名称 | 变化类型 | 请求签名 | 响应签名 | 读写&权限 | 持久化 | 变化通知 | 接口说明 | 接口约束 |
|---|---|---|---|---|---|---|---|---|
| ChangePwd | 修改属性取值范围 | ay | 无 | ConfigureSelf | RPC方法,不涉及 | RPC方法,不涉及 | 修改账户密码 请求参数: Password:ay 待设置的密码 长度限制变更:1~32 → 1~512 |
管理员账户可以修改所有账户密码,其它账户只能设置自己的密码 实际密码长度校验改由业务内部进行校验处理 |
| ChangeSnmpPwd | 修改属性取值范围 | ay | 无 | ConfigureSelf | RPC方法,不涉及 | RPC方法,不涉及 | 修改本地账户SNMP密码 请求参数: Password:ay 待设置的密码 长度限制变更:1~32 → 1~512 |
管理员账户可以修改所有账户密码,其它账户只能设置自己的密码 实际密码长度校验改由业务内部进行校验处理 |
3、修改bmc.kepler.AccountService.ManagerAccounts资源协作方法入参限制
path:/bmc/kepler/AccountService/Accounts
interface:bmc.kepler.AccountService.ManagerAccounts
变化类型:修改属性限制
应用场景:新建账户
| 方法名称 | 变化类型 | 请求签名 | 响应签名 | 读写&权限 | 持久化 | 变化通知 | 接口说明 | 接口约束 |
|---|---|---|---|---|---|---|---|---|
| New | 修改属性取值范围 | ysayiaii | y | UserMgmt | RPC方法,不涉及 | RPC方法,不涉及 | 新建账户 请求参数: AccountId: y UserName: s Password:ay 长度限制变更:1~32 → 1~512 RoleId: i LoginInterface: ai FirstLoginPolicy: i 响应参数: 账户Id:y |
管理员可新建账户 实际密码长度校验改由业务内部进行校验处理 |
4、修改bmc.kepler.AccountService.ManagerAccount.SnmpUser资源协作方法入参限制
path:/bmc/kepler/AccountService/Accounts/:ManagerAccountId
interface:bmc.kepler.AccountService.ManagerAccount.SnmpUser
变化类型:修改属性限制
应用场景:修改账户SNMP鉴权算法
| 方法名称 | 变化类型 | 请求签名 | 响应签名 | 读写&权限 | 持久化 | 变化通知 | 接口说明 | 接口约束 |
|---|---|---|---|---|---|---|---|---|
| SetAuthenticationProtocol | 修改账户SNMP鉴权算法 | yss | 无 | ConfigureSelf | RPC方法,不涉及 | RPC方法,不涉及 | 修改账户SNMP鉴权算法,同时需要刷新SNMP鉴权密码和SNMP加密免 请求参数: SNMPAuthenticationProtocol: y AuthPassword: s 长度限制变更:1~32 → 1~512 EncryPassword:ay 长度限制变更:1~32 → 1~512 |
管理员账户可以修改所有账户的配置,其它账户只能设置自己的配置 实际密码长度校验改由业务内部进行校验处理 |
5、修改bmc.kepler.SessionService.Sessions资源协作方法入参限制
path:/bmc/kepler/SessionService/Sessions
interface:bmc.kepler.SessionService.Sessions
变化类型:修改属性限制
应用场景:通过账户密码鉴权创建会话
| 方法名称 | 变化类型 | 请求签名 | 响应签名 | 读写&权限 | 持久化 | 变化通知 | 接口说明 | 接口约束 |
|---|---|---|---|---|---|---|---|---|
| NewSession | 修改属性取值范围 | sayyssa{ss} | sss | ConfigureSelf | RPC方法,不涉及 | RPC方法,不涉及 | 通过账户密码鉴权创建会话 请求参数: UserName: s Password:ay 长度限制变更:1~32 → 1~512 SessionType: y Domain: s Ip: s ExtraData: a{ss} 响应参数: token:s csrf_token:s session_id:s |
评审结论
决策点1:同意新增资源协作属性
path:/bmc/kepler/AccountService/PasswordPolicys/:AccountType
interface:bmc.kepler.AccountService.PasswordPolicy
① 属性名称:AccountType
签名:s
取值范围: [“Local”、“SnmpCommunity”、“VNC”、“Oem”]
读写权限:只读
② 属性名称:MaxPasswordLength
签名:u
取值范围:最大值512
说明:
该属性默认值与最小边界值由业务基于账户类型(AccountType)进行区分,沿用历史业务中明确的最大长度:
本地账户(Local):20
SNMP团体名(SnmpCommunity):32
VNC:8
OEM账户(Oem):20
决策点2:同意变更资源协作接口
path:/bmc/kepler/AccountService/Accounts/:ManagerAccountId
interface:bmc.kepler.AccountService.ManagerAccount
①方法名称:ChangePwd
变更类型:修改属性取值范围
变更参数:Password
变更前:长度限制 1 ~ 32
变更后:长度限制 1 ~ 512
②方法名称:ChangeSnmpPwd
变更类型:修改属性取值范围
变更参数:Password
变更前:长度限制 1 ~ 32
变更后:长度限制 1 ~ 512
决策点3:同意变更资源协作接口
path:/bmc/kepler/AccountService/Accounts
interface:bmc.kepler.AccountService.ManagerAccounts
方法名称:New
变更类型:修改属性取值范围
变更参数:Password
变更前:长度限制 1 ~ 32
变更后:长度限制 1 ~ 512
决策点4:同意变更资源协作接口
path:/bmc/kepler/AccountService/Accounts/:ManagerAccountId
interface:bmc.kepler.AccountService.ManagerAccount.SnmpUser
方法名称:SetAuthenticationProtocol
变更类型:修改属性取值范围
① 变更参数:AuthPassword
变更前:长度限制 1 ~ 32
变更后:长度限制 1 ~ 512
② 变更参数:EncryPassword
变更前:长度限制 1 ~ 32
变更后:长度限制 1 ~ 512
决策点5:同意变更资源协作接口
path:/bmc/kepler/SessionService/Sessions
interface:bmc.kepler.SessionService.Sessions
方法名称:NewSession
变更类型:修改属性取值范围
变更参数:Password
变更前:长度限制 1 ~ 32
变更后:长度限制 1 ~ 512
遗留问题
Q:MaxPasswordLength 属性设置过小与密码复杂度校验能力出现冲突的场景如何解决
A:开启密码复杂度校验能力后,会对密码的最小长度进行限制。MaxPasswordLength 属性的左边界取不同账户类型历史业务中明确的最大长度,由业务进行判断处理。不会与密码复杂度校验能力出现冲突。