答案内容由AI生成,仅供参考:
总结与推荐路径
| 方案 | 是否可行 | 推荐度 | 备注 |
|---|---|---|---|
| 带外执行恢复出厂 | 最安全、最可靠 | ||
| 修改 IAM 权限策略 | 适用于长期定制项目 | ||
| 使用 OEM IPMI 命令 | 建议咨询华为获取命令码 | ||
| 升级包内触发恢复 | 自动化程度高 |
点击此处查看详细分析解答
带内通过 Host SMS 使用 Redfish 执行 BMC 恢复出厂设置命令失败问题分析与解决方案
问题描述
在客户定制化需求场景下,使用 urest 工具通过 带内 Host SMS 通道 实现 BMC 的“不保留配置升级”(即升级后恢复出厂设置)功能时,出现以下问题:
- 固件升级操作成功完成;
- 随后的恢复出厂设置操作执行失败;
- 失败触发点为调用 Redfish 接口:
POST /redfish/v1/Managers/1/Actions/Oem/Chinatelecom/Manager.RestoreFactory - 日志显示 权限不足(Operator 权限),无法执行该敏感操作。
根本原因分析
根据提供的日志和系统行为,定位核心问题如下:
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 或更低 | 监控、有限控制 |
结论:带内通道的设计初衷并非用于执行完整系统重置类操作,导致权限不足报错。
解决方案建议
方案一:由带外通道执行恢复出厂设置(推荐)
思路:固件升级可通过带内完成,但“恢复出厂设置”由带外通道执行。
实现步骤:
- 在固件升级完成后,切换至带外网络(如通过 BMC IP 地址);
- 使用具有 Administrator 权限的账号调用恢复接口:
curl -k -X POST \ -u admin:password \ https://<bmc-ip>/redfish/v1/Managers/1/Actions/Oem/Chinatelecom/Manager.RestoreFactory - BMC 将清除配置并重启。
优势:绕过带内权限限制,完全符合安全模型。
可自动化:在升级脚本最后增加带外恢复步骤,配合 DHCP 或 DNS 自动发现 BMC IP。
方案二:定制化修改权限策略(需厂商支持)
若必须通过带内完成全流程,则需 华为侧或 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角色执行此特定动作(需评估风险)。
风险提示:降低带内安全性,需严格审计调用来源。
方案三:使用 IPMI 命令替代(兼容性更强)
尝试使用标准或 OEM 定制的 IPMI 命令实现恢复出厂设置。
示例命令格式:
ipmitool raw 0x32 0x99 0x01 # 示例:厂商自定义恢复命令
或通过 Host Agent 执行:
ipmitool -I dbus bmc reset cold # 冷重启 BMC
建议联系 华为技术支持 获取支持该功能的 标准 IPMI/OEM 命令码。
方案四:在固件升级包中嵌入“恢复标志”
利用 FirmwarePackage 支持的激活模式,在升级过程中注入“恢复出厂”行为。
实现方式:
- 构建升级包时,在
version.xml中设置:<FirmwarePackage> <AutoActivate>true</AutoActivate> <PostInstallAction>ResetBMC</PostInstallAction> <CustomAction>RestoreFactoryOnUpgrade</CustomAction> </FirmwarePackage> - BMC 升级完成后,在 ResetBMC 阶段自动清除配置。
优势:无需额外接口调用,完整闭环。
依赖:BMC 固件需支持该扩展字段。
厂商支持建议(致华为)
针对当前问题,建议向 华为 提出以下技术支持请求:
| 请求项 | 说明 |
|---|---|
| 提供带内恢复出厂的专用接口或命令 | 如 Redfish 或 IPMI 支持 force=true 参数放宽权限校验 |
| 支持按定制厂商配置权限策略 | 提供机制允许 CTCC 等客户在构建时定义带内通道权限模型 |
| 开放 IAM 模块可配置项 | 允许通过 config.json 或宏定义控制 session 角色映射规则 |
| 文档化 Host SMS 权限边界 | 明确列出哪些 Redfish 接口在带内受限制 |
总结与推荐路径
| 方案 | 是否可行 | 推荐度 | 备注 |
|---|---|---|---|
| 带外执行恢复出厂 | 最安全、最可靠 | ||
| 修改 IAM 权限策略 | 适用于长期定制项目 | ||
| 使用 OEM IPMI 命令 | 建议咨询华为获取命令码 | ||
| 升级包内触发恢复 | 自动化程度高 |
参考资料
- Redfish V1 Managers ManagerId Actions Oem Chinatelecom DownloadAllLog(类似 OEM 扩展接口)
Recovery Factory Setting方法(知识图谱实体)Bainxin用户执行Reset BMC案例(参考操作流程)- Atlas 300V pro NPU卡信息显示不全 (社区讨论链接,可能有类似案例)
最终建议:优先采用 带外通道执行恢复出厂设置 的组合方案,确保功能完整性与系统安全性兼顾。同时推动华为提供更灵活的 定制化权限配置能力,以满足差异化客户需求。