hash
身份验证方法使用密码对用户进行身份验证。
通常,您应该更喜欢其他身份验证方法而不是 hash
。
hash
身份验证方法使用密码对用户进行身份验证。
通常,您应该更喜欢其他身份验证方法而不是 hash
。
hash
身份验证。
Vertica 不存储 hash
身份验证方法的用户密码。相反,Vertica 存储密码的哈希值。哈希算法由两个参数决定:
系统级别配置参数 SecurityAlgorithm
:
=> ALTER DATABASE DEFAULT SET PARAMETER SecurityAlgorithm = 'hashing_algorithm';
用户级别参数 SECURITY_ALGORITHM
:
=> ALTER USER username SECURITY_ALGORITHM 'hashing_algorithm' IDENTIFIED BY 'new_password';
系统级别参数 SecurityAlgorithm
可以具有以下值:
SHA512
(默认值)
MD5
用户级别参数 SECURITY_ALGORITHM
可以具有以下值。非 NONE
值将优于系统级别参数:
NONE
(默认使用通过系统级别参数 SecurityAlgorithm
指定的算法)
SHA512
MD5
用户的 EFFECTIVE_SECURITY_ALGORITHM
由系统级别参数和用户级别参数两者决定。如果将用户级别参数设置为 NONE
,则系统级别参数的算法将作为有效的安全算法。您可以通过将用户级别参数设置为非 NONE
值来覆盖特定用户的系统级别参数。
您可以通过查询系统表 PASSWORD_AUDITOR 查看这些参数及其对每个用户的影响。
下表显示了系统级别参数和用户级别参数的各种组合以及每种组合的有效安全算法。
FIPS 模式将有效的安全算法强制设置为 SHA-512。
hash
身份验证方法允许用户使用密码进行身份验证。
Vertica 将存储密码的哈希值(默认为 SHA-512),而不是密码本身。有关详细信息,请参阅密码哈希算法。
使用 hash
方法创建身份验证记录。身份验证记录在创建后会自动启用。例如,要为从 IP 地址 192.0.2.0/24 登录的用户创建身份验证记录 v_hash
:
=> CREATE AUTHENTICATION v_hash METHOD 'hash' HOST '192.0.2.0/24';
使用 GRANT 语句将 v_hash
身份验证方法与所需的用户或角色关联:
=> GRANT AUTHENTICATION v_hash to user1, user2, ...;
向用户分配密码以允许用户使用密码保护连接至数据库。用户提供正确的密码后,将出现到数据库的连接。
Vertica 根据每个用户的 EFFECTIVE_SECURITY_ALGORITHM 对密码进行哈希处理。但是,经过哈希处理的密码采用明文形式从客户端传输到 Vertica。这样,“中间人”攻击可能会截取来自客户端的明文密码。
配置 哈希身份验证 可确保使用密码进行安全登录。
您必须是 超级用户才能使用 CREATE USER 语句为用户帐户创建密码。超级用户可以设置任何用户账户的密码。
使用 ALTER USER 语句添加密码。
要更改密码,请使用 ALTER USER 或 vsql 元命令 \password
。
用户也可更改自己的密码。
要更加高效地进行密码身份验证,Vertica 建议执行密码策略以控制强制用户更改密码的频率以及密码所要求的内容。使用 配置文件.设置这些策略。
当未指定任何身份验证方法时,Vertica 默认为具有密码的用户帐户使用密码身份验证。
如果创建身份验证方法(即使是为远程主机),密码身份验证将禁用。这种情况下,必须显式弃用密码身份验证。下列命令可创建 local_pwd 身份验证方法并设置为所有用户的默认方法。创建身份验证方法时,Vertica 会自动启用该方法:
=> CREATE AUTHENTICATION local_pwd METHOD hash' LOCAL;
=> GRANT AUTHENTICATION local_pwd To Public;
您可以通过为用户分配配置文件来为其设置密码策略。您可以创建多个配置文件来管理多个类别用户的密码策略。例如,您可以为交互用户创建一个要求经常更改密码的配置文件,为用户帐户创建另一个从不要求更改密码的配置文件。
您可以使用 CREATE PROFILE 创建配置文件,并使用 ALTER PROFILE 更改现有配置文件。这两个语句都允许您设置一个或多个配置文件参数,这些参数用于控制密码的最短有效期限、密码复杂性和密码重置规则等。
每个配置文件都可以指定以下一项或多项策略。
用户必须更换密码的频率
密码自设置到重置之前必须经过的时间
在使用旧密码前用户必须更户密码的次数
在帐户锁定之前,用户可登录失败的次数
密码要求的长度和内容:
最大和最小字符数
密码中大写字母、小写字母、数字以及符号的最小数量
新密码必须与旧密码不同的字符数
定义配置文件后,您可以分别使用 CREATE USER 和 ALTER USER 将其分配给新用户和现有用户。
密码内容的配置文件策略(例如,PASSWORD_MAX_LENGTH
和 PASSWORD_MIN_SYMBOLS
)的更改仅在用户更改密码时才会影响用户。Vertica 不会测试现有密码来验证其是否符合新的密码要求。要强制使其立即符合新的配置文件要求,请使用 ALTER USER...PASSWORD EXPIRE
立即终止当前用户的密码。用户下次登录时,Vertica 会提示他们提供新密码,该密码必须符合当前策略。
每个数据库均包含一个 DEFAULT
配置文件。Vertica 将默认配置文件分配给未显式分配配置文件的用户。在以下两种情况下,默认配置文件还会设置非默认配置文件的参数:
配置文件参数未通过 CREATE PROFILE
显式设置
参数的 ALTER PROFILE
设置为 DEFAULT
默认配置文件中的所有参数最初都设置为 unlimited
。您可以使用 ALTER PROFILE
来更改这些设置。例如,以下语句将修改默认配置文件参数 PASSWORD_MIN_SYMBOLS
。此更改要求密码至少包含一个符号,例如 $、#、@。此更改会影响 PASSWORD_MIN_SYMBOLS
设置为 default
的所有配置文件:
ALTER PROFILE DEFAULT LIMIT PASSWORD_MIN_SYMBOLS 1;
以下配置文件设置会影响客户端身份验证方法,例如 LDAP 或 GSS:
FAILED_LOGIN_ATTEMPTS
PASSWORD_LOCK_TIME
所有其他配置文件设置仅供 Vertica 用于管理其密码。
为使密码发挥其有效性,必须使用强密码。密码应防范:
字典样式,以防被暴力破解攻击
掌握密码持有人相关信息的人(姓名、生日等)
使用 配置文件 来强制执行强密码策略(密码长度和所需的内容)确保数据库用户了解密码指导原则,并鼓励其不再密码中使用个人信息。
有关创建强密码的指导原则,请访问微软对创建强密码的一些提示。
以下 PROFILE 参数用于控制密码过期、新密码和最短有效期限的条件:
PASSWORD_LIFE_TIME
- 密码保持有效的天数
PASSWORD_MIN_LIFE_TIME
- 密码自设置到更改之前必须经过的天数
PASSWORD_GRACE_TIME
- 密码过期后可以继续使用的天数
PASSWORD_REUSE_MAX
- 在重新使用较早的密码之前必须更改密码的次数
PASSWORD_REUSE_TIME
- 从设置完密码后到可以重复使用该密码之前必须经过的天数
PASSWORD_MIN_CHAR_CHANGE
- 必须与以前的密码不同的最小字符数
有关这些参数和其他参数的更多详细信息,请参阅 CREATE PROFILE 和 ALTER PROFILE。
配置文件参数 PASSWORD_LIFE_TIME
控制密码的有效期限(以天为单位)。默认情况下,DEFAULT 配置文件将 PASSWORD_LIFE_TIME 设置为 UNLIMITED
,这会禁用密码过期。您可以使用 ALTER PROFILE 更改默认配置文件和自定义配置文件。
通常情况下,当密码过期后,Vertica 会强制用户在下次登录时更改密码。但是,您可以设置 PASSWORD_GRACE_TIME 以允许用户在密码过期后继续使用该密码登录。如果用户在宽限期内登录,Vertica 会警告用户其密码已过期。此宽限期结束后,Vertica 将发出标准提示,提示用户更改用户密码。
可以使用 ALTER USER 语句的 PASSWORD EXPIRE 参数来立即终止密码。通过终止密码,可以:
强制用户遵守密码更改策略。
当用户忘记了旧密码时,要设置新密码。
在配置文件中,您可以设置密码策略,确定在锁定用户帐户之前允许的连续失败登录尝试次数。该锁定机制有助于阻止通过字典式强力攻击尝试来猜测用户密码的行为。
使用 FAILED_LOGIN_ATTEMPTS
参数(CREATE PROFILE 或 ALTER PROFILE 语句)设置该值。
如果用户帐户登录尝试连续失败次数超过 FAILED_LOGIN_ATTEMPTS
设置的值,则 Vertica 将锁定该帐户。即使用户提供正确的密码,也无法登录锁定的帐户。
您可以通过以下两种方式之一解锁帐户,具体取决于您的权限。
手动:如果您是 超级用户,则可以使用 ALTER USER 命令手动解锁帐户。
密码锁定时间设置: PASSWORD_LOCK_TIME
指定在指定的登录尝试失败次数(可使用 FAILED_LOGIN_ATTEMPTS
进行配置)后将帐户锁定的天数(单位可使用 PasswordLockTimeUnit 进行配置)。经过指定的天数后,Vertica 将自动解锁帐户。
如果将此参数设置为 UNLIMITED
,则该用户的帐户永远不会自动解锁,必须由超级用户手动解锁。