在 Windows 上配置 ADO.NET、ODBC 和 vsql 客户端
Vertica 客户端驱动程序支持使用 Windows SSPI 库进行 Kerberos 身份验证。Windows Kerberos 配置存储在注册表中。
对于 Windows 和 ADO.NET 上的 ODBC 和 vsql 客户端 Kerberos 身份验证,可以选择两种不同的设置方案:
在 Active Directory 中使用 Windows 内置 Kerberos 客户端和 Vertica 的 Windows KDC
在 Windows 上的 Kerberos 身份验证通常搭配 Active Directory(Microsoft 的企业目录服务/Kerberos 实施)使用。通常,由组织的网络或 IT 管理员执行设置。
Windows 客户端的 Kerberos 身份验证内置于身份验证进程中。无需任何其他软件。
在执行以下操作时,登录凭据可对您连接 Kerberos 服务器 (KDC) 进行身份验证:
-
从客户机登录到 Windows
-
使用配置为通过 Active Directory 使用 Kerberos 的 Windows 实例
要在 Windows 客户端上使用 Kerberos 身份验证,请以 REALM\user 身份登录。
重要
在使用 ADO.NET 驱动程序连接 Vertica 时,可以选择在连接字符串中指定IntegratedSecurity=true
。这样可通知驱动程序按照用户的 Windows 凭据对呼叫用户进行身份验证。因此,无需在连接字符串中包括用户名或密码。输入连接字符串的任何
user=
条目都将被忽略。
使用 Windows 内置 Kerberos 客户端和 Vertica 的 Linux KDC
一种简单但不太常见的方案是配置 Windows 对非 Windows KDC 进行身份验证。在此实施中,使用 ksetup
实用程序在非 Active Directory KDC 中指出 Windows 操作系统本机 Kerberos 功能。通过登录到 Windows,可获取许可票证,与 Active Directory 实施类似。但在这种情况下,Windows 在内部与 Linux KDC 通信。有关详细信息,请参阅 Microsoft Windows Server Ksetup 页面。
当数据库/Windows 用户登录到 Windows 计算机(或在 Windows 上执行 kinit 之后)时,Kerberos 票证必须设置 ok_as_delegate 和 forwardable 标志才能访问基于 webhdfs 的外部表,如下所示:
$ CMD \> klist
#2> Client: release @ VERTQA.LOCAL
Server: vertica/vqatest108.verticacorp.com @ VERTQA.LOCAL
KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)
Ticket Flags 0x40a50000 forwardable renewable pre_authent ok_as_delegate name_canonicalize
Start Time: 9/27/2017 13:24:43 (local)
End Time: 9/27/2017 20:34:45 (local)
Renew Time: 10/3/2017 15:04:45 (local)
Session Key Type: RSADSI RC4-HMAC(NT)
Cache Flags: 0
Kdc Called: ADKDC01
配置 Windows 客户端以执行 Kerberos 身份验证
根据要配置的实施,请参阅 Microsoft Server 网站上的下列页面之一:
-
要使用 Active Directory 设置 Windows 客户端,请参阅《Kerberos 5 (krb5 1.0) 互操作分步指南》。
-
要使用
ksetup
实用程序设置 Windows 客户端,请参考 Ksetup 页面。
客户端身份验证和连接
KDC 可对 ADO.NET 和 a vsql 客户端进行身份验证。
注意
在连接字符串中使用完全限定域名作为服务器;例如,使用host.example.com
,而不是 host
。这样,如果服务器的位置移动,则不必更改连接字符串。
验证 ADO.NET 身份验证请求和连接
本示例显示如何使用 IntegratedSecurity=true
设置指定通过 ADO.NET 驱动程序对呼叫用户的 Windows 凭据进行身份验证:
VerticaConnection conn = new
VerticaConnection("Database=VMart;Server=host.example.com;
Port=5433;IntegratedSecurity=true;
KerberosServiceName=vertica;KerberosHostname=vcluster.example.com");
conn.open();
验证 vsql 身份验证请求和连接
-
例如,以
EXAMPLE\kuser
身份登录到您的 Windows 客户端。 -
运行 vsql 客户端,并向 Vertica 提供连接字符串:
C:\Users\kuser\Desktop>vsql.exe -h host.example.com -K vcluster -U kuser Welcome to vsql, the Vertica Analytic Database interactive terminal. Type: \h or \? for help with vsql commands \g or terminate with semicolon to execute query \q to quit