安全性和身份验证

通用身份验证错误

为了提高安全性,当用户尝试进行连接和身份验证时,Vertica 不再发出以下错误:

Invalid username or password

此外,Vertica 不再发出特定于方法的错误消息,任何身份验证失败都将生成相同的错误消息:

authentication failed for username "name"

此更改可能会影响根据连接错误代码类型尝试重新连接的客户端。例如 vsql,它之前会在 TLS 失败(且 TLSMODEENABLE)时尝试进行明文连接,但如果 vsql 收到报告用户凭据不正确的错误代码,则不会进行连接。

因为新的通用消息和错误代码没有指定失败的原因,因此 vsql 无法区分身份验证错误是由于无效的 TLS 配置还是无效的用户凭据,它会尝试在这两种情况下建立明文连接。

默认身份验证记录

Vertica 目前创建了 3 个默认身份验证记录,并将其授予 public 角色。这些身份验证记录的优先级为 -1,因此所有用户创建的身份验证记录均优先于这些默认记录。

在以前版本的 Vertica 中,如果未启用任何身份验证记录,则会应用以下隐式身份验证记录:

  • 没有密码的用户使用 trust 方法进行身份验证。在 12.0.0 中,此隐式身份验证记录仍适用于没有密码的用户。

  • 具有密码的用户使用 password 方法进行身份验证。此隐式身份验证记录已被移除,取而代之的是默认记录。

Fallthrough 身份验证

您现在可以允许身份验证记录在失败时贯穿到下一条记录(按优先级顺序)。有关详细信息,请参阅Fallthrough 身份验证

升级行为

在以前的版本中,此 Fallthrough 行为仅适用于 ident(可以贯穿到任何其他身份验证方法)和 ldap(只能贯穿到其他 ldap 方法)身份验证方法,且无法禁用。从 Vertica 12.0.0 开始,默认情况下对所有新身份验证记录禁用此行为,包括 identldap

为了保留依赖于 ident 的 Fallthrough 的现有数据库的行为,如果满足以下所有条件,Vertica 会在升级时自动为 ident 身份验证记录启用 Fallthrough:

  • 数据库包含一个 ident 身份验证记录。

  • ident 身份验证记录具有最高的优先级

  • 数据库包含另一个用户定义的身份验证记录。

同样,在以前的版本中,ldap 记录只会贯穿到其他的 ldap 记录,并跳过使用其他方法的记录。目前情况已不再如此;ldap 记录可与许多其他方法兼容贯穿。

因此,要复制 ldap 的旧 fallthrough 行为,您的 ldap 记录必须是连续的(按优先级顺序),可相互贯穿。