客户端身份验证
身份验证记录及其相关方法用于定义用户/客户端应用程序必须提供哪些凭据才能访问数据库。例如,hash
身份验证方法要求用户提供密码,而 oauth
身份验证方法要求用户提供访问令牌。
客户端身份验证概述
Vertica 按照以下过程对用户进行身份验证:
-
如果客户端尝试以来自本地连接的 dbadmin(即与数据库位于相同的节点上)身份进行身份验证:
-
如果 dbadmin 没有密码,Vertica 会使用
trust
方法对客户端进行身份验证。 -
如果 dbadmin 具有密码,Vertica 会使用
hash
方法对客户端进行身份验证。
-
-
如果客户端尝试以没有密码的数据库用户身份进行身份验证,且定义的唯一身份验证记录为默认记录,则 Vertica 会使用
trust
方法对客户端进行身份验证。有关详细信息,请参阅隐式身份验证。 -
如果客户端尝试以具有密码和身份验证记录的用户身份进行身份验证,则 Vertica 会尝试使用该记录对客户端进行身份验证。如果某个用户或角色存在多个身份验证记录,Vertica 将选择优先级最高的记录。
注意
通常情况下,如果未使用 CREATE AUTHENTICATION 定义自定义身份验证记录,则默认身份验证记录将生效(除非它们被 dbadmin 故意删除),且客户端将通过password
方法进行身份验证。 -
如果客户端使用所选身份验证方法验证失败,且身份验证 fallthrough 已启用,Vertica 将尝试使用下一个优先级最高的身份验证方法来对客户端进行身份验证。否则,客户端将被拒绝。
-
除此之外,如果身份验证记录不存在,且默认身份验证记录已被删除;则所有用户(来自本地连接的 dbadmin 除外)均不能访问数据库。
身份验证管理
具有 DBADMIN 角色的用户可以执行以下身份验证任务:
-
创建身份验证记录。
-
从数据库中删除身份验证记录。
-
定义以下身份验证方法所需的参数:
-
-
启用/禁用身份验证方法。
-
定义要在尚未向用户分配特定身份验证方法时使用的默认身份验证方法。要分配其作为默认身份验证方法,请使用 GRANT(身份验证) 将其授予 PUBLIC 角色。
-
更改身份验证记录优先级。
-
启用 fallthrough 身份验证。
-