密码复杂度检查装备定制不生效

问题描述

装备定制需要使用BMCSet_UserPasswdComplexityCheckEnable接口定制密码复杂度检查为off,实际操作后不生效。

环境信息

  • 软件版本:iBMC5.05.12.07

尝试过的解决方案

尝试过同时设置BMCSet_UserPasswdComplexityForeverEnable为off,同样不生效

答案内容由AI生成,仅供参考:

结论

您的问题最可能的原因是 BMCSet_UserPasswdComplexityForeverEnable 被强制启用(或默认为on),导致无法通过 BMCSet_UserPasswdComplexityCheckEnable=off 禁用密码复杂度检查。

建议操作顺序:

  1. 设置 BMCSet_UserPasswdComplexityForeverEnable = off
  2. 设置 BMCSet_UserPasswdComplexityCheckEnable = off
  3. 重启BMC或重启账户管理服务
  4. 使用Redfish API验证 PasswordComplexityCheckEnabled 是否为 false
  5. 检查Web界面是否更新

若以上操作仍无效,建议联系厂商技术支持确认该版本是否允许关闭密码复杂度检查,或是否存在固件级别的安全策略锁定。

点击此处查看详细分析解答

密码复杂度检查装备定制不生效问题分析

根据您的描述,您在进行装备定制过程中,尝试通过 BMCSet_UserPasswdComplexityCheckEnable 接口将密码复杂度检查设置为 off,但配置未生效,界面仍显示“密码检查:开”。以下是对该问题的详细分析和解决方案建议。

问题原因分析

1. 密码复杂度检查的双重控制机制

BMC系统中密码复杂度检查由两个关键参数共同控制:

  • BMCSet_UserPasswdComplexityCheckEnable:控制是否启用密码复杂度检查。
  • BMCSet_UserPasswdComplexityForeverEnable:控制是否允许禁用密码复杂度检查。

根据知识库中的逻辑关系:

if (BMCSet_UserPasswdComplexityForeverEnable == on)
  密码复杂度检查使能状态设置成强制启用,无法禁用
else if (BMCSet_UserPasswdComplexityCheckEnable == off)
  禁用本地用户密码复杂度检查(密码复杂度检查使能状态设置成可修改)
else
  使能本地用户密码复杂度检查

这意味着即使设置了 BMCSet_UserPasswdComplexityCheckEnable=off,如果 BMCSet_UserPasswdComplexityForeverEnable 被设置为 on,那么密码复杂度检查仍会被强制启用。

2. 配置可能被系统策略覆盖

某些BMC版本(如iBMC)存在安全加固策略,默认开启关键安全功能。即使通过接口配置,系统启动时或安全模块加载后可能会依据预定义策略重新启用密码复杂度检查。

3. 配置未正确写入或持久化

存在以下可能性:

  • 接口调用返回成功,但实际未写入底层配置数据库。
  • 配置写入临时内存但未持久化到Flash。
  • BMC服务未重启或配置未被相关模块(如AccountService)重新加载。

验证与解决方案建议

:white_check_mark: 步骤一:确认 BMCSet_UserPasswdComplexityForeverEnable 状态

确保该参数未被设置为 on。应显式设置为 off 或不配置(默认行为为可禁用):

BMCSet_UserPasswdComplexityForeverEnable = off

:warning: 如果该参数被固件强制设为 on,则密码复杂度检查将无法关闭。

:white_check_mark: 步骤二:验证 BMCSet_UserPasswdComplexityCheckEnable 设置结果

使用对应的获取接口(如 GetUserPassComplexity 或通过Redfish API)查询当前实际状态:

{
  "Oem": {
    "openBMC": {
      "PasswordComplexityCheckEnabled": true
    }
  }
}

若返回 true,说明配置未成功生效。

:white_check_mark: 步骤三:检查是否存在更高优先级的安全策略

部分系统中存在“安全增强”模式或“合规模式”,会强制开启密码复杂度、登录失败锁定等功能。请检查:

  • 是否启用了“安全公告”或“合规配置”相关选项。
  • 是否存在如 Custom_SecurityHardeningMode 等全局安全策略开关。

:white_check_mark: 步骤四:确认是否支持空密码或弱密码

从知识库中可知:

openUBMC不支持设置空密码。

这表明系统底层对密码策略有硬性限制,即使关闭复杂度检查,也可能保留基本要求(如最小长度8位),因此“关闭”不等于“无限制”。

:white_check_mark: 步骤五:重启BMC或相关服务

某些配置需要重启BMC或重启 AccountService 才能生效。尝试执行:

reboot

或通过命令行重启账户管理服务。

:white_check_mark: 步骤六:检查Redfish/Web界面的显示缓存

有时Web界面显示的是缓存值。建议:

  • 清除浏览器缓存后重新登录。
  • 通过 Redfish API 直接查询真实状态:
    GET https://<BMC_IP>/redfish/v1/AccountService
    
    查看 MinPasswordLengthOem.openBMC.PasswordComplexityCheckEnabled 字段。

附加说明

  • 当前默认最小密码长度为8位,即使关闭复杂度检查,系统可能仍保留此基础策略。
  • 历史密码差异要求:当前系统不支持动态配置“新旧密码至少相差N个字符”的策略(如2字符差),此功能不可配置。
  • BMC版本差异:您使用的 iBMC 5.05.12.07 可能与 openUBMC 在实现上存在差异,建议查阅对应版本的官方文档确认参数支持情况。

结论

您的问题最可能的原因是 BMCSet_UserPasswdComplexityForeverEnable 被强制启用(或默认为on),导致无法通过 BMCSet_UserPasswdComplexityCheckEnable=off 禁用密码复杂度检查。

建议操作顺序:

  1. 设置 BMCSet_UserPasswdComplexityForeverEnable = off
  2. 设置 BMCSet_UserPasswdComplexityCheckEnable = off
  3. 重启BMC或重启账户管理服务
  4. 使用Redfish API验证 PasswordComplexityCheckEnabled 是否为 false
  5. 检查Web界面是否更新

若以上操作仍无效,建议联系厂商技术支持确认该版本是否允许关闭密码复杂度检查,或是否存在固件级别的安全策略锁定。

@baode_zsy 当前不支持这个定制项。
参见account组件issue
你可以查看account的组件相关源码实现。