背景介绍
背景
历史版本Set/GetUserAccess未按照标准实现,用于设置用户权限,当前已将Set/GetUserAccess按照标准实现优化为设置用户LAN通道权限,同时兼容历史功能。
1.单通道场景(仅有LAN1):
绑定用户权限与通道权限,即设置通道LAN1权限,同步设置用户权限;
2.多通道场景下(即LAN1、LAN2均使能):
解绑用户权限和通道权限
SetUserAccess仅可用于设置通道权限,不再同步修改用户权限。而ipmitool user priv命令底层调用SetUserAccess命令设置用户权限,导致ipmitool user priv带内使用时需要传入channel number参数才可使用(若不手动传入channel number,该命令会使用当前通道号,即带内通道号,校验通道时会被拦截),并且在单通道场景下同时设置通道权限和用户权限;多通道场景下ipmitool user priv仅可设置通道权限
现状
1.SetUserAccess命令按照标准实现为设置用户LAN通道权限
2.ipmitool user priv命令调用SetUserAccess用于设置用户权限,但当ipmitool user priv命令带内发送时,所传入的通道号为带内的通道号,由于通道号不匹配而被拦截导致无法使用该命令带内设置用户权限
3.多通道场景下,ipmi创建用户为无权限用户,使用ipmitool user priv命令设置用户权限后,用户仍不可用,发送ipmi命令失败(原因是多通道场景下,通道权限与用户权限解绑,ipmitool user priv命令实际用于设置通道LAN1 or LAN2的权限,用户权限仍然为no_access)
4.多通道场景下,ipmi命令创建用户为无权限用户,LAN1权限为no_access,设置LAN2权限为administrator,但ipmi命令发送失败,web无法登录(原因是通道权限与用户权限解绑,通道权限为administrator,但用户本身权限为no_access)
5.单通道场景下,由于用户权限和通道权限绑定,使用ipmitool user priv命令时可能出现设置通道权限成功,而设置用户权限失败导致抛错,从而造成通道权限与用户权限不匹配的问题(原因是设置用户权限与设置通道权限异常场景差异较大)
诉求
1.多通道场景下,使用LAN2通道发送ipmi命令创建用户后,使用ipmitool user priv命令设置用户权限与通道权限,使用user list 2显示用户有权限,该用户能登录web,ipmi命令可用
2.多通道场景,用户在LAN1有权限,LAN2无权限,web可登录(需要将用户权限与LAN1通道权限绑定可实现)
3.多通道场景,ipmi接口可使用(需要将用户权限与LAN1通道权限绑定可实现)
基于以上背景,有以下评审点:
评审点:
1.方案一:ipmitool user priv命令带内使用需要带上channel number参数发送,否则不允许发送,多通道场景下使用该命令时,通道1权限与用户权限绑定
2.方案二:ipmitool user priv命令兼容历史功能,支持带内发送不带channel number参数,设置用户权限与通道权限(此时多通道场景下,用户权限会随着不同通道的权限变更而变更)
推荐方案一
变化类型:ipmi接口变更
应用场景:ipmi接口设置用户权限
详细描述:
新旧版本及友商实现对比
| ipmitool user priv (userid) (privilege) [(channel number)] | 老版本带内发送 | 新版本带内发送 | 友商A带内发送 |
|---|---|---|---|
| ipmitool user priv 5 15 | 发送成功,设置用户权限 | IPMI command failed: Command not supported in present state | |
| Set Privilege Level command failed (user 5) | IPMI command failed: Parameter out of range | ||
| Set Privilege Level command failed (user 5) | |||
| ipmitool user priv 5 15 1 | Set Privilege Level command successful (user 5) | Set Privilege Level command successful (user 5) | Set Privilege Level command successful (user 5) |
变更影响:
| 方案 | 优点 | 缺点 | 对伙伴的影响 | 对开源社区的影响 | 兼容性影响 | 对装备的影响 |
|---|---|---|---|---|---|---|
| 方案一 | 符合标准 | 变更后,单通道场景下带内无法使用ipmitool user priv命令设置用户权限(需要带上channel number参数才能使用)(已确认:伙伴使用时会带上通道号使用) | 暂时无法评估 | 按照标准实现,更符合开源社区要求 | 有影响,历史功能变化 | 装备直接使用命令字0x06 0x43,未使用ipmitool user priv命令,不影响装备 |
| 方案二 | 不影响历史功能 | 实现不符合标准,用户权限跟随不同通道权限变更 | 无影响 | 未按标准实现 | 兼容历史功能无影响 | 无影响 |
评审结论
同意变更ipmitool user priv 命令:带内使用该命令时需要带上参数channel number