為 JDBC 連接器啟用 Kerberos 委派

從 2020.2 版本開始,Tableau Server 支援 Kerberos 委派用於 JDBC 連接器。

利用 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 來建立 keytab,使用 UPN 格式的登入主體(例如,service@EXAMPLE.COM),而非使用服務主體名稱(例如, HTTP/service.example.com@EXAMPLE.COM)。您也可以使用 ktpass 公用程式來產生 keytab,在這種情況下,可以使用任何一種主體名稱樣式。

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

    Tableau Server 將使用執行身分服務帳戶和關聯的金鑰表進行驗證並直接連線到資料庫。

  3. 將 keytab 複製到 Tableau Server 資料目錄,並確認「執行身分」服務帳戶可存取和讀取 keytab 檔案。預設情況下,Tableau Server 資料目錄位於 C:\ProgramData\Tableau。如果在分散式部署中執行 Tableau Server,請在叢集中的每個節點上執行此步驟。

  4. 在所有 Tableau Service 節點上建立 krb5.conf 檔案,並安裝在 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

感謝您的意見反應!已成功提交您的意見回饋。謝謝!