第 5 部分 - 配置 Web 層

參考架構的 Web 層應包括以下組件:

  • 面向 Web 的應用程式負載平衡器,它接受來自 Tableau 用戶端的 HTTPS 請求並與反向 proxy 伺服器進行通訊。
  • 反向 proxy: 
    • 建議部署 Tableau Server 獨立閘道。
    • 建議至少使用兩個 proxy 伺服器為冗餘和處理用戶端加載。
    • 從負載平衡器接收 HTTPS 流量。
    • 支援 Tableau 主機的相黏工作階段。
    • 為執行閘道過程的每個 Tableau Server 設定循環負載平衡 proxy。
    • 處理來自外部 IdP 的身份驗證請求。
  • 正向 Proxy:Tableau Server 需要存取網際網路獲得授權與對應功能。您必須為 Tableau 服務 URL 設定正向 proxy 允許清單。請參閱《與網際網路通訊》 Linux(連結在新視窗開啟))。
  • 所有與用戶端相關的流量都可以透過 HTTPS 加密:
    • 用戶端到應用程式負載平衡器
    • 應用程式負載平衡器到反向 proxy 伺服器
    • Proxy 伺服器到 Tableau Server
    • 在反向 proxy 上執行到 IdP 的身份驗證處理程序
    • Tableau Server 到 IdP

Tableau Server 獨立閘道

Tableau Server 版本 2022.1 中引入了 Tableau Server 獨立閘道。獨立閘道是 Tableau 閘道流程的獨立執行個體,用作 Tableau 感知反向 Proxy。

獨立閘道支援到後端 Tableau Server 的簡單循環配置資源負載平衡。但是,獨立閘道並非旨在充當企業應用程式負載平衡器。我們建議在企業級應用程式負載平衡器後面執行獨立閘道。

獨立閘道需要 Advanced Management 授權。

驗證和授權

預設參考架構會指定安裝 Tableau Server 並設定本機驗證。在此模型中,用戶端必須連線到 Tableau Server 才能透過本機 Tableau Server 本機驗證流程進行驗證。不建議在參考架構中使用此驗證方法,因為該情境要求未經驗證的用戶端與應用程式層通訊,這存在安全風險。

相反,我們建議設定企業級外部身分識別提供者和 AuthN 模組,以預先驗證所有到應用程式層的流量。使用外部 IdP 設定時,不使用本機 Tableau Server 本機驗證流程。在 IdP 對使用者進行驗證後,Tableau Server 會授權存取部署中的資源。

使用 AuthN 模組進行預先驗證

在本指南中記錄的範例中,已設定 SAML SSO,但可以使用大多數外部身分識別提供者和 AuthN 模組設定預先驗證流程。

在參考架構中,反向 Proxy 設定為在 Proxy 處理這些對 Tableau Server 的請求之前與 IdP 建立用戶端驗證工作階段。我們將此過程稱為預驗證階段。反向 Proxy 只會將經過驗證的用戶端工作階段重新導向到 Tableau Server。然後,Tableau Server 將建立一個工作階段,使用 IdP 驗證工作階段的身分驗證,然後傳回用戶端請求。

下圖顯示了已設定 AuthN 模組的預先驗證和驗證流程的分步詳細資訊。反向 Proxy 可能為泛型協力廠商解決方案或 Tableau Server 獨立閘道:

上圖所示的步驟。步驟 1:Tableau 用戶端請求 Tableau Server 上的資源。第 2 步:反向 Proxy 建立身份驗證請求,並將 URL 重新導向到身份提供者。第 3 步:身份提供者向使用者傳送登入表單。第 4 步:提示使用者輸入憑證。第 5 步:身份提供者驗證使用者提交的憑證。第 6 步:身份提供者回應發佈至反向 Proxy 服務提供者內嵌 SAML 判斷的用戶端。步驟 7:Proxy 上的服務提供者驗證判斷,建立工作階段,然後重新導向到 Tableau Server 上的服務提供者。步驟 8:Tableau Server 上的服務提供者向身份提供者建立身份驗證請求。第 9 步:身份提供者驗證當前工作階段。步驟 10:Tableau Server 上的服務提供程式驗證並建立自己的工作階段並將回應傳送給使用者。步驟 11:使用者連線到 Tableau Server 以對指定資源進行授權。

設定概觀

以下為設定 Web 層的過程概觀。在每個步驟之後驗證連線:

  1. 設定兩個反向 proxy 以提供對 Tableau Server 的 HTTP 存取。
  2. 在 proxy 伺服器上使用相黏工作階段設定負載平衡邏輯,以連線到執行閘道處理序的每個 Tableau Server 執行個體。
  3. 在 Internet 閘道使用相黏工作階段設定套用應用程式負載平衡,以將請求轉傳到反向 proxy 伺服器。
  4. 使用外部 IdP 設定身份驗證。可以在反向 proxy 伺服器上安裝身份驗證處理程式來設定 SSO 或 SAML。AuthN 模組管理外部 IdP 和 Tableau 部署之間的驗證信號交換。Tableau 還將充當 IdP 服務提供者並使用 IdP 對使用者進行身份驗證。
  5. 要在此部署中使用 Tableau Desktop 進行身份驗證,用戶端必須執行 Tableau Desktop 2021.2.1 或更高版本。

使用 Tableau Server 獨立閘道設定 Web 層的範例

本主題的其餘部分會介紹一個端到端的過程,該過程會描述如何使用 Tableau Server 獨立閘道在範例 AWS 參考架構中實作 Web 層。有關使用 Apache 作為反向 Proxy 的範例設定,請參閱附錄 - 具有 Apache 示例部署的 Web 層

範例設定由以下元件組成:

  • AWS 應用程式負載平衡器
  • Tableau Server 獨立閘道
  • Mellon 驗證模組
  • Okta IdP
  • SAML 驗證

附註:本節中提供的範例 Web 層設定包括部署協力廠商軟體和服務的詳細程序。我們已盡最大努力驗證和記錄啟用 Web 層方案的過程。但是,協力廠商軟體可能會發生變化,或者您的方案可能與此處描述的參考架構不同。權威設定細節和支援請參考協力廠商文件。

整個區段中的 Linux 範例展示了 RHEL-like 發行版的命令。具體來說,這裡的命令是使用 Amazon Linux 2 發行版開發的。若執行的是 Ubuntu 發行版,請編輯相對應的命令。

在此範例中部署 Web 層遵循逐步設定和驗證程序。核心 Web 層設定包含以下步驟,用於在 Tableau 和 Internet 之間啟用 HTTP。獨立閘道執行並設定為在 AWS 應用程式負載均衡器後面進行反向 proxy/負載均衡:

  1. 準備環境
  2. 安裝獨立閘道
  3. 設定獨立閘道伺服器
  4. 配置 AWS 應用程式負載均衡器

設定 Web 層並驗證與 Tableau 的連線後,使用外部提供者設定身份驗證。

準備環境

在部署獨立閘道之前完成以下工作。

  1. AWS 安全性群組變更。將公共安全群組設定為允許來自私人安全群組的傳入獨立閘道內務管理流量 (TCP 21319)。

  2. 第 4 部分 - 安裝並設定 Tableau Server中所述,在四節點 Tableau Server 叢集上安裝版本 22.1.1(或更高版本)。

  3. 設定主機電腦中所述,在公共安全性群組中設定兩個 Proxy EC2 執行個體。

安裝獨立閘道

Tableau Server 獨立閘道需要 Advanced Management 授權。

部署 Tableau Server 獨立閘道包括安裝和執行 .rpm 套件,然後設定初始狀態。本指南中包含的程序為部署到參考架構中提供了說明性指導。

若您的部署與參考架構不同,請參閱核心 Tableau Server 文件使用獨立閘道安裝 Tableau Server (Linux(連結在新視窗開啟))。

重要提示:設定獨立閘道是可能出錯的程序。跨獨立閘道伺服器的兩個執行個體對設定問題進行疑難排解非常困難。因此建議一次設定一個獨立閘道伺服器。設定第一台伺服器並驗證功能後,應設定第二台獨立閘道伺服器。

儘管您將分別設定每個獨立閘道伺服器,請在安裝到公共安全群組中的兩個 EC2 執行個體中執行此安裝過程: 

  1. 執行更新以將最新的修正套用到 Linux OS:

    sudo yum update

  2. 如果安裝到 Apache,請將其移除:

     sudo yum remove httpd
  3. 將版本 2022.1.1(或更高版本)獨立閘道安裝套件從 Tableau 下載頁面(連結在新視窗開啟)複製到將執行 Tableau Server 的主機電腦。

    例如,在執行 Linux RHEL-like 操作系統的電腦上,執行:

    wget https://downloads.tableau.com/esdalt/2022<version>/tableau-server-tsig-<version>.x86_64.rpm

  4. 執行安裝程式:例如,在類似於 Linux RHEL 的作業系統上,執行:

    sudo yum install <tableau-tsig-version>.x86_64.rpm

  5. 變更為/opt/tableau/tableau_tsig/packages/scripts.<version_code>/ 目錄,並執行位於該處的 initialize-tsig 指令碼。除了 --accepteula 標幟外,還必須包括執行 Tableau Server 部署的子網路之 IP 範圍。使用 -c 選項指定 IP 範圍。下面的範例顯示了包含指定範例 AWS 子網路的命令:

    sudo ./initialize-tsig --accepteula -c "ip 10.0.30.0/24 10.0.31.0/24"

  6. 初始化完成後,開啟 tsighk-auth.conf 檔案,並複製檔案中的驗證密碼。作為後端 Tableau Server 設定的一部分,需要為每個獨立閘道執行個體提交此程式碼:

    sudo less /var/opt/tableau/tableau_tsig/config/tsighk-auth.conf

  7. 在獨立閘道的兩個執行個體上執行上述步驟後,準備 tsig.json 設定檔。設定檔由「independentGateways」陣列組成。該陣列包含設定物件,每個物件定義獨立閘道執行個體的連線詳細資訊。

    複製以下 JSON,並根據部署環境對其進行自訂。此處的範例顯示了範例 AWS 參考架構的檔案。

    下面的示例 JSON 檔案僅包含一個獨立閘道連線資訊。在此程序的後續部分,您將包括第二個獨立閘道伺服器連線資訊。

    將檔案儲存為 tsig.json,以用於以下程序。

    {
    "independentGateways": [
     {
     	"id": "ip-10-0-1-169.ec2.internal",
     	"host": "ip-10-0-1-169.ec2.internal",
     	"port": "21319",
     	"protocol" : "http",
     	"authsecret": "13660-27118-29070-25482-9518-22453"
     	}]
     }

    • "id"- 執行獨立閘道的 AWS EC2 執行個體的私人 DNS 名稱。
    • "host" - 與 "id" 相同。
    • "port"- 內務處理連接埠,預設為 "21319"
    • "protocol"- 用戶端流量的通訊協定。將此保留為 http,用戶端流量的通訊協定。
    • "authsecret"- 在上一步中複製的密碼。

獨立網關:直接與轉送連線

在繼續之前,必須決定在部署中設定哪種連線配置:直接連線或轉送連線。此處簡要描述了每個選項以及相關的決策資料點。

轉送連線:可以將獨立閘道設定為透過單個連接埠將用戶端通訊轉送到 Tableau Server 上的閘道流程。我們將此稱為轉送連線:

  • 轉送流程會導致從獨立閘道到後端 Tableau Server 閘道流程的過程中產生額外的躍點。與直接連線設定相比,額外的躍點會降低效能。
  • 轉送模式支援 TLS。轉送模式下的所有通訊都僅限於單一通訊協定(HTTP 或 HTTPS),因此可以使用 TLS 進行加密和驗證。

直接連線:獨立閘道可以透過多個連接埠直接與後端 Tableau Server 流程通訊。我們將這種通訊稱為直接連線:

  • 由於直接連線到後端 Tableau Server,因此與轉送連線選項相比,用戶端效能顯著提高。
  • 需要開啟 16 個以上從公共子網路到私人子網路的連接埠,以便實現從獨立閘道到 Tableau Server 電腦的直接流程通訊。
  • 從獨立閘道到 Tableau Server 的流程尚不支援 TLS。

要在 Tableau Server 和 Independent Gateway 之間執行 TLS,您必須設定中繼連線。EDG 中的範例場景設定中繼連線。

  1. tsig.json 複製到 Tableau Server 部署的節點 1。

  2. 在節點 1 上執行以下命令,以啟用獨立閘道。

    tsm stop
    tsm configuration set -k gateway.tsig.proxy_tls_optional -v none
    tsm pending-changes apply
    tsm topology external-services gateway enable -c tsig.json
    tsm start

由於直接連線不支援 TLS,因此我們建議僅在能夠以其他方式保護所有網路流量的情況下才設定直接連線。要在 Tableau Server 和 Independent Gateway 之間執行 TLS,您必須設定中繼連線。EDG 中的範例場景設定中繼連線。

若將獨立閘道設定為直接連線到 Tableau Server,則必須啟用設定以觸發通訊。Tableau Server 與獨立閘道通訊後,將建立通訊協定目標。然後,必須從獨立閘道電腦中擷取 proxy_targets.csv,並開啟從 AWS 中公共安全性群組到私人安全性群組的相應連接埠。

  1. tsig.json 複製到 Tableau Server 部署的節點 1。

  2. 在節點 1 上執行以下命令,以啟用獨立閘道。

    tsm stop
    tsm topology external-services gateway enable -c tsig.json
    tsm start
  3. 在獨立閘道電腦上執行以下命令,以檢視 Tableau Server 叢集正在使用的連接埠:

    less /var/opt/tableau/tableau_tsig/config/httpd/proxy_targets.csv
  4. 設定 AWS 安全性群組。新增 proxy_targets.csv 中列出的 TCP 連接埠,以允許從公共安全性群組到私人安全性群組的通訊。

    建議自動化連接埠輸入設定,因為若 Tableau Server 部署發生變更,連接埠可能會變更。在 Tableau Server 部署上新增節點或重新設定流程將觸發對獨立閘道所需的連接埠存取權的變更。

驗證:基本拓撲組態

應該能夠藉由瀏覽至 http://<gateway-public-IP-address>.來存取 Tableau Server 管理員頁面。

如果 Tableau Server 登入頁面未載入,或者 Tableau Server 未啟動,請執行以下疑難排解步驟:

網路 

  • 在 Tableau Server 節點 1 執行以下 wget 命令來驗證 Tableau 部署和 Independent Gateway 執行個體之間的連線:wget http://<internal IP address of Independent Gateway> :21319,例如:

     wget http://ip-10-0-1-38:21319

    如果連線遭拒或失敗,則驗證公用安全性群組是否設定為允許來自私有安全性群組的 Independent Gateway 內務處理流量 (TCP 21319)。

    如果安全性群組設定正確,則驗證是否在 Independent Gateway 初始化期間指定正確的 IP 位址或 IP 範圍。您可以檢視並變更位於 /etc/opt/tableau/tableau_tsig/environment.bashenvironment.bash 檔案設定。如果變更此檔案,則依照如下所述重新啟動 tsig-http 服務。

在 Proxy 1 主機上:

  1. 用 Independent Gateway 存虛設常式覆寫 httpd.conf 檔案:

    cp /var/opt/tableau/tableau_tsig/config/httpd.conf.stub /var/opt/tableau/tableau_tsig/config/httpd.conf
  2. 重新啟動 tsig-httpd 作為疑難排解的第一步:
    sudo su - tableau-tsig
    systemctl --user restart tsig-httpd
    exit

在 Tableau 節點 1

  • 仔細檢查 tsig.json 檔案。若發現錯誤,請進行修復,然後執行 tsm topology external-services gateway update -c tsig.json
  • 若執行直接連線,請驗證 proxy_targets.csv 中列出的 TCP 連接埠是否設定為從公共到私人安全性群組的輸入連接埠。

配置 AWS 應用程式負載均衡器

將負載平衡器設定為 HTTP 偵聽器。此處的過程描述瞭如何在 AWS 中新增負載平衡器。

步驟 1:建立目標群組

目標群組是定義執行 Proxy 伺服器的 EC2 實例的 AWS 配置。這些是來自 LBS 的流量的目標。

  1. EC2 > 目標群組 > 建立目標群組

  2. 在建立頁面上:

    • 輸入目標群組名稱,例如 TG-internal-HTTP
    • 目標類型:執行個體
    • 協定:HTTP
    • 連接埠:80
    • VPC:選取您的 VPC
    • 健康情況檢查>進階健康情況檢查設定>成功代碼下,附加代碼清單以讀入:200,303
    • 按一下「建立」
  3. 選取剛剛建立的目標群組,然後按一下「目標」索引標籤: 

    • 按一下 [編輯]
    • 選取要執行 Proxy 應用程式的 EC2 執行個體(或單個執行個體,如果一次設定一個),然後按一下新增到已註冊
    • 按一下「儲存」

步驟 2:啟動負載均衡器精靈

  1. EC2 > 負載平衡器 > 建立負載平衡器

  2. 在「選取負載平衡器類型」頁面上,建立一個應用程式負載均衡器。

附註:為設定負載平衡器而顯示的 UI 在 AWS 資料中心之間不一致。下面的「精靈設定」過程與從步驟 1 設定負載平衡器開始的 AWS 設定精靈一致。 

如果資料中心在底部包含建立負載平衡器按鈕的單個頁面中顯示所有設定,請按照下方「單一頁面設定」過程進行操作。

  1. 設定負載平衡器頁面:

    • 指定名稱
    • 結構:以網際網路為對象(預設)
    • IP 位址類型:ipv4(預設)
    • 接聽程式(接聽程式和路由):
      1. 保留預設的 HTTP 接聽程式
      2. 按一下新增接聽程式並新增 HTTPS:443
    • VPC:選取已安裝所有內容的 VPC
    • 可用區域:
      • 為資料中心區域選取 ab
      • 在每個相應的下拉式選取器中,選取公用子網路(proxy 伺服器所在位置)。
    • 按一下:設定安全設定
  2. 設定安全性設定頁面

    • 上傳公用 SSL 憑證。
    • 按一下「下一步:設定安全群組」
  3. 設定安全性群組頁面:

    • 選取公用安全性群組。如果選取預設安全性群組,則清除該選取。
    • 按一下「下一步:設定路由」
  4. 設定路由頁面

    • 目標群體:現有的目標群體。
    • 名稱:選取之前建立的目標群組
    • 按一下「下一步:註冊目標」
  5. 註冊目標頁面

    • 應顯示之前設定的兩個 proxy 伺服器執行個體。
    • 按一下「下一步:檢閱」:。
  6. 評論頁面

    按一下「建立」

基本設定

  • 指定名稱
  • 結構:以網際網路為對象(預設)
  • IP 位址類型:ipv4(預設)

網路對應

  • VPC:選取已安裝所有內容的 VPC
  • 對應:
    • 為您的數據中心區域選擇ab (或類似的)「可用區域」
    • 在每個相應的下拉式選取器中,選取公用子網路(proxy 伺服器所在位置)。

安全性群組

  • 選取公用安全性群組。如果選取預設安全性群組,則清除該選取。
  • 接聽程式和路由

    • 保留預設的 HTTP 接聽程式。對於預設動作,請指定之前設定的目標群組。
    • 按一下新增接聽程式並新增 HTTPS:443。對於預設動作,請指定之前設定的目標群組。

    安全接聽程式設定

    • 上傳公用 SSL 憑證。

    按一下建立負載平衡器

    步驟 3 :啟用綁定

    1. 建立負載均衡器後,必須在目標群組上啟用綁定。

      • 開啟 AWS 目標群組頁面(EC2> 負載平衡> 目標群組),選取剛剛設定的目標群組執行個體。在「動作」功能表上,選取「編輯屬性」
      • 「編輯屬性」頁面上,選取「綁定」,指定持續時間為 1 day,然後儲存變更
    2. 在負載均衡器上,在 HTTP 偵聽器上啟用綁定。選取剛剛設定的負載均衡器,然後按一下「偵聽器」索引標籤:

      • 對於 HTTP:80,按一下「檢視/編輯規則」。在產生的「規則」頁面上,按一下編輯圖示(原本位於頁面頂端,然後接著位於規則旁邊)以編輯規則。刪除現有 THEN 規則並按一下新增動作>轉傳至…以取代它。在產生的 THEN 設定中,指定建立的相同目標群組。在群組層級綁定下,啟用綁定並將持續時間設定為 1 天。儲存設定然後按一下「更新」

    步驟 4:在負載平衡器上設定空閒逾時

    在負載平衡器上,將空閒逾時更新為 400 秒。

    選取為此部署設定的負載平衡器,然後按一下動作 > 編輯屬性。將空閒逾時設定為 400 秒,然後按一下儲存

    步驟 5:驗證 LBS 連線

    打開 AWS 負載平衡器頁面(EC2>負載平衡器),選取剛剛設定的負載平衡器實例。

    「描述」下,複製 DNS 名稱並將其貼上到瀏覽器中以存取 Tableau Server 登入頁面。

    如果收到 500 級錯誤,那可能需要重新啟動 Proxy 伺服器。

    使用公用 Tableau URL 更新 DNS

    使用 AWS 負載均衡器描述中的網域 DNS 區域名稱在 DNS 中建立 CNAME 值。流向您的 URL (tableau.example.com) 的流量應傳送到 AWS 公用 DNS 名稱。

    驗證連線

    DNS 更新完成後,應該能夠輸入公用 URL 巡覽到 Tableau Server 登入頁面,例如,https://tableau.example.com

    身份驗證組態範例:帶有外部 IdP 的 SAML

    以下範例介紹如何為 AWS 參考架構中執行的 Tableau 部署,設定和配置帶有 Okta IdP 跟 Mellon 驗證模組的 SAML。

    此範例取自上一區段,並假設您一次設定一個獨立閘道。

    該範例會介紹如何透過 HTTP 設定 Tableau Server 和獨立閘道。Okta 將以 HTTPS 向 AWS 負載均衡器傳送請求,但所有內部流量都將以 HTTP 傳輸。在為此案例進行設定時,請在設定 URL 字串時注意 HTTP 與 HTTPS 協定。

    此範例使用 Mellon 作為 Independent Gateway 伺服器上的預先身份驗證服務提供者模組。此設定可確保只有經過身份驗證的流量連線到 Tableau Server,Tableau Server 還充當 Okta IdP 的服務提供者。因此,必須設定兩個 IdP 應用程式:一個用於 Mellon 服務提供者,另一個用於 Tableau 服務提供者。

    建立 Tableau 管理員帳戶

    配置 SAML 時的一個常見錯誤是在啟用 SSO 之前忘記在 Tableau Server 上建立管理員帳戶。

    第一步是在 Tableau Server 上建立一個具有伺服器管理員角色的帳戶。在 Okta 情境中,使用者名稱必須採用有效電子郵件位址的形式,例如 user@example.com。必須為此使用者設定密碼,但在設定 SAML 後將不再使用該密碼。

    配置 Okta 預身分驗證應用程式

    本區段描述的端到端方案需要兩個 Okta 應用程式:

    • Okta 預身分驗證應用程式
    • Okta Tableau Server 應用程式

    這些應用程式都與您需要分別在反向 proxy 和 Tableau Server 上設定的不同中繼資料關聯。

    此過程描述如何建立和設定 Okta 預身份驗證應用程式。在本主題的後面,您將建立 Okta Tableau Server 應用程式。有關使用者受限的免費測試 Okta 帳戶,請參閱Okta 開發者網頁(連結在新視窗開啟)

    為 Mellon 預先身份驗證服務提供者建立 SAML 應用程式整合。

    1. 打開 Okta 管理儀表板 >應用程式>建立 App 集合

    2. 新建 app 集合頁面上,選擇SAML 2.0 ,然後按一下「下一步」

    3. 「一般設定」索引標籤上,輸入應用程式名稱,例Tableau Pre-Auth,然後按一下「下一步」

    4. 設定 SAML索引標籤上:

      • 單一登入 (SSO) URL。單一登入 URL 路徑的最後一個元素是指接在此程序之後,在mellon.conf組態檔中的MellonEndpointPath。可以指定想要的任何端點。在這個範例中,sso為端點。最後一個元素,postResponse 是必需的:https://tableau.example.com/sso/postResponse
      • 清除核取方塊:將此用於收件者 URL 和終點 URL
      • 收件者 URL:與 SSO URL 相同,但使用 HTTP。例如,http://tableau.example.com/sso/postResponse
      • 目的地 URL:與 SSO URL 相同,但使用 HTTP。例如,http://tableau.example.com/sso/postResponse
      • 受眾 URI(SP 實體 ID)。例如,https://tableau.example.com
      • 名稱 ID 格式:EmailAddress
      • 應用程式使用者名稱:Email
      • 屬性聲明:名稱 = mail;名稱格式 = Unspecified;值 = user.email

      按一下「下一步」

    5. 「回饋」索引標籤上,選取:

      • 我是新增內部應用程式的 Okta 客戶
      • 這是我們建立的內部應用程式
      • 按一下「完成」
    6. 建立預授權 IdP 中繼資料檔案:

      • 在 Okta 中:應用程式>應用程式>您的新應用程式(例如 Tableau Pre-Auth)>登入
      • SAML 簽署憑證旁邊,按一下檢視 SAML 設定說明
      • 如何為<預授權>應用程式設定 SAML 2.0 頁面上,向下捲動到可選部分,向您的 SP 提供者提供以下 IDP 中繼資料
      • 複製 XML 欄位的內容,並將它們儲存在名為 pre-auth_idp_metadata.xml 的檔案中。
    7. (可選)設定多重要素驗證:

      • 在 Okta 中:應用程式>應用程式>您的新應用程式(例如 Tableau Pre-Auth)>登入
      • 「登入原則」下,按一下「新增規則」
      • 「應用程式登入規則」上,指定名稱和不同 MFA 選項。要測試功能,可以將所有選項保留為預設值。但是,在「動作」下,必須選取「提示要素」,然後指定使用者必須登入的頻率。按一下「儲存」

    建立和指派 Okta 使用者

    1. 在 Okta 中,使用在 Tableau 中建立的相同使用者名稱建立一個使用者 (user@example.com):「目錄」>「人員」>「新增人員」
    2. 建立使用者後,將新的 Okta 應用程式指派給該人員:按一下使用者名稱,然後在「指派應用程式」中指派應用程式

    安裝 Mellon 進行預身份驗證

    此範例使用流行的開源模組 mod_auth_mellon。一些 Linux 發行版從較舊的存放庫中封裝了過時的 mod_auth_mellon 版本。這些過時的版本可能包含未知的安全性漏洞或功能問題。若選擇使用 mod_auth_mellon,請檢查您使用的是目前版本。

    mod_auth_mellon 模組是協力廠商軟體。我們已盡最大努力驗證和記錄啟用此方案的程序。但是,協力廠商軟體可能會發生變更,或者您的方案可能與此處描述的參考架構不同。權威設定細節和支援請參考協力廠商文件。

    1. 在執行 Independent Gateway 的使用中 EC2 執行個體上,安裝目前版本的 Mellon 驗證模組。

    2. 建立/etc/mellon目錄:

      sudo mkdir /etc/mellon

    將 Mellon 設定為預身份驗證模組

    在 Independent Gateway 的第一個執行個體上執行此過程。

    您必須擁有從 Okta 設定建立的 pre-auth_idp_metadata.xml 檔案複本。

    1. 變更目錄:

      cd /etc/mellon

    2. 建立服務提供者後設資料。執行 mellon_create_metadata.sh 指令碼。命令中必須包含您組織的實體 ID 和返回 URL。

      在 Okta 中,返回 URL 被稱為單一登入 URL。返回 URL 路徑的最後一個元素是指接在此程序之後,在mellon.conf組態檔中的MellonEndpointPath。在這個範例中,我們指定sso作為路徑終點。

      例如:

      sudo /usr/libexec/mod_auth_mellon/mellon_create_metadata.sh https://tableau.example.com "https://tableau.example.com/sso"

      該指令碼回傳服務提供者憑證、金鑰和後設資料檔。

    3. 為了容易閱讀,請重新命名mellon目錄中的服務提供者檔案。我們將使用以下名稱來引用文件中的檔案:

      sudo mv *.key mellon.key
      sudo mv *.cert mellon.cert
      sudo mv *.xml sp_metadata.xml

    4. pre-auth_idp_metadata.xml 檔案複製到同一目錄中。

    5. 變更 /etc/mellon 目錄中所有檔案的擁有權和權限:

      sudo chown tableau-tsig mellon.key
      sudo chown tableau-tsig mellon.cert
      sudo chown tableau-tsig sp_metadata.xml
      sudo chown tableau-tsig pre-auth_idp_metadata.xml 
      sudo chmod +r * mellon.key
      sudo chmod +r * mellon.cert
      sudo chmod +r * sp_metadata.xml
      sudo chmod +r * pre-auth_idp_metadata.xml 

    6. 建立/etc/mellon/conf.d目錄:

      sudo mkdir /etc/mellon/conf.d
    7. /etc/mellon/conf.d 目錄中建立 global.conf 檔案。

      如下所示複製檔案內容,但使用您的根網域名稱更新 MellonCookieDomain。例如,若 Tableau 的網域名稱是 tableau.example.com, 請輸入 example.com 作為根網域。

      <Location "/">
      AuthType Mellon
      MellonEnable auth
      Require valid-user
      MellonCookieDomain <root domain>
      MellonSPPrivateKeyFile /etc/mellon/mellon.key
      MellonSPCertFile /etc/mellon/mellon.cert
      MellonSPMetadataFile /etc/mellon/sp_metadata.xml
      MellonIdPMetadataFile /etc/mellon/pre-auth_idp_metadata.xml
      MellonEndpointPath /sso
      </Location>
      
      <Location "/tsighk">
      MellonEnable Off
      </Location>
    8. /etc/mellon/conf.d 目錄中建立 mellonmod.conf 檔案。

      該檔案包含指定 mod_auth_mellon.so 檔案位置的單一指示詞。此處範例中的位置為檔案的預設位置。請驗證檔案是否在此位置,或變更此指示詞中的路徑以符合 mod_auth_mellon.so 的實際位置:

      LoadModule auth_mellon_module /usr/lib64/httpd/modules/mod_auth_mellon.so

    在 Okta 中建立 Tableau Server 應用程式

    1. 在 Okta 儀表板中:「應用程式」>「應用程式」>「瀏覽應用程式目錄」
    2. 瀏覽應用程式整合目錄中,搜尋 Tableau,選取 Tableau 伺服器 動態磚,然後按一下 「新增」
    3. 「新增 Tableau Server」>「一般設定」上,輸入標籤,然後按一下「下一步」
    4. 在登入選項中,選取 SAML 2.0 並向下滾動到進階登入設定:
      • SAML 實體 ID:輸入公用 URL,例如 https://tableau.example.com。
      • 應用程式使用者名稱格式:Email
    5. 按一下「身份提供者中繼資料」連結以啟動瀏覽器。複製瀏覽器連結。這是在以下過程中設定 Tableau 時將使用的連結。
    6. 按一下 [完成]
    7. 將新的 Tableau Server Okta 應用程式指派給您的使用者 (user@example.com):按一下使用者名稱,然後在「指派應用程式」中指派應用程式。

    在 Tableau Server 上設定驗證模組設定

    在 Tableau Server 節點 1 上執行以下命令。這些命令指定遠端 Independent Gateway 電腦上 Mellon 設定檔的檔案位置。仔細檢查這些命令中指定的檔案路徑是否對應到遠端 Independent Gateway 電腦上的路徑和檔案位置。

    tsm configuration set -k gateway.tsig.authn_module_block -v "/etc/mellon/conf.d/mellonmod.conf" --force-keys
    tsm configuration set -k gateway.tsig.authn_global_block -v "/etc/mellon/conf.d/global.conf" --force-keys

    為減少停機時間,請在啟用 SAML 之前不要套用變更,如下一節所述。

    在 Tableau Server 上為 IdP 啟用 SAML

    在 Tableau Server 節點 1 上執行此過程。

    1. 從 Okta 下載 Tableau Server 應用程式中繼資料。使用在上一過程中儲存的連結:

      wget https://dev-66144217.okta.com/app/exk1egxgt1fhjkSeS5d7/sso/saml/metadata -O idp_metadata.xml

    2. 將 TLS 憑證和相關金鑰檔案複製到 Tableau Server。金鑰檔案必須是 RSA 金鑰。有關 SAML 憑證和 IdP 要求詳細資訊,請參閱 SAML 要求 (Linux(連結在新視窗開啟))。

      為簡化憑證管理和部署,並作為安全性最佳做法,我們建議使用由受信任的主要協力廠商憑證頒發授權單位 (CA) 產生的憑證。或者,您可以產生自我簽署憑證或使用針對 TLS 的 PKI 憑證。

      如果您沒有 TLS 憑證,則可以使用下面的內嵌過程產生自簽章憑證。

      產生自簽章憑證

      在 Tableau Server 節點 1 上執行此過程。

      1. 產生簽署根憑證頒發授權單位 (CA) 金鑰:

        openssl genrsa -out rootCAKey-saml.pem 2048

      2. 建立根 CA 憑證:

        openssl req -x509 -sha256 -new -nodes -key rootCAKey-saml.pem -days 3650 -out rootCACert-saml.pem

        系統將提示輸入憑證欄位的值。例如:

        Country Name (2 letter code) [XX]:US
        State or Province Name (full name) []:Washington
        Locality Name (eg, city) [Default City]:Seattle
        Organization Name (eg, company) [Default Company Ltd]:Tableau
        Organizational Unit Name (eg, section) []:Operations
        Common Name (eg, your name or your server's hostname) []:tableau.example.com
        Email Address []:example@tableau.com
      3. 建立憑證和相關金鑰(下方範例中的 server-saml.csrserver-saml.key)。憑證的主題名稱必須與 Tableau 主機的公用主機名稱相符。主題名稱設定為 -subj 選項,帶有格式 "/CN=<host-name>",例如:

        openssl req -new -nodes -text -out server-saml.csr -keyout server-saml.key -subj "/CN=tableau.example.com"

      4. 使用您在上述步驟中建立的 CA 憑證簽署新憑證。以下命令也將以 crt 格式輸出憑證:

        openssl x509 -req -in server-saml.csr -days 3650 -CA rootCACert-saml.pem -CAkey rootCAKey-saml.pem -CAcreateserial -out server-saml.crt

      5. 將金鑰檔案轉換為 RSA。Tableau 需要用於 SAML 的 RSA 金鑰檔案。若要轉換金鑰,請執行以下命令:

        openssl rsa -in server-saml.key -out server-saml-rsa.key

    3. 配置 SAML。執行以下命令,指定您的實體 ID 和傳回 URL,以及中繼資料檔、憑證檔案和金鑰檔案的路徑:

      tsm authentication saml configure --idp-entity-id "https://tableau.example.com" --idp-return-url "https://tableau.example.com" --idp-metadata idp_metadata.xml --cert-file "server-saml.crt" --key-file "server-saml-rsa.key"

      tsm authentication saml enable

    4. 如果您的組織執行 Tableau Desktop 2021.4 或更高版本,則必須執行以下命令以用反向 proxy 伺服器啟用身份驗證。

      Tableau Desktop 2021.2.1 到 2021.3 的版本無須執行此命令即可執行,前提是您的預先身份驗證模組(例如 Mellon)設定為允許保留頂層網域 cookie。

      tsm configuration set -k features.ExternalBrowserOAuth -v false

    5. 套用組態變更:

      tsm pending-changes apply

    重新啟動 tsig-httpd 服務

    Tableau Server 部署套用變更時,重新登入到 Tableau Server Independent Gateway 電腦,並執行以下命令,以重新啟動 tsig-httpd 服務:

    sudo su - tableau-tsig
    systemctl --user restart tsig-httpd
    exit

    驗證 SAML 功能

    要驗證端到端 SAML 功能,請使用您在此過程開始時建立的 Tableau 管理員帳戶,透過公用 URL(例如 https://tableau.example.com)登入到 Tableau Server。

    如果 TSM 未啟動(「閘道錯誤」),或者在嘗試連線時遭遇瀏覽器錯誤,請參見 解除安裝 Tableau Server 獨立閘道

    設定 Independent Gateway 的第二個執行個體

    成功設定獨立閘道的第一個執行個體後,部署第二個執行個體。此處的範例是安裝本主題中描述的 AWS/Mellon/Okta 方案的最終過程。該過程假定您已在第二個執行個體中安裝了獨立閘道,如本主題前面所述(安裝獨立閘道)。

    部署第二個獨立閘道的過程需要以下步驟:

    1. 在獨立閘道的第二個執行個體中:安裝 Mellon 驗證模組。

      不要按照本主題前面的描述設定 Mellon 驗證模組。相反地,必須按照後續步驟中的說明複製設定。

    2. 在已設定的(第一個)獨立閘道執行個體中:

      獲取現有 Mellon 設定的 tar 副本。tar 備份將保留所有目錄層次結構和權限。執行以下命令:

      cd /etc
      sudo tar -cvf mellon.tar mellon

      mellon.tar 複製到獨立閘道的第二個執行個體。

    3. 在獨立閘道的第二個執行個體:

      擷取(「解壓縮」) tar 檔案到 /etc目錄中的第二個執行個體。執行以下命令:

      cd /etc
      sudo tar -xvf mellon.tar

    4. 在 Tableau Server 部署的節點 1 上:使用第二個獨立閘道的連線資訊更新連線檔案 (tsig.json)。需要按照本主題前面(安裝獨立閘道)中的描述檢索身份驗證金鑰。

      此處顯示範例連線檔案 (tsig.json):

      {
      "independentGateways": [
       {
         "id": "ip-10-0-1-169.ec2.internal",
         "host": "ip-10-0-1-169.ec2.internal",
         "port": "21319",
         "protocol" : "http",
         "authsecret": "13660-27118-29070-25482-9518-22453"
       },
       {
         "id": "ip-10-0-2-230.ec2.internal",
         "host": "ip-10-0-2-230.ec2.internal",
         "port": "21319",
         "protocol" : "http",
         "authsecret": "9055-27834-16487-27455-30409-7292"
       }]
       }
    5. 在 Tableau Server 部署的節點 1 中:執行以下命令以更新設定:

      tsm stop
      tsm topology external-services gateway update -c tsig.json
      
      tsm start
    6. 在 Independent Gateway 的兩個執行個體中:Tableau Server 啟動後,重新啟動 tsig-httpd 過程:

      sudo su - tableau-tsig
      systemctl --user restart tsig-httpd
      exit
    7. 在 AWS EC2>目標群組中:更新目標群組以包含執行第二個獨立閘道執行個體的 EC2 執行個體。

      選取剛剛建立的目標群組,然後按一下「目標」索引標籤: 

      • 按一下 [編輯]
      • 選取第二台獨立閘道電腦的 EC2 執行個體,然後按一下「新增至已註冊」。按一下「儲存」
    感謝您的意見反應!已成功提交您的意見回饋。謝謝!