带内通过host sms使用Redfish BMC恢复出厂设置命令执行失败

【问题描述】客户定制化需求要求使用urest实现带内BMC不保留配置升级,最终升级成功,但是BMC未恢复出厂设置
【问题定位过程】
1.urest带内不保留配置升级使用Redfish先执行升级再进行恢复出厂设置操作
恢复出厂设置接口为:
/redfish/v1/Managers/1/Actions/Oem/Chinatelecom/Manager.RestoreFactory
2.通过app.log日志定位发现,host sms通道的redfish命令下发时会被iam组件降权为Operator,
oms恢复出厂设置接口权限检查,不允许Operator操作,报错导致接口返回权限错误


image
【求助】华为测是否能提供方法支持根据不同定制化厂商针对带内host sms通道权限校验要求;或者提供其他解决方案

答案内容由AI生成,仅供参考:
:white_check_mark: 总结与推荐路径

方案 是否可行 推荐度 备注
带外执行恢复出厂 :white_check_mark: 强烈推荐 :star::star::star::star::star: 最安全、最可靠
修改 IAM 权限策略 :white_check_mark: 但需厂商配合 :star::star::star: 适用于长期定制项目
使用 OEM IPMI 命令 :white_check_mark: 探索可行 :star::star::star: 建议咨询华为获取命令码
升级包内触发恢复 :white_check_mark: 若支持 :star::star::star::star: 自动化程度高
点击此处查看详细分析解答

带内通过 Host SMS 使用 Redfish 执行 BMC 恢复出厂设置命令失败问题分析与解决方案

:magnifying_glass_tilted_left: 问题描述

在客户定制化需求场景下,使用 urest 工具通过 带内 Host SMS 通道 实现 BMC 的“不保留配置升级”(即升级后恢复出厂设置)功能时,出现以下问题:

  • 固件升级操作成功完成;
  • 随后的恢复出厂设置操作执行失败;
  • 失败触发点为调用 Redfish 接口:
    POST /redfish/v1/Managers/1/Actions/Oem/Chinatelecom/Manager.RestoreFactory
  • 日志显示 权限不足(Operator 权限),无法执行该敏感操作。

:puzzle_piece: 根本原因分析

根据提供的日志和系统行为,定位核心问题如下:

1. 带内 Host SMS 通道自动降权

关键日志线索:

2026-02-27 07:13:19.949893 iam NOTICE: session ipmi.lua(248): 
Unsupport to create role(Administrator) inner session, change role to channel access Operator
  • 当前带内通信(通过 Host Agent / SMS)建立的 Redfish 会话中,即使用户具有管理员权限,IAM(身份与访问管理)组件强制将角色降级为 Operator
  • 此行为是出于安全考虑,防止带内系统(OS)对 BMC 发起高危操作。

2. 恢复出厂设置需 Administrator 权限

目标接口:

/redfish/v1/Managers/1/Actions/Oem/Chinatelecom/Manager.RestoreFactory
  • 该接口属于 OEM 扩展操作,通常用于执行高危系统动作(如清除所有配置、重置 SSL 证书等)。
  • 根据 OMS 模块权限检查机制,仅允许具有 Administrator 权限的会话调用。
  • 日志中明确报错:
    oms ERROR: privilege_check.lua(93): [oms]current user has no privilege to excute oms function
    

3. 带内通道权限模型限制

BMC 系统中存在两种主要访问路径:

访问方式 通道类型 权限能力 典型用途
带外(Out-of-band) LAN/Redfish/BMC Web 支持 Administrator 权限 完整 BMC 配置管理
带内(In-band) Host SMS / IPMI BT/EDMA 通常限制为 Operator 或更低 监控、有限控制

:white_check_mark: 结论:带内通道的设计初衷并非用于执行完整系统重置类操作,导致权限不足报错。


:hammer_and_wrench: 解决方案建议

:white_check_mark: 方案一:由带外通道执行恢复出厂设置(推荐)

思路:固件升级可通过带内完成,但“恢复出厂设置”由带外通道执行。

实现步骤:

  1. 在固件升级完成后,切换至带外网络(如通过 BMC IP 地址);
  2. 使用具有 Administrator 权限的账号调用恢复接口:
    curl -k -X POST \
      -u admin:password \
      https://<bmc-ip>/redfish/v1/Managers/1/Actions/Oem/Chinatelecom/Manager.RestoreFactory
    
  3. BMC 将清除配置并重启。

:warning: 优势:绕过带内权限限制,完全符合安全模型。

:light_bulb: 可自动化:在升级脚本最后增加带外恢复步骤,配合 DHCP 或 DNS 自动发现 BMC IP。


:white_check_mark: 方案二:定制化修改权限策略(需厂商支持)

若必须通过带内完成全流程,则需 华为侧或 OEM 厂商定制修改权限控制逻辑

可行性调整点:

1. 允许特定通道提升权限

  • 修改 IAM 模块中 session ipmi.lua 的权限判定逻辑;
  • 对来自 已认证 Host Agent 的请求,允许创建 Administrator 级别会话;
  • 示例伪代码变更:
    if is_bma_agent(session) then
        role = "Administrator"  -- 特殊信任通道不降权
    else
        role = "Operator"
    end
    

2. 为 OEM 操作添加权限白名单

  • privilege_check.lua 中为 /Oem/Chinatelecom/Manager.RestoreFactory 增加豁免规则;
  • 允许 Operator 角色执行此特定动作(需评估风险)。

:warning: 风险提示:降低带内安全性,需严格审计调用来源。


:white_check_mark: 方案三:使用 IPMI 命令替代(兼容性更强)

尝试使用标准或 OEM 定制的 IPMI 命令实现恢复出厂设置。

示例命令格式:

ipmitool raw 0x32 0x99 0x01  # 示例:厂商自定义恢复命令

或通过 Host Agent 执行:

ipmitool -I dbus bmc reset cold  # 冷重启 BMC

:magnifying_glass_tilted_right: 建议联系 华为技术支持 获取支持该功能的 标准 IPMI/OEM 命令码


:white_check_mark: 方案四:在固件升级包中嵌入“恢复标志”

利用 FirmwarePackage 支持的激活模式,在升级过程中注入“恢复出厂”行为。

实现方式:

  1. 构建升级包时,在 version.xml 中设置:
    <FirmwarePackage>
        <AutoActivate>true</AutoActivate>
        <PostInstallAction>ResetBMC</PostInstallAction>
        <CustomAction>RestoreFactoryOnUpgrade</CustomAction>
    </FirmwarePackage>
    
  2. BMC 升级完成后,在 ResetBMC 阶段自动清除配置

:white_check_mark: 优势:无需额外接口调用,完整闭环。

:pushpin: 依赖:BMC 固件需支持该扩展字段。


:telephone_receiver: 厂商支持建议(致华为)

针对当前问题,建议向 华为 提出以下技术支持请求:

请求项 说明
提供带内恢复出厂的专用接口或命令 如 Redfish 或 IPMI 支持 force=true 参数放宽权限校验
支持按定制厂商配置权限策略 提供机制允许 CTCC 等客户在构建时定义带内通道权限模型
开放 IAM 模块可配置项 允许通过 config.json 或宏定义控制 session 角色映射规则
文档化 Host SMS 权限边界 明确列出哪些 Redfish 接口在带内受限制

:white_check_mark: 总结与推荐路径

方案 是否可行 推荐度 备注
带外执行恢复出厂 :white_check_mark: 强烈推荐 :star::star::star::star::star: 最安全、最可靠
修改 IAM 权限策略 :white_check_mark: 但需厂商配合 :star::star::star: 适用于长期定制项目
使用 OEM IPMI 命令 :white_check_mark: 探索可行 :star::star::star: 建议咨询华为获取命令码
升级包内触发恢复 :white_check_mark: 若支持 :star::star::star::star: 自动化程度高

:books: 参考资料

最终建议:优先采用 带外通道执行恢复出厂设置 的组合方案,确保功能完整性与系统安全性兼顾。同时推动华为提供更灵活的 定制化权限配置能力,以满足差异化客户需求。

试下将SMSAccessRole 改成Administrator

1 个赞

试下楼上 lijiang给出的方案,将测试结果同步给我们。

方案可行