設定 Amazon Redshift IAM 身分中心 OAuth

重要提示:目前部署到 Tableau Cloud 的 Redshift ODBC 驅動程式不支援 OAuth。Amazon 計劃於 4 月初發佈下一個驅動程式版本,其中包括修正。這應該在幾週後部署到 Tableau Cloud。

在此之前,若想要在 Tableau Cloud 上使用 IAM IDC OAuth for Redshift,可以將最新 2.x 版本的驅動程式與 Tableau Bridge 結合使用,但有以下限制:

  • Linux 版本的驅動程式僅在查詢、結構描述和表格名稱中支援 ASCII 字元。

  • Linux 和 Windows 版本的 2.x 驅動程式都會因 HTTP Proxy 而當機。

  • Linux 和 Windows 版本在查詢地理空間資料時都存在問題。

從內部部署的 Tableau 2023.3.2(Tableau Desktop、Tableau Server 和 Tableau Prep)以及 2024 年 4 月的 Tableau Cloud 開始,可以使用 OAuth 2.0/OIDC 將外部身分提供程式的身分與 Amazon Redshift 結成同盟。 在驅動程式可用之前,Tableau Bridge 可以用作 Tableau Cloud 上的因應措施。有關 Bridge 的詳情,請參閱使用 Bridge 來保持資料的最新狀態

附註:由於驅動程式限制,此功能不適用於 OSX。

這些說明適用於較新的 AWS IAM IDC 服務。有關原始 IAM 整合,請參閱設定 Amazon Redshift IAM OAuth

根據身分提供程式的不同,設定整合需要執行不同的步驟。這是一個高層級的概觀。Tableau 無法提供有關如何設定 AWS 或 IDP 的詳細指示,但這是一般方法。

設定 IDP

  1. 在 IDP 上為 Tableau Desktop 和 Tableau Server 或 Tableau Cloud 建立 OAuth 用戶端。Desktop 用戶端應啟用 PKCE 並使用 http://localhost 重新導向。

  2. 新增任何所需的自訂聲明以用於角色授權。

  3. 建立 Tableau OAuth 設定檔。請參閱有關 github(連結在新視窗開啟) 的文件以及範例(連結在新視窗開啟)。我們歡迎其他 IDP 的範例。

    1. 請務必在 Tableau OAuth 設定 ID 前面加上「custom_」前置碼。

    2. 如果您的 IDP 支援動態 localhost 連接埠,則停用 OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL。如果沒有,請確保將多個 localhost 回呼 URL 新增至設定檔和 IDP 上的允許清單中。

  4. 在桌面電腦和 Tableau Server 或 Tableau Cloud 站台上安裝 Tableau OAuth 設定檔。

步驟 2:設定 IDP 並啟用 AWS 上的角色

有關執行詳情,請參閱 AWS 文件。

步驟 3: 連線到 Redshift

  1. 連線到 Redshift。

  2. 「驗證」選取 OAuth。

  3. 「同盟類型」選取身分中心。

  4. (可選)如果需要的話,請指定身分中心命名空間

正確設定後,您將被重新導向到 IDP,以對 Tableau 的權杖進行驗證和授權。Tableau 將收到存取權杖和重新整理權杖。它將把存取權杖傳送給驅動程式進行驗證。

Okta

若使用 Okta,最好使用「自訂授權伺服器」,而不是「組織授權伺服器。」自訂授權伺服器具有更多彈性。預設會建立自訂授權伺服器,稱為「預設」。授權 URL 應如下所示:

https://${yourOktaDomain}/oauth2/{authServerName}/v1/authorize

更新驅動程式

對於使用 IAM IDC 服務的 Redshift OAuth,必須使用從版本 2.0.1.0 開始的 Redshift ODBC 驅動程式,該驅動程式可以從 https://github.com/aws/amazon-redshift-odbc-driver/tags(連結在新視窗開啟) 進行下載。請注意,OSX 沒有 v2 驅動程式。

Redshift IAM IDC OAuth 疑難排解

如果在第一次連線時看到來自驅動程式的無效/過期權杖的錯誤訊息(錯誤訊息中將包含如 [28000] 或[08001] 的 SQLState 錯誤代碼),則 Tableau 已成功完成 OAuth 流程,並且驅動程式失敗。這表示 AWS 端或 IDP 端存在設定錯誤。驅動程式也可能傳回權限或授權錯誤,這也不受 Tableau 的控制。

診斷這些錯誤的最佳方法是從圖片中移除 Tableau。首先需要取得存取權杖(IAM IDC 的預設設定)或重新整理權杖(若自訂),以傳送給驅動程式。

這是 Okta 的範例。幾乎所有 IDP 都有一種非常相似的方法來實現上述動作。請注意,要使用此流程,需要啟用資源擁有者密碼授與類型。替代 IDP URL、用戶端金鑰、用戶端識別碼、使用者名稱和密碼。

curl -X POST "https://OKTA_URL/v1/token" \
-H 'accept: application/json' \
-H "Authorization: Basic $(echo -n 'CLIENTID:CLIENTSECRET' | base64)" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password&username=USER&password=PASSWORD&scope=openid"

取得權杖後,可以使用 DSN 進行測試。以下是在 Windows 上使用 ODBC 驅動程式管理器的範例。在 Mac 上,可以使用 iODBC 驅動程式管理器 UI。在 Linux 上,可以使用 Tableau Server 隨附的 customer-bin 資料夾中的 isql 命令列工具。

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