📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

密码策略



密码策略定义了 TiDB Cloud Lake 密码必须有多强(长度、字符、历史记录、重试限制等)以及密码可以多久修改一次。它们为每次 CREATE USER 和密码修改提供了可预测的约束。有关完整属性列表,请参见密码策略属性。

工作原理

  • SQL 用户默认没有密码策略。你可以在创建用户时通过 CREATE USER ... WITH SET PASSWORD POLICY 指定策略,也可以稍后通过 ALTER USER 指定。
  • 每当受管理的用户设置或修改密码时,TiDB Cloud Lake 都会验证复杂度规则(长度和字符组合);对于密码修改,还会强制执行最短使用期限和密码历史记录限制。
  • 登录时,TiDB Cloud Lake 还会根据 PASSWORD_MAX_RETRIES/PASSWORD_LOCKOUT_TIME_MINS 跟踪失败尝试次数和锁定状态,并在超过 PASSWORD_MAX_AGE_DAYS 后将密码标记为过期。密码已过期的用户只能登录来修改自己的密码。

端到端示例

本示例将为管理员和分析师分别创建专用策略,将其绑定到用户,并展示后续如何修改或移除这些策略。

1. 创建策略并查看它们

CREATE PASSWORD POLICY dba_policy PASSWORD_MIN_LENGTH = 12 PASSWORD_MAX_LENGTH = 18 PASSWORD_MIN_UPPER_CASE_CHARS = 2 PASSWORD_MIN_LOWER_CASE_CHARS = 2 PASSWORD_MIN_NUMERIC_CHARS = 2 PASSWORD_MIN_SPECIAL_CHARS = 1 PASSWORD_MIN_AGE_DAYS = 1 PASSWORD_MAX_AGE_DAYS = 45 PASSWORD_MAX_RETRIES = 3 PASSWORD_LOCKOUT_TIME_MINS = 30 PASSWORD_HISTORY = 5 COMMENT='Strict controls for DBAs'; CREATE PASSWORD POLICY analyst_policy COMMENT='Defaults for analysts'; SHOW PASSWORD POLICIES; ┌─────────────────┬───────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ name │ comment │ options │ ├─────────────────┼───────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ analyst_policy │ Defaults for analysts │ MIN_LENGTH=8, MAX_LENGTH=256, MIN_UPPER_CASE_CHARS=1, MIN_LOWER_CASE_CHARS=1, MIN_NUMERIC_CHARS=1, MIN_SPECIAL_CHARS=0, ... HISTORY=0 │ │ dba_policy │ Strict controls for DBAs │ MIN_LENGTH=12, MAX_LENGTH=18, MIN_UPPER_CASE_CHARS=2, MIN_LOWER_CASE_CHARS=2, MIN_NUMERIC_CHARS=2, MIN_SPECIAL_CHARS=1, ... HISTORY=5 │ └─────────────────┴───────────────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

2. 将策略绑定到用户

CREATE USER dba_jane IDENTIFIED BY 'Str0ngPass123!' WITH SET PASSWORD POLICY='dba_policy'; CREATE USER analyst_mike IDENTIFIED BY 'Abc12345' WITH SET PASSWORD POLICY='analyst_policy'; CREATE USER analyst_zoe IDENTIFIED BY 'Byt3Crush!'; ALTER USER analyst_zoe WITH SET PASSWORD POLICY='analyst_policy';

3. 验证绑定结果

DESC USER dba_jane; ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ name │ hostname │ auth_type │ default_role │ roles │ disabled │ network_policy │ password_policy │ must_change_password │ ├─────────┼──────────┼──────────────────────┼──────────────┼───────┼──────────┼────────────────┼─────────────────┼──────────────────────┤ │ dba_jane│ % │ double_sha1_password │ │ │ false │ │ dba_policy │ NULL │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ DESC PASSWORD POLICY dba_policy; Name |Comment |Options -----------+----------------------------+---------------------------------------------------------------------------------------------------------------------------------+ dba_policy |Strict controls for DBAs |MIN_LENGTH=12,MAX_LENGTH=18,MIN_UPPER_CASE_CHARS=2,MIN_LOWER_CASE_CHARS=2,MIN_NUMERIC_CHARS=2,MIN_SPECIAL_CHARS=1,...,HISTORY=5 |

4. 集中修改策略

使用 ALTER PASSWORD POLICY 可以在不逐个修改用户的情况下收紧规则:

ALTER PASSWORD POLICY analyst_policy SET PASSWORD_MIN_SPECIAL_CHARS = 1 PASSWORD_MAX_AGE_DAYS = 60 COMMENT='Analysts need specials now'; DESC PASSWORD POLICY analyst_policy; Name |Comment |Options ---------------+-----------------------------+------------------------------------------------------------------------------------------------------------------------+ analyst_policy |Analysts need specials now |MIN_LENGTH=8,MAX_LENGTH=256,MIN_UPPER_CASE_CHARS=1,MIN_LOWER_CASE_CHARS=1,MIN_NUMERIC_CHARS=1,MIN_SPECIAL_CHARS=1,... |

现在,所有引用 analyst_policy 的用户都会自动继承更严格的密码字符组合要求和过期时间窗口。

5. 解绑并清理

ALTER USER analyst_zoe WITH UNSET PASSWORD POLICY; DROP PASSWORD POLICY analyst_policy;

TiDB Cloud Lake 会阻止你删除仍在使用中的策略;在运行 DROP PASSWORD POLICY 之前,请先从所有用户上取消该策略。


有关完整语法,请参见密码策略 SQL 参考,其中涵盖了 CREATE、ALTER、SHOW、DESC 和 DROP。

文档内容是否有帮助?