【已评审】支持通过Redfish标准接口ChangePasword修改账户密码

背景

历史仅提供了对 ManagerAccount 资源通过PATCH的形式修改账户密码,该操作无法进行二次认证,与安全规范存在差异。

经分析,当前 Redfish 标准已支持在 ManagerAccount 资源下提供 ChangePassword 方法进行带二次认证的密码修改,并在 AccountService 资源中提供属性 RequireChangePasswordAction 来判断是否拦截PATCH修改账户密码的形式。

关联ISSUE

[缺陷]: Redfish通过PATCH修改账户密码无二次认证行为

整体方案

  1. 新增资源协作属性 RequireChangePasswordAction ,默认值false,保障新增该能力后的兼容性
  2. 实现 AccountService 资源下的 RequireChangePasswordAction 属性,用于设置/查询资源协作属性 RequireChangePasswordAction
  3. 新增 ManagerAccount 资源标准 Action:ManagerAccount.ChangePassword 接口,提供修改账户密码的能力

评审点

  1. 新增资源协作接口属性 RequireChangePasswordAction,代表是否要求仅可使用 ManagerAccount.ChangePassword 的方式来修改账户密码
  2. 新增Redfish标准属性 RequireChangePasswordAction
  3. 新增 ManagerAccount 资源标准 Action:/redfish/v1/AccountService/Accounts/:manager_account_id/Actions/ManagerAccount.ChangePassword

详细描述

评审点1:新增资源协作接口属性 RequireChangePasswordAction,代表是否要求仅可使用 ManagerAccount.ChangePassword 的方式来修改账户密码

path(已有):/bmc/kepler/AccountService
interface(已有):bmc.kepler.AccountService
变更类型:新增属性

属性名称 变化类型 签名 默认值 取值范围 读写&权限 持久化 变化通知 接口说明 接口约束
RequireChangePasswordAction 新增属性 b false true、false r:ReadOnly,w:UserMgmt 掉电持久化 true 说明是否仅可通过 ManagerAccount.ChangePassword 接口来修改账户密码

评审点2:AccountService 资源新增标准属性 RequireChangePasswordAction

URI:/redfish/v1/AccountService
@odata.type:AccountService.v1_15_1
操作类型:GET/PATCH
变化类型:新增属性

属性名称 取值类型 取值范围 默认值 操作权限 是否频繁变化并需要屏蔽变化事件 约束
RequireChangePasswordAction boolean true、false false GET:ReadOnly
PATCH:UserMgmt

说明: 当 RequireChangePasswordAction 属性设为 true 后,通过 PATCH ManagerAccount 资源修改用户密码时,抛出错误 AccountNotModified(已有)

错误信息:

"AccountNotModified": {
    "Description": "Indicates that the modification requested for the account was not successful.",
    "Message": "The account modification request failed.",
    "Severity": "Warning",
    "NumberOfArgs": 0,
    "Resolution": "The modification may have failed due to permission issues or issues with the request body.",
    "HttpStatusCode": 400,
    "IpmiCompletionCode": "0xFF",
    "SnmpStatusCode": 5,
    "TraceDepth": 0
}

评审点3:新增 ManagerAccount 资源标准 Action 用于修改账户密码

URI: /redfish/v1/AccountService/Accounts/:manager_account_id/Actions/ManagerAccount.ChangePassword
操作类型: POST
@odata.type:ManagerAccount.v1_11_0
操作权限: ConfigureSelf
变化类型:新增方法

请求参数:

属性名称 取值类型 取值范围 默认值 约束 说明
NewPassword string 最大长度512,业务中基于不同用户类型进行密码规则校验 必需参数 待设置的新密码
SessionAccountPassword string 最大长度512 必需参数 当前会话对应账户的密码,用于二次认证

评审结论

通过,具体结论如下:

  1. 同意资源协作接口 bmc.kepler.AccountService 增加资源协作属性 RequireChangePasswordAction,用于判断 Redfish 是否仅可使用 ChangePassword 的 Action 来进行账户密码修改操作;属性签名为 b,默认值为 false,属性支持读写,读权限为 ReadOnly,写权限为 UserMgmt,变更需要发送信号通知并且记录安全日志
  2. 同意 Redfish 接口 /redfish/v1/AccountService 新增标准属性RequireChangePasswordAction;属性类型为 boolean,支持 GET/PATCH,GET 权限为ReadOnly,PATCH 权限为 UserMgmt;对应 schema 版本为 AccountService.v1_15_1
  3. 同意 Redfish 新增标准 Action /redfish/v1/AccountService/Accounts/:manager_account_id/Actions/ManagerAccount.ChangePassword,对应 schema 版本为 ManagerAccount.v1_11_0;Action 有且仅有两个必需的参数:
    (1) NewPassword,待设置的新密码,最大长度512,由业务进行复杂度等校验
    (2) SessionAccountPassword,当前会话对应账户的密码,用于进行二次认证

遗留问题