為 Tableau Server 設定 Proxy 與負載平衡器

在大多數企業中,Tableau Server 需要與 Internet 通訊。Tableau Server 旨在受保護的內部網路內部執行。不要直接在 Internet 或 DMZ 中設定 Tableau Server。相反,您的網路和 Internet 之間的通訊應使用 Proxy 伺服器傳遞。正向 Proxy 伺服器將流量從網路內部傳遞到 Internet 上的目標。反向 Proxy 伺服器與負載平衡其將流量從 Internet 傳遞到網路內部的目標。

誰應閱讀本文?

本文面向擁有一般網路、負載平衡與閘道 Proxy 解決方案經驗的 IT 專業人員。本文論述了 Tableau 如何以及在何時需要網際網路存取權限,以及如何設定網路與 Tableau 以使用 Proxy 伺服器與負載平衡器存取與從網際網路中存取。因為有很多協力廠商 解決方案可供選擇,因此本文的某些內容一定是通用內容。

在配置 Proxy 伺服器之前,請參閱與 Internet 通訊

設定正向 Proxy 伺服器

若要實現從 Tableau Server 到 Internet 的通訊,請將 Tableau Server 部署在正向 Proxy 伺服器後面。當 Tableau Server 需要存取 Internet 時,它不會將請求直接傳送到 Internet,而是會將請求傳送到正向 Proxy ,後者將會轉寄請求。正向 Proxy 可以幫助管理員針對負載平衡、阻止存取網站等工作管理外流到 Internet 的流量。

如果使用正向 Proxy ,您必須將網路內部執行 Tableau Server 的電腦設定為將流量傳送到正向 Proxy。Tableau Server 不支援直通或手動 Proxy 驗證。

若使用正向 Proxy 解決方案執行 OpenID 驗證,則需要其他設定。請參閱為 OpenID Connect 設定 Tableau Server

配置 Linux 版 Tableau Server 以使用正向 Proxy

我們建議在安裝過程中將 Tableau Server 設定為使用正向 Proxy 解決方案。具體而言,請按安裝和初始化 TSM中所述在執行 ./initialize-tsm 時設定 Tableau Server,或在 Tableau Server 的自動安裝過程中進行設定。

以下程序說明如何在 Linux 的 Tableau Server 建立正向 Proxy 組態設定檔。

此設定檔位於以下目錄中:

~<unprivileged_user>/.config/systemd/tableau_server.conf.d

預設情況下,Tableau Server 會建立不具權限使用者, tableau。因此,設定目錄的預設路徑為:

~tableau/.config/systemd/tableau_server.conf.d

本主題的 Proxy 設定檔名稱和位以下所述的設定檔為 20-proxy.conf。您可以根據自己的習慣命名此檔案,但是必須使用 .conf 副檔名。systemd 會根據檔案名稱,按照彙順序處理儲存在 tableau_server.conf.d 目錄中的檔案。

  1. 執行 tsm stop 命令。

  2. 以不具權限使用者身分啟動工作階段。預設情況下,tableau 是在安裝期間由 Tableau Server 建立的不具權限使用者。執行以下命令:

    sudo su -l tableau

  3. tableau_server.conf.d 目錄中建立或開啟 20-proxy.conf 檔案。如果您在安裝期間設定了正向 Proxy,則您已經建立 20-proxy.conf 檔案。

    • 建立檔案。執行以下命令:

      touch ~tableau/.config/systemd/tableau_server.conf.d/20-proxy.conf

    • 在文字編輯器中開啟 20-proxy.conf 檔案。

  4. Proxy 組態檔案內容複製到檔案中。如果您正在編輯現有的檔案,則請勿刪除設定。Proxy 組態檔案內容包含如何設定正向 Proxy 組態的指示。在完成編輯並儲存檔案後,請前往步驟 5。

  5. Proxy 組態檔案內容
    
    # Always edit this file on Tableau Server as the unprivileged user. By default, tableau, is the unprivileged user created by Tableau Server during installation.
    # Set environment variables http_proxy and https_proxy to point to your proxy host.
    # For example, to set the proxy to example-host for ports 80 and 443, run the following commands:
    #
    http_proxy=http://example-host:80/
    https_proxy=http://example-host:443/
    #
    # Take care to use 'http' when you specify the URL for the https_proxy environmental variable.  
    # Do not specify the 'https' protocol for the value of  the https_proxy environmental variable.
    #                   
    # To bypass the proxy server, specify exceptions in the no_proxy variable. Use this variable if your proxy server does not route internal addresses. 
    # You must also add exceptions to this proxy configuration to guarantee that all communications within a local Tableau Server cluster (if you have one now or will have one later) do not route to the proxy server. 
    # Enter both the host name and the IP address for each computer. Additionally, include the cannonical host name (localhost) and IP address (127.0.0.1) for the local computer.
    # For example, to specify exceptions for a three-node cluster:
    #
    no_proxy="localhost,127.0.0.1,hostname1,hostname2,hostname3,IP1,IP2,IP3"
    #									
    # Where "hostname1" is the actual hostname of node 1, and "IP1" is the actual IP address of node 1, etc.
  6. 結束 Tableau shell。執行以下命令:

    exit

  7. 重新啟動 TSM 商務服務。執行以下指令碼命令:

    sudo /opt/tableau/tableau_server/packages/scripts.<version>/stop-administrative-services

    sudo /opt/tableau/tableau_server/packages/scripts.<version>/start-administrative-services

  8. 重新啟動 TSM。

    tsm restart

伺服器當機報告程式

如果您的組織使用 Proxy 伺服器連線到網際網路,您必須設定 Tableau Server 的當機報告程式才能使用 Proxy。即使您已將 Tableau Server 設為使用 Proxy,您還必須單獨設定伺服器當機報告程式。如要設定伺服器當機報告程式的 Proxy,請參閱設定伺服器當機報告程式

反向 Proxy 及負載平衡器如何與 Tableau Server 搭配工作

反向 Proxy 是及負載平衡器是從外部(網際網路)用戶端接收請求並將請求轉寄到 Tableau Server 的伺服器。這些解決方案讓 Tableau Server 可用於網際網路,而不必向其公開特定 Tableau Server 的單獨 IP 位址。它們也可以作為驗證與傳遞裝置使用,因此不會將資料儲存在公司外部人員可以存取的位置。這一要求對於需要遵循諸如 PCI、HIPAA 或 SOX 之類的各種隱私法規的組織可能很重要。

下圖演示了用戶端向設定為使用反向 Proxy 伺服器和/或負載平衡器(LB)的 Tableau Server 發出請求時的通訊路徑。

  1. 外部用戶端發起 Tableau Server 連線。此用戶端使用為反向 Proxy 伺服器/LB 設定的公用 URL,例如 https://tableau.example.com。(該用戶端不知道它存取的是反向 Proxy /LB。)

  2. 反向 Proxy 反過來會將該請求對應至 Tableau Server 請求。在有些情境中,可以將反向 Proxy 設定為(使用 SSL/TLS)對用戶端進行驗證,以作為將請求傳遞給 Tableau Server 的前提條件。

  3. Tableau Server 獲取請求並將其回應傳送到反向 Proxy/LB。

  4. 反向 Proxy/LB 將內容傳送回該用戶端。就用戶端而言,它剛與 Tableau Server 進行了互動,並且無法得知通訊是透過中間伺服器傳遞。

TLS/SSL

根據閘道情形,您應該考慮將反向 Proxy 與負載平衡伺服器設定為對您網路外部的任何流量使用 TLS/SSL。這有助於保護隱私、內容完整性和驗證。除非您已經採取了其他安全措施來保護您的 Internet 閘道與 Tableau Server 之間的流量,否則,也建議設定閘道 Proxy 與 Tableau Server 之間的 SSL。您可以使用內部憑證或自我簽署憑證來對 Tableau 伺服器和其他內部電腦之間的流量進行加密。

行動裝置存取

Tableau Server 會向 Tableau Mobile 會話的所有 HTTP 回應中新增 X 標頭。預設情況下,大多數 Proxy 解決方案將保留 X 標頭。如果您的閘道解決方案未保留 X 標頭,則需要設定您的 Proxy 伺服器與負載平衡器,以便為行動用戶端工作階段的所有 HTTP 回應保留以下標頭:X-Tableau: Tableau Server

如果已在閘道設定了驗證,則 Proxy 伺服器/LB 必須使用 HTTP 302 回應來回應 Tableau Mobile HTTP 請求。302 必須重新導向到身分識別提供者登入頁面。要查看一個描述 302 驗證序列的圖表,請參閱 Tableau 社群中的 Tableau Mobile 驗證序列(連結在新視窗開啟)

反向 Proxy、負載平衡器與使用者驗證

Tableau Server 會始終驗證使用者的身分。這意味著,即使您在組織閘道處對輸入連線進行驗證,Tableau Server 仍將驗證使用者的身分。

但並非所有用戶端都支援使用閘道解決方案的使用者驗證:

  • 對於支援的 Web 瀏覽器,您可以使用 SAML、OpenID Connect、Kerberos、受信任票證或透過反向 Proxy /LB 手動驗證。

  • Tableau Mobile 支援 SAML 或使用反向 Proxy/LB 手動驗證。Tableau Mobile 的 iOS 版本同時支援使用反向 Proxy/LB 的 Kerberos。上述相同建議適用。

  • Tableau Prep 不支援使用反向 Proxy 或負載平衡器進行驗證。對於遠端存取,請使用 VPN 解決方案或設定您的閘道服務,將來自 Tableau Prep 的流量直接路由至 Tableau Server 進行驗證。

  • Tableau Desktop 支援使用反向 Proxy 進行驗證,前提是在將流量路由到 Tableau Server 進行最終驗證之前驗證模組對反向 Proxy 執行預驗證。有關詳細資訊,請參閱 Tableau Server 企業部署指南第 5 部分 - 設定 Web 層(連結在新視窗開啟)設定 Independent Gateway 的驗證模組

如果您的組織使用 Active Directory 進行驗證:

  • 在將 Tableau Server 設定為使用 Kerberos 之前,必須針對反向 Proxy 配置 Tableau Server。有關詳情,請參閱設定 Kerberos

將 Tableau Server 設定為使用反向 Proxy 伺服器和/或負載平衡器

在設定 Tableau Server 之前,您需要收集有關 Proxy 伺服器設定的以下資訊。若要設定 Tableau Server,請使用 tsm configuration set 命令。您需要收集的資訊與執行 tsm 時所需的選項對應。

大多數以下 tsm 選項也用於設定在負載平衡器後面執行的 Tableau Server 部署。有關詳情,請參閱新增負載平衡器

說明對應的 tsm configuration set 選項
IP 位址CNAME

對於此選項,您可以輸入 IP 位址或 CNAME。

Proxy 與負載平衡器伺服器的一個或多個公用 IP 位址。IP 位址必須採用 IPv4 格式(舉例來說 203.0.113.0),並且必須是靜態 IP。

如果無法提供靜態 IP 位址,或者如果您正在使用雲端 Proxy 或外部負載平衡器,則您可以指定用戶端連線到 Tableau Server 時將使用的 CNAME(正式名稱)DNS 值。必須在反向 Proxy 解決方案中設定此 CNAME 值以與 Tableau Server 通訊。

gateway.trusted
FQDN人員存取 Tableau Server 所使用的完全限定的功能變數名稱,如 tableau.example.com。Tableau Server 不支援此選項的上下文切換。例如,不支援下列 URL:example.com/tableaugateway.public.host
非 FQDN用於 Proxy 或 LB 伺服器的任意子網域名稱。在 tableau.example.com 這個範例中,子功能變數名稱為 tableaugateway.trusted_hosts
別名Proxy 或 LB 伺服器的任意公用備用名稱。大多數情況下,會使用 CNAME 值指定別名。舉例來說, Proxy 伺服器 bigbox.example.com 以及 CNAME 條目 ftp.example.comwww.example.comgateway.trusted_hosts
從用戶端到反向 Proxy 伺服器的流量的埠號。

gateway.public.port

如果使用 Tableau Server 的分散式安裝,則在叢集中的初始節點上執行以下 tsm 命令。

  1. 輸入以下命令以設定用戶端將透過 Proxy 和/或 LB伺服器存取 Tableau Server 時將使用的 FQDN,其中 name 是 FQDN:

    tsm configuration set -k gateway.public.host -v 'name'

    舉例來說,如果透過在瀏覽器中輸入 https://tableau.example.com 來存取 Tableau Server,請輸入此命令:

    tsm configuration set -k gateway.public.host -v 'tableau.example.com'

  2. 輸入以下命令以設定 Proxy 和/或 LB 伺服器的位址或 CNAME,其中 server_address 為 IPv4 位址或 CNAME 值:

    tsm configuration set -k gateway.trusted -v 'server_ip_address'

    如果您的組織使用多個 Proxy 伺服器和/或 LB 伺服器,請輸入多個 IPv4 位址,並用逗號分隔。不支援 IP 範圍。為了改善 Tableau Server 的啟動和初始化,請最大程度地減少 gateway.trusted 的條目數。

  3. 輸入以下命令以為 Proxy/LB 伺服器指定備用名稱,比如它們的完整網域名稱、任何非完整網域名稱和任何別名。如果有多個名稱,請用逗號將名稱隔開。

    tsm configuration set -k gateway.trusted_hosts -v 'name1, name2, name3'

    例如:

    tsm configuration set -k gateway.trusted_hosts -v 'proxy1.example.com, proxy1, ftp.example.com, www.example.com'

  4. 如果 Proxy 伺服器使用 SSL 與 Internet 通訊,請執行以下命令,告知 Tableau 反向 Proxy 伺服器正在使用埠 443,而不是埠 80:

    tsm configuration set -k gateway.public.port -v 443

    附註:如果 Proxy 伺服器使用 SSL 與 Tableau Server 進行通訊,則必須在 Tableau Server 上設定和啟用 SSL。

  5. 輸入以下命令以提交設定變更:

    tsm pending-changes apply

    如果擱置組態需要重新啟動伺服器,pending-changes apply 命令將顯示提示,讓您知道即將重新啟動。即使伺服器已停止,也會顯示提示,但在這種情況下不會重新啟動。您可以使用 --ignore-prompt 選項隱藏提示,但這樣做不會改變重新啟動行為。如果變更不需要重新啟動,則不會出現提示即可套用變更。有關詳情,請參閱 tsm pending-changes apply

將反向 Proxy 或負載平衡伺服器設定與 Tableau Server 搭配使用

用戶端透過反向 Proxy 或負載平衡器存取 Tableau Server 時,必須要保留(或新增)特定訊息標頭。具體而言,必須在 gateway.trustedgateway.trusted_hosts 設定中包含訊息鏈中的所有伺服器。

下圖顯示了一個單跳訊息鏈的範例標頭,在該訊息鏈中,Proxy 伺服器直接與 Tableau Server 通訊:

下圖顯示了一個多跳訊息鏈的範例標頭,在該訊息鏈中,訊息在連線到 Tableau Server 之前將穿過兩個 Proxy 伺服器:

下表介紹了這些標頭,以及這些標頭如何與 Tableau Server 上的設定設定相關:

標題說明相關的 Tableau Server 設定
REMOTE_ADDRX-FORWARDED-FOR (XFF)Tableau Server 需要這些標頭來確定請求來源的 IP 位址。X-FORWARDED-FOR 標頭必須按連線進行的順序將 IP 位址鏈提供給 Tableau Server。您在 gateway.trusted 中設定的 IP 地址必須與 REMOTE_ADDR 中呈現的 IP 地址相符。如果在 gateway.trusted 中傳送了多個位址,則其中一個位址必須與 REMOTE_ADDR 中呈現的 IP 地址相符。
HOSTX-FORWARDED HOST (XFH)這些標頭用於在 Tableau Server 回復用戶端時產生指向 Tableau Server 的絕對連結。X-FORWARDED-HOST 標頭必須按連線進行的順序將主機名稱提供給 Tableau Server。X-FORWARDED-HOST 標頭中呈現的主機名稱必須包括在 gateway.trusted_hosts 中指定的主機名稱中。
X-FORWARDED-PROTO (XFP)如果為從用戶端到 Proxy 的流量啟用了 SSL,但沒有為從 Proxy 到 Tableau Server 的流量啟用,則必須提供標題。

對於未沿著訊息路由的每個躍點來維護 HTTP 或 HTTPS 的情況, X-FORWARDED-PROTO 標頭很重要。舉例來說,如果反向 Proxy 需要使用 SSL 來處理外部請求,但是未將反向 Proxy 與 Tableau Server 之間的通訊設定為使用 SSL,則需要提供 X-FORWARDED-PROTO 標頭。有些 Proxy 解決方案會自動新增 X-FORWARDED-PROTO 標頭,而有些則不會。最後,根據您的 Proxy 解決方案,您可能必須設定埠轉寄以將請求從埠 443 轉到埠 80。

相關知識庫文章:在升級之後,SAML 發生「無法登入」和「使用者名稱或密碼無效」的錯誤(連結在新視窗開啟)

必須在相應的參數中指定反向 Proxy 上的埠設定(來自用戶端的輸入連線以及到 Tableau Server 的輸出連線):gateway.public.port,這是用於連線到 Proxy 的埠用戶端。

如果 Proxy 伺服器使用 SSL 與 Tableau Server 進行通訊,則必須在 Tableau Server 上設定和啟用 SSL。

驗證反向 Proxy 與負載平衡器設定

要驗證閘道至 Tableau Server 設定,請使用 Tableau Server Web 製作或 Tableau Desktop 發佈工作簿與資料來源。如果使用 Web 瀏覽器透過 Internet 連線到 Tableau Server,請驗證您是否在使用推薦的瀏覽器(連結在新視窗開啟)。發佈和查看使用現有資料來源的工作簿以及已發佈的資料來源。使用下面的連結來熟悉以最終使用者身分連線 Tableau Server 的操作。

工作文件
Web 製作概觀。在 Web 上使用 Tableau(連結在新視窗開啟)
從 Tableau Desktop 或 Web 瀏覽器登入到 Tableau Server。登入 Tableau Server 或 Tableau Online(連結在新視窗開啟)
將工作簿發佈到 Tableau Server。發佈工作簿(連結在新視窗開啟)
發佈資料來源。發佈資料來源(連結在新視窗開啟)
從 Tableau Server 中開啟工作簿。從伺服器開啟工作簿(連結在新視窗開啟)
登出 Server(使用 Desktop)。登入 Tableau Server 或 Tableau Online(連結在新視窗開啟)
透過 Web 瀏覽器下載工作簿。下載工作簿(連結在新視窗開啟)
檢查以確保 tabcmd(從非伺服器用戶端中)正常工作。tabcmd

相關主題

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