針對 Tableau Server 設定 Proxy

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

誰應閱讀本文?

本文面向擁有常規網路和閘道 Proxy 解決方案經驗的 IT 專業人員。本文描述 Tableau 為何以及在何時需要 Internet 存取權限,並描述如何設定網路和 Tableau 以使用正向和反向 Proxy 伺服器來存取 Internet 以及透過 Internet 進行存取。有許多協力廠商 Proxy 解決方案,因此本文的某些內容一定是通用的。

在設定 Proxy 伺服器之前,請參閱與 Internet 通訊

設定正向 Proxy 伺服器

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

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

設定 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>/start-administrative-services

  8. 重新啟動 TSM。

    tsm restart

伺服器當機報告程式

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

反向 Proxy 如何與 Tableau Server 搭配工作

反向 Proxy 是指從外部 (Internet) 用戶端接收請求並將請求轉寄到 Tableau Server 的伺服器。為什麼要使用反向 Proxy ?答案基本上是安全性。透過反向 Proxy ,將可透過 Internet 存取 Tableau Server,而不必向 Internet 暴露該特定 Tableau Server 的單獨 IP 位址。反向 Proxy 還充當驗證和直通裝置,因此在公司外部人員可以存取的位置不會存放資料。這一要求對於需要遵循諸如 PCI、HIPAA 或 SOX 之類的各種隱私法規的組織可能很重要。

下圖說明當用戶端向設定為使用反向 Proxy 伺服器的 Tableau Server 發出請求時的通訊路徑。

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

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

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

  4. 反向 Proxy 將內容傳送給用戶端。就用戶端而言,它剛與 Tableau Server 進行了交互,並且無法得知反向 Proxy 已傳遞了通訊。

Proxy 伺服器和 SSL

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

行動裝置存取

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

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

反向 Proxy 和使用者驗證

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

但並非所有用戶端都將使用反向 Proxy 支援使用者驗證:

  • 對於支援的 Web 瀏覽器,您可以使用 SAML、OpenID Connect、Kerberos、Trusted Ticket 或透過反向 Proxy 手動驗證。但我們推薦採用不會在閘道處提示使用者請求進行驗證的透明方案。這種推薦方案不會停用在閘道 Proxy 處為用戶端/伺服器系統層級驗證使用 SSL,事實上,我們強烈建議使用 SSL 系統層級驗證。

  • Tableau Mobile 支援 SAML 或藉由反向 Proxy 手動驗證。iOS 版 Tableau Mobile 另外藉由反向 Proxy 支援 Kerberos。上述相同建議適用。

  • Tableau Desktop 不支援藉由反向 Proxy 進行驗證。若要藉由 Tableau Desktop 支援遠端存取,請使用 VPN 解決方案或設定反向 Proxy,將流量從 Tableau Desktop 直接路由至 Tableau Server 進行驗證。

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

  • 不支援將啟用自動登入 (SSPI) 的 Active Directory 與反向 Proxy 一起使用。
  • 在將 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/tableau gateway.public.host
非 FQDN Proxy 伺服器的任何子功能變數名稱。在 tableau.example.com 這個範例中,子功能變數名稱為 tableau gateway.trusted_hosts
別名 Proxy 伺服器的任何公用備用名稱。大多數情況下,會使用 CNAME 值指定別名。舉例來說, Proxy 伺服器 bigbox.example.com 以及 CNAME 條目 ftp.example.comwww.example.com gateway.trusted_hosts
從用戶端到反向 Proxy 伺服器的流量的埠號。

gateway.public.port

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

  1. 輸入以下命令以設定用戶端透過 Proxy 伺服器存取 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 伺服器的位元址或 CNAME,其中 server_address 為 IPv4 位址或 CNAME 值:

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

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

  3. 輸入以下命令以為 Proxy 伺服器指定備用名稱,舉例來說它的完全限定功能變數名稱、任何非完全限定功能變數名稱和任何別名。如果有多個名稱,請用逗號將名稱隔開。

    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 伺服器。

下圖顯示了一個單跳訊息鏈的範例標頭,在該訊息鏈中,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 發生「無法登入」和「使用者名稱或密碼無效」的錯誤(Link opens in a new window)

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

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

驗證反向 Proxy 設定

若要驗證反向 Proxy 設定,請使用 Tableau Server Web 製作或 Tableau Desktop 發佈工作簿和資料來源。如果使用 Web 瀏覽器透過 Internet 連線到 Tableau Server,請驗證您是否在使用推薦的瀏覽器(Link opens in a new window)。發佈和查看使用現有資料來源的工作簿以及已發佈的資料來源。使用下面的連結來熟悉以最終使用者身分連線 Tableau Server 的操作。

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

相關主題

感謝您的意見回饋! 提交意見回饋時發生錯誤。請再試一次。