Kerberos 身份验证

Kerberos 身份验证使用以下组件来执行用户身份验证。

客户端程序包

Kerberos 5 客户端程序包用于与 KDC 服务器进行通信。此软件包并不作为 Vertica Analytics Platform 安装的一部分包含在内。Kerberos 软件内置在 Microsoft Windows 中。如果使用的是其他操作系统,必须获取并安装该客户端软件包。

如果您的系统上还没有 Kerberos 5 客户端程序包,请从 MIT Kerberos 分发页面下载。在 Kerberos 身份验证中使用的每个 Vertica 服务器和客户端上安装此程序包,KDC 本身除外。

有关安装说明,请参阅 Kerberos 文档

服务主体

服务主体由主机名、服务名称和分配了一组凭据的领域组成 (service/hostname@REALM)。这些凭据会连接到服务,即您通过网络连接并使用 KDC 进行身份验证的主机。

要创建领域名,请参阅指定 KDC 信息并配置领域。主机名必须与操作系统提供的值匹配。通常,它是一个完全限定主机名。如果主体的主机名部分与操作系统提供的值不匹配,Kerberos 身份验证会失败。

有些系统使用主机文件(/etc/hosts 或 /etc/hostnames)来定义主机名。主机文件可以为一个主机定义多个名称。操作系统提供了第一个条目,因此,请在主体中使用此条目。例如,如果主机文件包含:

192.168.1.101 v_vmart_node0001.example.com v_vmart_node0001

则将 v_vmart_node0001.example.com 作为主机名值。

将以下内容配置为 Kerberos 主体:

  • 每一个客户端(连接到 Vertica 的用户或应用程序)

  • Vertica 服务器

有关详细信息,请参阅以下主题:

Keytab 文件

主体存储在加密 Keytab 文件中。Keytab 文件包含 Vertica 主体的凭据。它有助于 Vertica 服务器向 KDC 验证自身身份。您需要使用 Keytab,这样 Vertica 分析型数据库就不会提示您输入密码。

请为群集中的每个节点创建一个服务主体。然后,您可以创建各个 Keytab 文件(每个节点一个,其中仅包含该节点的主体),或创建一个包含所有主体的 Keytab 文件。

  • 创建一个包含所有主体的 Keytab 文件 可简化设置:所有节点具有相同的文件,可简化初始设置。如果在以后添加节点,则可以更新(和重新分发)全局 Keytab 文件或为新节点创建单独的 Keytab。如果某个主体受损,则该主体在包含它的所有节点的 Keytab 文件中也会受损。

  • 在每个节点中创建单独的 Keytab 文件 可简化维护工作。不过,初始设置时的工作量较大,因为您必须在每个节点中创建不同的文件,但主体不会在各个节点之间共享。如果在以后添加节点,则可以在新节点中创建 Keytab。每个节点的 Keytab 仅包含一个主体,即用于此节点的主体。

票证授予票证

票证授予票证 (TGT) 用于检索对域中服务器的用户进行身份验证的服务票证。随后的登录请求将使用缓存的 HTTP 服务票证进行身份验证,除非该票证已到 krb5.conf 中的 ticket_lifetime 参数中设置的过期时间。

多领域支持

Vertica 使用 ALTER AUTHENTICATION 中的 SET param=value 参数(REALM 作为参数)为 Kerberos 身份验证提供多领域支持:

=> ALTER AUTHENTICATION krb_auth_users set REALM='USERS.COM';
=> ALTER AUTHENTICATION krb_auth_realmad set REALM='REALM_AD.COM';

这允许您分配不同的领域,以便其他领域的用户可以向 Vertica 验证身份。

多领域支持仅适用于 GSS 身份验证类型。每种身份验证方法可以有一个领域。如果您有多种身份验证方法,则每种方法都可以有自己的领域:

=> SELECT * FROM client_auth;
auth_oid | auth_name | is_auth_enabled | auth_host_type | auth_host_address | auth_method | auth_parameters     | auth_priority
---------+-----------+-----------------+----------------+-------------------+-------------+-----------------+-----------------
45035996 | krb001    |   True          |   HOST         |  0.0.0.0/0        |  GSS        | realm=USERS.COM     |  0
45035997 | user_auth |   True          |   LOCAL        |                   |  TRUST      |                     |  1000
45035737 | krb002    |   True          |   HOST         |  0.0.0.0/0        |  GSS        | realm=REALM_AD.COM  |  1