Redfish、IPMI与服务器带外管理自动化
带外管理控制器在操作系统不可用时仍能提供电源、Console、硬件健康、固件和虚拟介质能力。它也是服务器最高风险入口之一。Redfish用HTTPS和标准化JSON资源替代大量厂商私有脚本,但不同厂商仍存在Schema、Action和OEM扩展差异。
一、带外管理边界
常见平台:
- Dell iDRAC;
- HPE iLO;
- Lenovo XClarity Controller;
- 华为 iBMC;
- 浪潮 BMC;
- Supermicro BMC。
能力包括:
- 电源控制;
- 远程Console;
- 虚拟介质;
- 传感器与事件;
- BIOS/UEFI配置;
- RAID与存储;
- 固件清单和更新;
- 启动顺序;
- 资产清单。
二、为什么优先Redfish
IPMI协议历史悠久,命令简单但数据模型和安全能力有限。Redfish基于HTTPS、REST和JSON,使用可发现资源树和标准Schema,更适合自动化、版本兼容和硬件清单。
IPMI仍可用于旧设备和紧急诊断,但应限制在隔离管理网,禁用不安全版本和默认密码。
三、Redfish资源树
入口通常为:
/redfish/v1/
├── Systems/
├── Chassis/
├── Managers/
├── UpdateService/
├── TaskService/
├── EventService/
└── AccountService/
客户端应先发现资源链接,不要假设所有厂商ID都是 System.Embedded.1 或 1。
四、认证与会话
Redfish支持Basic或Session。自动化优先短期Session Token,并在结束时删除会话。
curl -k -u '<user>:<password>' https://<bmc>/redfish/v1/Systems/
生产不要使用 -k 忽略证书。应部署可信证书或内部CA,并验证主机名。示例仅用于实验说明。
安全要求:
- 凭据来自Vault;
- 每次任务短期获取;
- 不出现在命令行和日志;
- 角色最小权限;
- 会话过期和撤销;
- 失败登录告警。
五、资产发现
采集:
- 厂商、型号、序列号、SKU;
- BIOS、BMC和固件版本;
- CPU、内存和NUMA;
- 网卡/HBA;
- 磁盘、控制器和虚拟盘;
- 电源和风扇;
- 管理地址和MAC;
- TPM/Secure Boot。
清单应回写CMDB并保留采集时间。硬件序列号是资产关联关键键,不能只依赖IP。
六、硬件健康
从System、Chassis和各组件读取 Status.State、Health、HealthRollup。
不要只看顶层Health。顶层可能正常但某个电源、风扇、DIMM或磁盘已降级。自动化应遍历成员并记录具体组件。
七、事件与告警
Redfish Event Service可将事件推送到订阅端。设计:
- 订阅生命周期;
- HTTPS接收端;
- 来源验证;
- 重复事件去重;
- 严重级别映射;
- 资产和机柜关联;
- 未收到心跳告警;
- 事件保留。
定时轮询仍可作为补充,防止订阅丢失。
八、电源控制
典型Action为ComputerSystem Reset,ResetType可能包括On、ForceOff、GracefulShutdown、ForceRestart等。
自动化前必须检查:
- 当前PowerState;
- 业务状态;
- 变更工单;
- 集群和副本;
- 操作类型;
- 现场或远程确认。
优先GracefulShutdown。ForceOff相当于拔电,仅用于明确的应急场景。
九、一次性启动与虚拟介质
可设置下一次从PXE、USB、CD或UEFI Target启动,不应永久改变启动顺序。
虚拟介质URL:
- 使用HTTPS;
- 短期签名;
- 限制BMC来源;
- 安装完成后弹出;
- 不在URL内放长期凭据;
- 记录镜像哈希。
不同厂商对远程ISO协议和许可证支持不同,需要能力探测。
十、BIOS配置
配置通常先写入Settings资源,再创建Job或等待重启应用。
基线可能包括:
- UEFI/Secure Boot;
- 虚拟化扩展;
- SR-IOV;
- NUMA;
- 超线程;
- 电源Profile;
- Watchdog;
- 启动模式。
必须读取允许值和当前值,不把某型号的Attribute硬套到全部设备。
十一、RAID与存储
Redfish存储Schema可表示控制器、Drive和Volume,但创建虚拟盘常有OEM差异。
高风险操作:
- 删除Volume;
- 初始化;
- 改RAID级别;
- 清Foreign配置;
- 磁盘Secure Erase。
所有破坏性动作要匹配序列号、槽位、工单和资产状态,支持Dry-run或人工确认。
十二、固件清单
Update Service可列出Firmware Inventory。需要统一:
- 组件名称;
- 当前版本;
- 目标基线;
- 依赖和升级顺序;
- 是否需要重启;
- 回滚能力;
- 固件包哈希和签名。
不要只比较字符串大小判断版本,厂商版本格式可能不具备简单排序语义。
十三、固件升级
升级流程:
- 校验机型和组件;
- 检查电源冗余、健康和任务队列;
- 下载受信固件;
- 验证签名/哈希;
- 单台灰度;
- 创建Update任务;
- 轮询TaskService;
- 按需重启;
- 验证版本和硬件健康;
- 分批推广。
固件任务超时不能无条件重复提交,先查询已有Task和组件状态。
十四、厂商差异适配
建立能力矩阵:
| 能力 | 标准Redfish | OEM扩展 | 许可证 |
|---|---|---|---|
| 电源 | 通常支持 | 少量差异 | 常见免费 |
| 清单 | 通常支持 | 字段差异 | 常见免费 |
| BIOS | 部分标准化 | 差异较多 | 依厂商 |
| RAID | 有标准模型 | 差异明显 | 依厂商 |
| 虚拟介质 | 标准Action/OEM | 协议差异 | 常需高级许可 |
| 固件 | UpdateService | Push方式差异 | 依厂商 |
适配层根据Service Root和Schema判断,不只根据厂商字符串分支。
十五、IPMI兼容管理
ipmitool -I lanplus -H <bmc> -U <user> chassis power status
ipmitool -I lanplus -H <bmc> -U <user> sdr elist
ipmitool -I lanplus -H <bmc> -U <user> sel list
使用LANPlus,禁用弱口令和匿名Cipher,限制UDP 623来源。密码不要直接出现在命令参数中。
十六、BMC网络安全
- 独立管理网络和防火墙;
- 不暴露互联网;
- 管理员通过堡垒机/PAW;
- MFA由上层访问控制补充;
- 关闭不用的IPMI、SNMP、旧TLS和虚拟介质;
- 更换默认证书和账号;
- 定期升级BMC;
- 监控配置变化和登录。
BMC被攻破可绕过操作系统安全,应按最高权限系统治理。
十七、并发与批次
BMC性能有限,批量轮询和更新不能按普通Web API高并发。
- 每厂商/站点限制并发;
- 指数退避;
- 尊重Task;
- 请求超时;
- 分机柜和冗余组;
- 同一业务集群不同时重启;
- 超过失败阈值停止。
十八、审计与幂等
每次操作记录:
- 操作者/流水线;
- 工单;
- 资产序列号;
- 请求Action;
- 变更前后值;
- Task ID;
- 结果与时间;
- 固件哈希。
读取当前状态后再决定是否变更。幂等不是简单重复请求,而是重复执行不会扩大影响。
十九、故障场景
BMC不可达
检查管理交换机、VLAN、ARP、BMC共享/独立网口、电源和网络配置;必要时通过宿主机工具或现场冷重置。不要在未确认资产时批量Reset BMC。
固件任务卡住
查询Task、Update Service和生命周期日志;检查包兼容、电源、重启要求和已有Job;保留现场后再取消或重试。
证书大面积过期
先建立受控信任和轮换批次,避免自动化因验证失败全部中断。不要以全局关闭TLS验证作为长期方案。
二十、上线检查清单
- [ ] BMC网络与业务、办公和互联网隔离;
- [ ] 默认账号、弱TLS和不必要服务已处理;
- [ ] Redfish客户端先发现资源和能力;
- [ ] 凭据短期获取、不进日志;
- [ ] 资产以序列号关联CMDB;
- [ ] 电源、清盘和RAID动作有审批;
- [ ] 固件包校验并按故障域灰度;
- [ ] Task、事件和硬件健康受监控;
- [ ] OEM差异有能力矩阵和测试;
- [ ] 带外网络、BMC故障和固件失败已演练。
二十一、结语
Redfish让跨厂商带外管理拥有统一入口,但统一API不等于统一行为。安全的自动化必须先发现能力、验证资产和当前状态,再执行最小变更,并对电源、清盘、RAID和固件设置更高审批门槛。带外管理是救援通道,也必须防止它成为攻击通道。
参考资料
- Redfish Developer Hub:https://redfish.dmtf.org/
- Redfish Developer Essentials:https://redfish.dmtf.org/essentials