安全性和身份验证
通用身份验证错误
为了提高安全性,当用户尝试进行连接和身份验证时,Vertica 不再发出以下错误:
Invalid username or password
此外,Vertica 不再发出特定于方法的错误消息,任何身份验证失败都将生成相同的错误消息:
authentication failed for username "name"
此更改可能会影响根据连接错误代码类型尝试重新连接的客户端。例如 vsql
,它之前会在 TLS 失败(且 TLSMODE 为 ENABLE
)时尝试进行明文连接,但如果 vsql
收到报告用户凭据不正确的错误代码,则不会进行连接。
因为新的通用消息和错误代码没有指定失败的原因,因此 vsql
无法区分身份验证错误是由于无效的 TLS 配置还是无效的用户凭据,它会尝试在这两种情况下建立明文连接。
默认身份验证记录
Vertica 目前创建了 3 个默认身份验证记录,并将其授予 public
角色。这些身份验证记录的优先级为 -1
,因此所有用户创建的身份验证记录均优先于这些默认记录。
在以前版本的 Vertica 中,如果未启用任何身份验证记录,则会应用以下隐式身份验证记录:
-
没有密码的用户使用
trust
方法进行身份验证。在 12.0.0 中,此隐式身份验证记录仍适用于没有密码的用户。 -
具有密码的用户使用
password
方法进行身份验证。此隐式身份验证记录已被移除,取而代之的是默认记录。
Fallthrough 身份验证
您现在可以允许身份验证记录在失败时贯穿到下一条记录(按优先级顺序)。有关详细信息,请参阅Fallthrough 身份验证。
升级行为
在以前的版本中,此 Fallthrough 行为仅适用于 ident
(可以贯穿到任何其他身份验证方法)和 ldap
(只能贯穿到其他 ldap
方法)身份验证方法,且无法禁用。从 Vertica 12.0.0 开始,默认情况下对所有新身份验证记录禁用此行为,包括 ident
和 ldap
。
为了保留依赖于 ident
的 Fallthrough 的现有数据库的行为,如果满足以下所有条件,Vertica 会在升级时自动为 ident
身份验证记录启用 Fallthrough:
-
数据库包含一个
ident
身份验证记录。 -
ident 身份验证记录具有最高的优先级。
-
数据库包含另一个用户定义的身份验证记录。
同样,在以前的版本中,ldap
记录只会贯穿到其他的 ldap
记录,并跳过使用其他方法的记录。目前情况已不再如此;ldap
记录可与许多其他方法兼容贯穿。
因此,要复制 ldap
的旧 fallthrough 行为,您的 ldap
记录必须是连续的(按优先级顺序),可相互贯穿。