为 JDBC 连接器启用 Kerberos 委派

自版本 2020.2 起,Tableau Server 支持为 JDBC 连接器使用使用 Kerberos 委派。

利用 Kerberos 委派,Tableau Server 能够使用工作簿或视图 Viewer(查看者)的 Kerberos 凭据代表该 Viewer(查看者)执行查询。在以下情况下,这种方法很有用:

  • 您需要知道谁正在访问数据(Viewer(查看者)的名称将出现在数据源的访问日志中)。

  • 数据源具有行级别安全性,即不同的用户可以访问不同的行。

支持的数据源

Tableau 支持使用以下数据源的 JDBC Kerberos RunAs 身份验证:

  • Oracle
  • PostgreSQL

如果要为使用基于 JDBC 的连接器的 Oracle 数据源配置委派,请按照本主题中的步骤操作。或者,如果在 Tableau Server 上运行的连接器使用本机驱动程序,则按照启用 Kerberos 委派帮助主题中的过程进行操作。

要求

Kerberos 委派需要 Active Directory。

  • 必须将 Tableau Server 信息存储配置为使用 LDAP - Active Directory。
  • 不支持 MIT KDC。

注意:您不需要启用运行身份帐户来充当操作系统。

配置过程

此部分提供用于启用 Kerberos 委派的过程示例。

  1. Tableau Server 将需要 Kerberos 服务票证来代表发起数据库调用的用户进行委派。您必须创建一个将用于委派给给定数据库的域帐户。此帐户称为运行身份服务帐户。在本主题中,配置为运行身份帐户的示例用户为 tabsrv@EXAMPLE.COM

    必须为 Active Directory 中的委派配置该帐户:

    1. 在连接到用户域的 Windows Server 上,打开“Active Directory 用户和计算机”。
    2. 在开运行身份服务帐户的“属性”页面,单击“委派”选项卡,并选择“仅信任此用户作为指定服务的委派”和 “使用任何身份验证协议”。
  2. 为运行身份服务帐户创建一个密钥表文件。

    下面的示例使用 JDK 附带的 ktab 工具。您可以在 AdoptOpenJDK(链接在新窗口中打开) 下载该工具。使用 ktab 创建密钥时,请使用 UPN 格式的登录主体(例如,service@EXAMPLE.COM),而不是服务主体名称(例如 HTTP/service.example.com@EXAMPLE.COM)。您还可以使用 ktpass 实用程序生成密钥表,在这种情况下,您可以使用主体名称的任一样式。

    <JDK_HOME>/bin/ktab -k E:/tmp/tabsrv.keytab -a tabsrv@EXAMPLE.COM

    Tableau Server 将使用运行身份服务帐户和关联的密钥表进行身份验证并直接连接到数据库。

  3. 将密钥表复制到 Tableau Server 数据目录中,并验证运行身份服务帐户是否可以访问和读取密钥表文件。默认情况下,Tableau Server 数据目录位于 C:\ProgramData\Tableau。如果在分布式部署中运行 Tableau Server,请在群集中的初始节点上执行此步骤。

  4. 创建 krb5.conf 文件,并安装在所有 Tableau Server 节点上的 C:\Windows 中。

    如果已在组织中的计算机上部署了 krb5.ini 文件,请复制该文件并将其用于 Tableau Server。有关详细信息,请参见 MIT Kerberos 文档主题 krb5.conf(链接在新窗口中打开)

    若要更改 Kerberos 配置文件的位置,请运行以下 TSM 命令:

    tsm configuration set -k native_api.kerberos_config_path --force-keys -v "C:\temp\krb5.ini"

    下面是 krb5.conf 文件的示例。Tableau 支持无法协助创建 krb5.conf。

    [libdefaults]
    forwardable = true
    default_realm = EXAMPLE.COM
    default_tkt_enctypes = rc4-hmac
    default_tgs_enctypes = rc4-hmac
    
    [realms]
    EXAMPLE.COM = {
    kdc = kdc.example.com
    admin_server = kdc.example.com
    }
    
    [domain_realm]
    .example.com = EXAMPLE.COM
    example.com = EXAMPLE.COM
  5. 运行以下 TSM 命令以启用 Kerberos 委派,设置委派服务帐户,并将密钥表文件与服务帐户关联:

    tsm configuration set -k wgserver.delegation.enabled -v true
    tsm configuration set -k native_api.datasource_impersonation_runas_principal -v tabsrv@EXAMPLE.COM
    tsm configuration set -k native_api.datasource_impersonation_runas_keytab_path -v <path-to-file>kerberos.keytab
    tsm configuration set -k native_api.protocol_transition_a_d_short_domain -v false
    tsm configuration set -k native_api.protocol_transition_uppercase_realm -v true

    在某些情况下,TSM 可能会返回提到 --force-keys 的错误。如果遇到此错误,请使用附加到自变量的 --force-keys 参数再次运行命令。

  6. 运行以下 TSM 命令,应用对 Tableau Server 所做的更改:

    tsm pending-changes apply

    如果待定更改需要重新启动服务器,pending-changes apply 命令将显示一个提示,告知您将进行重新启动。即使服务器已停止,此提示也会显示,但在这种情况下不会重新启动。您可以使用 --ignore-prompt 选项隐藏提示,但这样做不会改变重新启动行为。如果更改不需要重新启动,则会在不提示的情况下应用更改。有关详细信息,请参见tsm pending-changes apply

感谢您的反馈!您的反馈已成功提交。谢谢!