跳到主要内容

密码策略

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
低成本
快速分析
多种数据源
弹性扩展
注册

Copyright © 2025 The Databend Community. Apache, Apache OpenDAL and OpenDAL are either registered trademarks or trademarks of the Apache Software Foundation.

We use cookies on our site to provide you with better user experience. You can view our Cookies Policy in Privacy Policy .