关于用户下ipmi标准规范的讨论

当前对部分命令(如user access)实现与标准不是完全一致,在此先记录下来

根据IPMI规范中的描述,当通过 Set User Access命令禁用用户的IPMI Messaging权限时,以下类型的IPMI命令将受到影响:1


受影响的命令(不可用)

  1. 通用IPMI命令(非特定于任何负载类型或会话管理)
    这些命令属于IPMI消息负载(IPMI Messaging Payload)的范畴,当用户被禁用IPMI Messaging时,无法执行此类命令5。例如:

    • Get SEL Time(获取系统事件日志时间)
    • Get Device ID(获取设备标识信息,虽然部分场景可能有争议,但若未关联特定负载则会被禁用)
    • Chassis Control(机箱控制,如开机/关机)
    • Sensor Reading(传感器读数)
    • User Management Commands(用户管理命令,如Set User Password,需结合具体实现)

    关键点:所有**不依赖特定负载类型(如SOL、RMCP+)**的IPMI命令均属于此范围。


不受影响的命令(仍可用)

  1. 与SOL(Serial Over LAN)相关的命令 4
    若用户启用了SOL负载类型(通过Set User Payload Access配置),则以下命令仍可用:3
    • Get SOL Configuration Parameters(获取SOL配置参数)
    • Activate SOL Payload(激活SOL负载)
    • Deactivate SOL Payload(停用SOL负载)
  2. 会话管理相关命令
    即使禁用IPMI Messaging,以下会话管理命令仍可用:
    • Close Session(关闭会话)
    • Get Session Challenge(获取会话挑战值)
    • Get Channel Authentication Capabilities(获取通道认证能力)
  3. 负载管理基础命令
    以下与负载激活/管理相关的命令不受影响(即使禁用IPMI Messaging):
    • Deactivate Payload(停用负载)
    • Get Payload Activation Status(获取负载激活状态)
    • Set Session Privilege Level(设置会话权限级别)

规范依据

  1. IPMI Messaging的定义
    IPMI Messaging特指不依赖特定负载类型的通用IPMI命令。禁用后,用户仅能执行与已启用负载类型(如SOL)或会话管理直接相关的命令。
  2. 负载类型与权限分离
    • 负载类型权限(如SOL)通过Set User Payload Access配置(知识片段9、10)10。
    • IPMI Messaging权限通过Set User Access的第4位配置(知识片段2、4、7)9。
  3. 会话管理命令的特殊性
    IPMI消息负载(IPMI Messaging)始终被接受,但具体命令的可用性由用户权限决定。会话管理命令(如Close Session)属于系统核心功能,因此不受IPMI Messaging权限限制。

总结

  • 禁用IPMI Messaging后:用户只能执行与已启用的负载类型(如SOL)和会话管理相关的命令,所有通用IPMI命令将被阻断
  • 典型场景:若用户仅需访问SOL功能而无需执行系统管理操作(如查看传感器数据或修改配置),可通过禁用IPMI Messaging并启用SOL负载来限制权限。

当前openUBMC实现将禁用IPMI Messaging实现为禁用用户,导致所有的ipmi命令都无法发送,实际依赖特定负载的命令也无法发送
实际友商也并未完全依照规范实现

4 个赞