在非 Windows 平台上配置 ODBC 和 vsql 客户端

要在 Linux 或 MAC OSX 上配置 ODBC 或 vsql 客户端,必须首先安装 Kerberos 5 客户端软件包。请参阅 配置 Kerberos 身份验证。

安装 Kerberos 5 客户端软件包后,必须向客户端提供有效的 Kerberos 配置文件 (krb5.conf)。要与 KDC 通信,参与 Kerberos 身份验证的每个客户端必须拥有配置相同的有效 krb5.conf 文件。Kerberos 配置文件的默认位置为 /etc/krb5.conf。

Kerberos 配置 (krb5.conf) 文件包含 Kerberos 特定的信息,包括:

  • 如何连接 KDC

  • 默认领域名称

  • 指向日志文件的路径

  • DNS 查询

  • 要使用的加密类型

  • 票证使用期限

Kerberos 配置文件的默认位置为 /etc/krb5.conf

如果配置正确,客户端可以使用 Kerberos 进行身份验证并通过 kinit 实用程序检索票证(请参阅以下获取 ODBC 身份验证请求和连接)。同样,服务器则可以使用 ktutil 在 keytab 文件中存储其凭据

在非 Windows 平台上对 ODBC 和 vsql 客户端进行身份验证

ODBC 和 vsql 使用 kinit 建立的客户端票证执行 Kerberos 身份验证。这些客户端依赖于安全库的默认机制来查找票证文件和 Kerberos 配置文件。

要按照 Kerberos 进行身份验证,请调用 kinit 实用程序以便从 Kerberos KDC 服务器获取票证。以下两个示例显示了如何使用 ODBC 和 vsql 客户端发送票证请求。

获取 ODBC 身份验证请求和连接

  1. 在 ODBC 客户端上,通过调用 kuser 实用程序获取 kinit 用户的票证。

    $ kinit kuser@EXAMPLE.COM
    Password for kuser@EXAMPLE.COM:
    
  2. 连接到 Vertica,并在连接字符串中提供主体:

    char outStr[100];
    SQLLEN len;
    SQLDriverConnect(handle, NULL, "Database=VMart;User=kuser;
    Server=myserver.example.com;Port=5433;KerberosHostname=vcluster.example.com",
    SQL_NTS, outStr, &len);
    

获取 vsql 身份验证请求和连接

如果 vsql 客户端位于您所连接的同一台计算机中,vsql 将通过 UNIX 域套接字连接。此连接将绕过 Kerberos 身份验证。当使用 Kerberos 进行身份验证时,特别是客户端身份验证方法配置为“本地”时,必须包括 -h 主机名选项。请参阅命令行选项

  1. 在 vsql 客户端上,调用 kinit 实用程序:

    $ kinit kuser@EXAMPLE.COM
    Password for kuser@EXAMPLE.COM:
    
  2. 连接到 Vertica,并在连接字符串中提供主机和用户主体:

    $ ./vsql -K vcluster.example.com -h myserver.example.com -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
    

将来,以 kuser 身份登录 vsql 时,vsql 将使用您缓存的票证,而不提示您输入密码。

验证身份验证方法

通过查询 SESSIONS 系统表可以验证身份验证方法:

=> SELECT authentication_method FROM sessions;
 authentication_method
-----------------------
GSS-Kerberos
(1 row)

另请参阅