为 JDBC 连接器启用 Kerberos 运行身份验证

自版本 2020.2 起,Tableau Server 支持为 JDBC 连接器使用使用 Kerberos 身份验证。

您可以将 Tableau Server 配置为使用 Kerberos 服务帐户来访问数据库。在这种情况下,Tableau Server 会使用服务帐户(也称为“运行身份服务帐户”)连接到数据库。此方案称为“运行身份验证”

请参见运行身份服务帐户

若要在 Tableau Server 上使用运行身份验证,必须首先在 Tableau Desktop 中创建使用集成身份验证的工作簿或数据源。当您发布到 Tableau Server 时,将获得用于使用“运行身份验证”的选项。使用 Web 制作创建数据源时,如果选择集成身份验证,则“运行身份验证”是默认操作。

支持的数据源

Tableau 支持使用以下数据源的 JDBC Kerberos 委派:

  • Oracle
  • PostgreSQL

如果要为使用基于 JDBC 的连接器的 Oracle 数据源配置“运行身份验证”,请按照本主题中的步骤操作。或者,如果在 Tableau Server 上运行的连接器使用本机驱动程序,则不必执行本主题中的步骤。相反,请按照更改运行身份服务帐户主题中介绍的用于创建运行身份服务帐户的步骤进行操作。

要求

Kerberos 委派需要 Active Directory。

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

配置过程

此部分提供用于启用 Kerberos 运行身份验证的过程示例。

  1. 为运行身份服务帐户创建一个密钥表文件。

    下面的示例使用 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 将使用运行身份服务帐户和关联的密钥表进行身份验证并直接连接到数据库。

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

  3. 运行以下 TSM 命令以设置运行身份服务帐户和密钥表文件路径:

    tsm configuration set -k native_api.datasource_runas_principal -v tabsrv@EXAMPLE.COM
    tsm configuration set -k native_api.datasource_runas_keytab_path -v <path-to-file>kerberos.keytab

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

  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 命令,应用对 Tableau Server 所做的更改:

    tsm pending-changes apply

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

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