自定义密码策略

RDS MySQL支持通过validate_password插件自定义密码策略,以增强数据库访问的安全性。您可以修改密码复杂度校验规则,包括密码长度、密码检测强度等。

功能介绍

RDS MySQL支持通过validate_password插件精细控制数据库账号密码的复杂度要求:

  • 是否允许密码与数据库账号名相同

  • 密码最小长度

  • 需包含大写和小写字母的最小个数

  • 需包含数字的最小个数

  • 需包含特殊字符的最小个数

  • 密码强度检测策略

前提条件

RDS MySQL实例版本需为5.78.0。

注意事项

  • 主节点的validate_password插件安装不会自动同步至备节点

    对于主备架构实例(高可用系列、集群系列),validate_password插件需在主节点和备节点分别手动安装, 可通过手动切换主备操作登录备节点安装。若仅在主节点安装,后续发生主备切换后新主节点(原备节点)将缺失该插件,导致密码策略失效。

    说明

    插件安装后,通过RDS控制台配置的密码策略参数会自动同步至备节点,无需重复设置。

  • 核心参数限制及系统处理

    length必须大于或等于number_count + (2 * mixed_case_count)+ special_char_count,若任意一个值导致不符合上述要求,RDS会自动将length调整为等于该计算式的结果

  • RDS强制规则

    无论自定义策略如何设置,通过RDS控制台API(CreateAccount/ResetAccountPassword)创建或修改密码时,密码始终遵循:

    • 长度为8~32个字符。

    • 包含大写字母、小写字母、数字、特殊字符(!@#$%^&*()_+-=)中的至少三种。

  • 绕过密码最小长度为8的强制限制(不推荐)

    参数值调整无法绕过RDS控制台的强制校验,即使将密码最小长度设为5,创建或修改密码时仍需输入至少8个字符。

    如需设置少于8个字符的密码,可通过SET PASSWORD命令绕过RDS控制台的强制校验限制,直接设置为5字符密码。此方法仅适用于测试环境或特殊场景,生产环境不建议使用

费用说明

自定义密码策略功能免费使用。

步骤一:安装validate_password插件

  1. 使用高权限账号连接MySQL实例

  2. 执行如下SQL命令,安装validate_password插件。

    INSTALL PLUGIN validate_password SONAME 'validate_password.so';
  3. 执行如下SQL命令,验证插件是否安装成功。

    SHOW GLOBAL VARIABLES LIKE 'validate_password%';

    出现类似下图的返回结果即表示插件安装成功。返回结果

步骤二:修改密码策略参数

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏中单击参数设置

  3. 根据设置实例参数文档,搜索并修改loose_validate_password系列参数。

    说明

    参数名

    支持的数据库版本

    说明

    配置示例(5.7版本)

    loose_validate_password_check_user_name

    5.7

    是否允许密码和账号名一致。取值:

    • ON(默认值):允许。

    • OFF:不允许。

    OFF:禁止密码与用户名相同。

    loose_validate_password_policy

    8.0/5.7

    密码强度检测等级。取值:

    • 0:仅检测密码长度。

    • 1(默认值):检测密码的长度、数字、大小写及特殊字符。

    • 2:检测密码的长度、数字、大小写、特殊字符及字典文件。

      说明

      由于当前暂不支持指定字典文件,因此2强度与1相同。

    1:检测密码长度、数字、大小写及特殊字符。

    loose_validate_password_length

    8.0/5.7

    密码的最小长度。

    • MySQL 5.7:取值范围为0~256。默认值为8

    • MySQL 8.0:取值范围为1~12。默认值为8

    10:密码最小长度为10字符(符合要求:10 >= 2 + (2 * 2) + 1 = 7)。

    loose_validate_password_number_count

    5.7

    密码中需包含数字的个数。

    取值范围为0~256。默认值为1

    2:密码中至少包含2个数字。

    loose_validate_password_mixed_case_count

    5.7

    密码中需包含大小写字母的个数。

    取值范围为0~256。默认值为1

    2:密码中至少包含1个大写字母和1个小写字母(总计2个大小写字母)

    loose_validate_password_special_char_count

    5.7

    密码中需包含特殊字符的个数。

    取值范围为0~256。默认值为1

    1:密码中至少包含1个特殊字符。

相关文档