跳到主要内容

密码策略

Databend 包含一个密码策略,以加强系统安全性并使用户账户管理更加顺畅。该策略为创建或更改密码设置了规则,涵盖长度、字符类型、年龄限制、重试限制、锁定持续时间和密码历史等方面。在创建密码策略时,您可以根据需要自定义特定规则。有关密码策略因素的详细列表,请参阅 密码策略属性

密码策略的工作原理

在 Databend 中,SQL 用户最初没有预定义的密码策略。这意味着在为用户分配密码策略之前,设置或更改用户密码时没有特定的规则需要遵循。要分配密码策略,您可以使用 CREATE USER 命令创建一个带有密码策略的新用户,或者使用 ALTER USER 命令将现有用户链接到密码策略。请注意,密码策略不适用于通过 databend-query.toml 配置文件配置的管理员用户。

当您为具有密码策略的用户设置或更改密码时,Databend 会进行彻底检查,以确保所选密码遵循密码策略定义的规则。以下方面会进行验证:

备注

通常,用户无法更改自己的密码,除非他们被分配了内置角色 account-adminaccount-admin 用户可以为所有用户设置或更改密码。要更改用户的密码,请使用 ALTER USER 命令。

  • 复杂性要求

    • 最小和最大长度:验证密码长度是否在定义的范围内。
    • 大写、小写、数字和特殊字符:确认是否符合特定字符类型要求。
  • 密码更改时的附加检查

    • 最小年龄要求:确保密码不会过于频繁地更改。
    • 历史检查:验证新密码是否与最近的密码重复。

当用户尝试使用密码策略登录时,Databend 会进行基本检查以增强安全性并规范用户访问。以下验证会进行:

  • 连续错误密码尝试

    • 确保连续错误密码尝试次数不超过限制。
    • 超过限制会导致用户登录暂时锁定。
  • 最大年龄要求

    • 检查是否超过了最大密码更改间隔。
    • 如果间隔超过,用户在登录后可以更改密码,但在更改密码之前无法执行任何其他操作。

管理密码策略

Databend 提供了一系列用于管理密码策略的命令。有关更多详细信息,请参阅 密码策略

使用示例

此示例建立了以下密码策略并将其应用于用户:

  • DBA 用于管理员用户:严格自定义每个密码策略属性。
  • ReadOnlyUser 用于普通用户:使用默认属性值。
-- 创建带有自定义属性值的 'DBA' 密码策略
CREATE PASSWORD POLICY DBA
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 = 30
PASSWORD_MAX_RETRIES = 3
PASSWORD_LOCKOUT_TIME_MINS = 30
PASSWORD_HISTORY = 5;

-- 创建带有所有属性默认值的 'ReadOnlyUser' 密码策略
CREATE PASSWORD POLICY ReadOnlyUser;

SHOW PASSWORD POLICIES;

┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ name │ comment │ options │
├──────────────┼─────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ DBA │ │ MIN_LENGTH=12, MAX_LENGTH=18, MIN_UPPER_CASE_CHARS=2, MIN_LOWER_CASE_CHARS=2, MIN_NUMERIC_CHARS=2, MIN_SPECIAL_CHARS=1, MIN_AGE_DAYS=1, MAX_AGE_DAYS=30, MAX_RETRIES=3, LOCKOUT_TIME_MINS=30, HISTORY=5
│ ReadOnlyUser │ │ MIN_LENGTH=8, MAX_LENGTH=256, MIN_UPPER_CASE_CHARS=1, MIN_LOWER_CASE_CHARS=1, MIN_NUMERIC_CHARS=1, MIN_SPECIAL_CHARS=0, MIN_AGE_DAYS=0, MAX_AGE_DAYS=90, MAX_RETRIES=5, LOCKOUT_TIME_MINS=15, HISTORY=0
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

假设您已经有一个名为 'eric' 的 DBA 用户,并使用 ALTER USER 命令将 DBA 密码策略应用于该用户:

-- 将 'DBA' 密码策略应用于用户 'eric'
ALTER USER eric WITH SET PASSWORD POLICY = 'DBA';

现在,让我们创建一个名为 'frank' 的新用户,并使用 CREATE USER 命令应用 'ReadOnlyUser' 密码策略:

-- 注意:为用户 'frank' 设置的密码必须符合关联的 'ReadOnlyUser' 密码策略定义的约束。
CREATE USER frank IDENTIFIED BY 'Abc12345'
WITH SET PASSWORD POLICY = 'ReadOnlyUser';
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册