创建身份验证记录
您可以使用 vsql
管理客户端身份验证记录。您必须以超级用户身份连接到数据库。
重要
您不能使用管理工具 (Administration Tools) 修改客户端身份验证记录。在管理工具界面中可以修改vertica.conf
文件的内容。但是,Vertica 会忽略该文件中存储的客户端身份验证信息。
-
创建身份验证记录,并指定:
-
身份验证记录的名称。
-
身份验证方法,为以下之一:
-
trust
:用户可以使用有效的用户名(即无需密码)进行身份验证。 -
reject
:拒绝连接尝试。 -
hash
:用户必须提供有效的用户名和密码。有关详细信息,请参阅哈希身份验证。 -
gss
:授权使用 MIT Kerberos 实现连接到 Vertica 的客户端。密钥分发中心 (KDC) 必须使用 GSS-API 支持 Kerberos 5。非 MIT Kerberos 实施必须使用 GSS-API。有关详细信息,请参阅Kerberos 身份验证。 -
ident
:根据 Ident 服务器中的用户名对客户端进行身份验证。有关详细信息,请参阅Ident 身份验证。 -
ldap
:使用 LDAP 或 Active Directory 服务器验证客户端及其用户名和密码。有关详细信息,请参阅LDAP 身份验证。 -
tls
:对提供具有指定有效数据库用户名的通用名称 (CN) 证书的客户端进行身份验证。必须为相互模式 TLS 配置 Vertica,才能使用此方法。有关详细信息,请参阅 TLS 身份验证 -
oauth
:使用访问令牌对客户端进行身份验证。有关详细信息,请参阅OAuth 2.0 身份验证。
-
-
访问方法,为以下之一,这些方法用于指定允许的连接类型:
-
LOCAL:对尝试从数据库运行所在的相同节点进行连接的用户或应用程序进行身份验证。
-
HOST:对尝试从 IPv4 或 IPv6 地址不同于数据库的节点进行连接的用户或应用程序进行身份验证。您可以使用 TLS 或 NO TLS 分别指定加密连接或明文连接。
-
-
是否启用 Fallthrough 身份验证(默认情况下禁用)。
-
-
将身份验证记录授予用户或角色。
示例
以下示例显示了如何创建身份验证记录。
创建身份验证方法 localpwd
,以便对尝试使用密码从本地主机登录的用户进行身份验证:
=> CREATE AUTHENTICATION localpwd METHOD 'hash' LOCAL;
创建身份验证方法 v_ldap
,以便使用 LDAP over TLS 对从 IPv4 地址为 10.0.0.0/23 的主机登录的用户进行身份验证:
=> CREATE AUTHENTICATION v_ldap METHOD 'ldap' HOST TLS '10.0.0.0/23';
创建身份验证方法 v_kerberos
,以便对尝试从网络 2001:0db8:0001:12xx 中的任何主机进行连接的用户进行身份验证:
=> CREATE AUTHENTICATION v_kerberos METHOD 'gss' HOST '2001:db8:1::1200/56';
以下
身份验证记录v_oauth
使用 OAuth 令牌(而不是用户名和密码)对来自任何 IP 地址的用户进行身份验证,并且使用以下参数。身份提供者是 Keycloak 18.0.0:
-
client_id
:机密客户端vertica
在 Keycloak 中注册。 -
client_secret
:客户端密钥,由 Keycloak 生成。 -
discovery_url
:也称为 OpenID 提供者配置文档,这是包含有关身份提供者的配置和端点的信息的端点。
=> CREATE AUTHENTICATION v_oauth METHOD 'oauth' HOST '0.0.0.0/0'
=> ALTER AUTHENTICATION v_oauth SET client_id = 'vertica';
=> ALTER AUTHENTICATION v_oauth SET client_secret = 'client_secret';
=> ALTER AUTHENTICATION v_oauth SET discovery_url = 'https://203.0.113.1:8443/realms/myrealm/.well-known/openid-configuration';
=> ALTER AUTHENTICATION v_oauth SET introspect_url = 'https://203.0.113.1:8443/realms/myrealm/protocol/openid-connect/token/introspect';
例如,要拒绝所有纯文本的客户端连接,按如下所示指定 reject
身份验证方法和 HOST NO TLS
访问方法:
=> CREATE AUTHENTICATION RejectNoSSL METHOD 'reject' HOST NO TLS '0.0.0.0/0'; --IPv4
=> CREATE AUTHENTICATION RejectNoSSL METHOD 'reject' HOST NO TLS '::/0'; --IPv6