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;