Dbadmin 身份验证访问

Dbadmin 用户必须随时可访问数据库。Vertica 自动确保客户端可以以来自本地连接的 dbadmin 身份进行身份验证。

如果您需要以来自远程连接的 dbadmin 身份进行身份验证,则 dbadmin 必须具有密码。您可以使用以下方法:

  • 使用 fallthrough 身份验证。

  • 创建特定于 dbadmin 的自定义身份验证方法。

通过本地连接进行身份验证

您始终可以以来自本地连接的 dbadmin 身份隐式进行身份验证。这些特定于 dbadmin 的身份验证记录是隐式记录,因此它们不会列在 CLIENT_AUTH 系统表中,也不能删除

如果 dbadmin 用户没有密码,Vertica 会使用 trust 方法对其进行身份验证。否则,Vertica 会使用 password 方法对其进行身份验证。

在此示例中,dbadmin 没有密码并通过本地连接连接到 Vertica:

=> SELECT authentication_method, client_authentication_name FROM vs_sessions;
 authentication_method | client_authentication_name
-----------------------+----------------------------
 ImpTrust              | default: Implicit Trust

通过远程连接进行身份验证

Fallthrough 身份验证

Vertica 自动创建以下身份验证记录并将其授予 public 角色(有关详细信息,请参阅客户端身份验证):

=> SELECT auth_name,is_auth_enabled,auth_host_type,auth_method,auth_priority,is_fallthrough_enabled FROM client_auth;
         auth_name         | is_auth_enabled | auth_host_type | auth_method | auth_priority | is_fallthrough_enabled
---------------------------+-----------------+----------------+-------------+---------------+------------------------
 default_hash_network_ipv4 | True            | HOST           | PASSWORD    |            -1 | False
 default_hash_network_ipv6 | True            | HOST           | PASSWORD    |            -1 | False
 default_hash_local        | True            | LOCAL          | PASSWORD    |            -1 | False
(3 rows)

这些默认身份验证记录确保所有具有 public 角色的用户(包括 dbadmin)都可以访问数据库,前提是任何自定义身份验证记录都设置为贯穿(默认情况下禁用)到默认记录。

例如,下面的 ldap 身份验证启用了 fallthrough,因此如果 LDAP 服务器关闭,用户仍然可以使用 password 身份验证(由默认记录定义)进行身份验证。

=> CREATE AUTHENTICATION ldap1 METHOD 'ldap' LOCAL FALLTHROUGH;
=> ALTER AUTHENTICATION ldap1 SET host='ldap://localhost:5389',
    binddn='cn=Manager,dc=example,dc=com',
    bind_password='password',
    basedn='ou=dev,dc=example,dc=com',
    search_attribute='cn';

自定义身份验证记录

特定于 dbadmin 的身份验证记录应:

  • 使用 hash 身份验证方法(以便身份验证不依赖于某些外部服务)。

  • 具有较高的优先级(例如 10,000),以便它可以优先于所有其他身份验证记录。

以下示例创建了一个身份验证记录 v_dbadmin_hash 并将其授予 dbadmin 用户。hash 方法表示 dbadmin 在登录时必须提供密码。HOST '0.0.0.0/0' 访问方法表示 dbadmin 可以从任何 IPv4 地址进行远程连接:

=> CREATE AUTHENTICATION v_dbadmin_hash METHOD 'hash' HOST '0.0.0.0/0';
=> ALTER AUTHENTICATION v_dbadmin_hash PRIORITY 10000;
=> GRANT AUTHENTICATION v_dbadmin_hash TO dbadmin;

如果您想以来自本地连接的 dbadmin 身份进行身份验证,但想使用具有 HOST 访问方法的身份验证记录,请指定包含数据库主机名或 IP 地址的 --host 选项:

$ vsql database_name user --host hostname_or_ip;