【已评审】部分密码管理安全定制选项支持配置导入导出

背景

BMC的客户配置恢复操作步骤多,方式不统一,繁琐且容易遗漏,需要支持现网场景BMC更换后的配置一键恢复能力。补齐部分仅装备定制化可配置的能力,提供配置导入导出能力。

关联ISSUE

[需求]: 补充安全能力客户定制化配置

整体方案

新增配置导入导出项,补全原有部分定制能力

评审点

1、新增配置导入导出项支持导入/导出用户首次登陆策略

2、新增配置导入导出项支持导入/导出密码复杂度校验能力

详细描述

1、新增配置导入导出项支持导入/导出用户首次登陆策略

配置项名称 配置项类别 配置项 归属组件 取值类型 取值说明 默认值 导入导出类型 说明
用户首次登陆策略 User FirstLoginPolicy account string PromptPasswordReset:提示修改密码
ForcePasswordReset:强制修改密码
ForcePasswordReset ImportAndExport 提示修改密码:用户使用初始密码首次登录时,仅提示进行修改密码,可跳过
强制修改密码:用户使用初始密码首次登录时,强制要求修改密码,并使用初始密码二次认证

配置项详情:

{
    "ConfigData": {
        "type": "object",
        "properties": {
            "User": {
                "type": "array",
                "items": {
                    "type": "object",
                    "properties": {
                        "Id": {
                            "type": "number",
                            "AttributeType": "ImportAndExport"
                        },
                        "UserName": {
                            "type": "string",
                            "AttributeType": "ImportAndExport",
                            "maxLength": 16,
                            "minLength": 0
                        },
                        "FirstLoginPolicy": {
                            "type": "string",
                            "AttributeType": "ImportAndExport",
                            "enum": [
                                "PromptPasswordReset",
                                "ForcePasswordReset"
                            ]
                        },
                        ......(其它用户配置)
                    },
                    "required": [
                        "Id",
                        "UserName"
                    ]
                }
            }
        }
    }
}

2、新增配置导入导出项支持导入/导出密码复杂度校验能力

密码复杂度校验能力在后台组件分别由两个属性控制,分别为 密码复杂度能力锁 和 密码复杂度使能,其中密码复杂度能力锁在锁定后不可再变更使能情况(锁定场景前提条件密码复杂度已使能)

装备定制密码复杂度使能时存在三种场景:

① 关闭

② 开启

③ 永久开启,不可逆

当设置①、②时,密码复杂度校验能力锁不会被设置,默认为false,代表密码复杂度使能后续可修改;

当设置③时,密码复杂度使能被设为true,且密码复杂度校验能力锁被设为true,后续再次设置密码复杂度使能会被拦截。

历史已有密码复杂度使能的配置导入导出项 EnableStrongPassword(bool),但仅能覆盖上述①、②场景,无法覆盖强使能的场景;遂计划新增配置导入导出项收编原有的EnableStrongPassword

配置项名称 配置项类别 配置项 归属组件 取值类型 取值说明 默认值 导入导出类型 说明
密码复杂度校验能力 PasswdSetting PasswordComplexityStatus account string Disabled:密码复杂度使能关闭
Enabled:密码复杂度使能开启
ForceEnabled:密码复杂度使能强制开启,不可再关闭
Enabled ImportAndExport 同时导入PasswordComplexityStatus和EnableStrongPassword时,仅生效PasswordComplexityStatus的值
当前PasswordComplexityStatus已经为"ForceEnabled"时,不可再设置为"Disabled"、“Enabled”

配置项详情:

{
    "ConfigData": {
        "type": "object",
        "properties": {
            "PasswdSetting": {
                "type": "object",
                "properties": {
                    "EnableStrongPassword": {
                        "type": "boolean",
                        "AttributeType": "ImportAndExport"
                    },
                    "PasswordComplexityStatus": {
                        "type": "string",
                        "AttributeType": "ImportAndExport",
                        "enum": [
                            "Disabled",
                            "Enabled",
                            "ForceEnabled"
                        ]
                    },
                    ......(其它配置)
                }
            }
        }
    }
}

评审结论

1、同意新增配置导入导出项 User.FirstLoginPolicy 用于配置账户的首次登陆策略;取值类型为字符串枚举,取值范围:[“PromptPasswordReset”、“ForcePasswordReset”],可以导入及导出。

2、同意新增配置导入导出项 PasswdSetting.PasswordComplexityStatus 拥有配置密码复杂度校验能力;取值类型为字符串枚举,取值范围:[“Disabled”、“Enabled”、“ForceEnabled”],可以导入及导出。

当同时导入 PasswordComplexityStatus 和 EnableStrongPassword 时,仅以 PasswordComplexityStatus 的取值生效。

若当前 PasswordComplexityStatus 已经为 “ForceEnabled”,不可再修改为 “Disabled”、“Enabled”

遗留问题

1、FirstLoginPolicy 建议做成字符串枚举,能直观体现值的含义

答复:调整为字符串枚举类

PromptPasswordReset:提示修改密码

ForcePasswordReset:强制修改密码

2、当前方案太复杂,自身存在限制且与其它属性也存在耦合

答复:调整为 PasswordComplexityStatus,收编原有的 EnableStrongPassword 能力,为保障新旧版本配置导入导出的兼容性,原 EnableStrongPassword 需要保留。若同时导入 PasswordComplexityStatus 和 EnableStrongPassword,仅以新属性 PasswordComplexityStatus 的取值生效。