---
schema_version: "1"
id: c737d0a6a93058b45423b6516d0b0b64615c009a9f3617ad3e312c9a094bf17d
title: 設定 Amazon Redshift IAM OAuth
collection: tableau
version: next
locale: zh-tw
portal_url: https://docs.salesforce.com/tableau/next/zh-tw/server/config_oauth_redshift_iam.md
canonical_url: https://help.tableau.com/v0.0/server/zh-tw/config_oauth_redshift_iam.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 873552718be715d4587ff7259fdfc2a5bbb63dd5c9137ef6168150df66ca3d4e
description: Set up Amazon Redshift IAM OAuth identity federation from an external IdP for Tableau.
---
[跳至主要內容](#main-content)

# 設定 Amazon Redshift IAM OAuth

從 Tableau 2023.3.2 開始，可以使用 OAuth 2.0/OIDC 將外部身分提供程式提供的身分與 Amazon Redshift 結成同盟。

這些說明適用於舊版 AWS IAM 服務。對於 IAM IDC 整合，請參閱[設定 Amazon Redshift IAM 身分中心 OAuth](https://help.tableau.com/v0.0/server/zh-tw/config_oauth_redshift_iam_idc.htm)。

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

## 步驟 1：設定 IDP

1. 在 Tableau Desktop、Tableau Server 或 Tableau Cloud 的 IDP 上建立 OAuth 用戶端。Desktop 用戶端應啟用 `PKCE` 並使用 `http://localhost` 重新導向。
2. 新增自訂宣告，以用於對角色進行授權。特別是，若使用原始 IAM，可能需要新增 `DbUser` 和 `DbGroups` 宣告。這些可以稍後在 IAM 原則中使用。
3. 建立 Tableau OAuth 設定檔。請參閱有關 [GitHub](https://tableau.github.io/connector-plugin-sdk/docs/oauth "有關 GitHub 的 OAuth 文件") 的文件以及[此處](https://github.com/tableau/connector-plugin-sdk/tree/master/samples/components/oauth "有關 GitHub 的 OAuth 範例。")的範例。我們歡迎其他 IDP 的範例。
    
    1. 請務必在 Tableau OAuth 設定 ID 前面加上「`custom_`」首碼。
        
        **附註：**OAuth 設定 ID 不得超過 36 個字元。超過此長度的 ID 可能不會產生錯誤，但會無法運作。
    2. 如果您的 IDP 支援動態 localhost 連接埠，則停用 `OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL`。若您的 IDP 不支援此功能，請確保將多個本機主機回呼 URL 新增至設定檔和 IDP 上的允許清單中。
4. 在與桌面主機（Tableau Desktop、Tableau Prep Builder、Tableau Bridge）以及將使用 OAuth 的每個 Tableau Server 和 Tableau Cloud 站台上每個應用程式關聯的 `OAuthConfigs` 資料夾中安裝新的 Tableau OAuth 設定檔。

## 在 AWS 上設定 IDP

1.在 AWS 上建立 IDP 模型。請參閱 Amazon 文件 [Web 身分同盟](https://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/id_roles_providers_oidc.html "有關 Web 身分同盟的 AWS 文件")和[建立 OIDC 身分提供程式](https://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/id_roles_providers_create_oidc.html "有關建立 OIDC 身分提供程式的 AWS 文件")。

2.專門為 IDP 建立角色和原則。請參閱 AWS 文件中的[為 OIDC 建立角色](https://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html "為 OIDC 建立角色的 AWS 文件")。

## 為 Redshift 使用者設定角色

附加 Redshift 所需的原則。可以使用權杖中的自訂宣告對角色進行授權。[AWS 文件](https://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/options-for-providing-iam-credentials.html "提供 IAM 認證的 AWS 文件")中有多個 SAML 範例。這些可以輕鬆適應 OAuth。對於 OAuth，宣告只是「`DbUser`」、「`DbGroups`」等。

以下是 AWS 文件中的原則範例：

{  
"Version": "2012-10-17",  
"Statement": \[  
    {  
        "Effect": "Allow",  
        "Action": "redshift:GetClusterCredentials",  
        "Resource": \[  
            "arn:aws:redshift:us-west-1:123456789012:dbname:cluster-identifier/dev",  
            "arn:aws:redshift:us-west-1:123456789012:dbuser:cluster-identifier/${redshift:DbUser}",  
            "arn:aws:redshift:us-west-1:123456789012:cluster:cluster-identifier"  
        \],  
        "Condition": {  
            "StringEquals": {  
                "aws:userid": "AROAJ2UCCR6DPCEXAMPLE:${redshift:DbUser}@example.com"  
            }  
        }  
    },  
    {  
        "Effect": "Allow"  
        "Action": "redshift:CreateClusterUser",  
        "Resource": "arn:aws:redshift:us-west-1:12345:dbuser:cluster-identifier/${redshift:DbUser}"  
    },  
    {  
        "Effect": "Allow",  
        "Action": "redshift:JoinGroup",  
        "Resource": "arn:aws:redshift:us-west-1:12345:dbgroup:cluster-identifier/my\_dbgroup"  
    },  
    {  
        "Effect": "Allow",  
        "Action": \[  
            "redshift:DescribeClusters",  
            "iam:ListRoles"  
        \],  
        "Resource": "\*"  
    }  
\]  
}

## 連線到 Redshift

使用者必須指定要代入的角色 ARN，並選取先前安裝的 OAuth 設定。

![](/tableau/next/zh-tw/server/zh-tw/Img/redshift_oauth__iam_connect.png)

正確設定後，使用者將被重新導向到 IDP，以對 Tableau 的權杖進行驗證和授權。Tableau 將接收 openid 和重新整理權杖。AWS 能夠驗證來自 IDP 的權杖與簽章、從權杖中擷取宣告、查找宣告對應的 IAM 角色，以及允許或阻止 Tableau 代表使用者代入角色。（換句話說，[透過 Web 身分代入角色](https://docs.aws.amazon.com/zh_tw/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html "透過 Web 身分代入角色的 AWS 文件")）。

## 權杖

預設情況下，Redshift OAuth IAM 會將 ID 權杖傳遞給驅動程式。對於內部部署客戶（包括使用 Tableau Bridge 的客戶），可以改用 TDC 檔案來傳遞存取權杖。

<connection-customization class='redshift' enabled='true' version='10.0'>
	<vendor name='redshift' />
	<driver name='redshift' />
	<customizations>
		<customization name='CAP\_OAUTH\_FEDERATE\_ACCESS\_TOKEN' value='yes'/>
	</customizations>
</connection-customization>
		

有關設定和安裝 .tdc 檔案的詳細資訊，請參閱[自訂和調整連線](https://help.tableau.com/current/pro/desktop/zh-tw/connect_customize.htm)以及[在 Tableau Server 中使用 .tdc 檔案](https://help.salesforce.com/s/articleView?id=001458291&type=1)。

## 關於群組同盟

將 OAuth 驗證與 IAM 角色結合使用時，可以選取是否使用群組同盟。這會變更連接器與驗證 API 互動的方式，以便與 Redshift 互動。

- 連線時核取「群組同盟」方塊（在 2025.1 及更高版本中可用）時，Redshift 驅動程式將使用 [`getClusterCredentialsWithIAM`](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentialsWithIAM.html) API 來取得已佈建叢集中的認證。
- 當未核取「群組同盟」方塊時，將使用 [`getClusterCredentials`](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html) API 代替。

這兩個 API 將傳回屬性略有不同的 IAM 權杖。有關更多資訊，請查閱上面連結的 AWS API 文件和 [ODBC 驅動程式選項](https://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/odbc20-configuration-options.html "有關使用 AWS 設定 ODBC 2.0 的資訊")。

#### 使用說明

- 對於版本 2024.3 之前的 Tableau Desktop 和 Tableau Prep Builder，可以使用「group\_federation=1」在進階驅動程式設定欄位中進行設定。也可以透過使用 TDC 檔案來定義自訂連線屬性來進行設定。有關使用 TDC 的詳情，請參閱[自訂和調整連線](https://help.tableau.com/current/pro/desktop/zh-tw/connect_customize.htm)。
- 從版本 2024.3 開始，內部部署（Tableau Desktop、Tableau Prep Builder 和 Tableau Server）的連線對話方塊中都有一個 group\_federation 欄位。此功能將從 2025.1 開始在 Tableau Cloud 中提供（2025 年 2 月提供）。
- 若要將群組同盟與 Tableau Server 結合使用，必須將 group\_federation 新增至 ODBC extras 允許清單中。有關詳情，請參閱[為原生連接器自訂連線字串](https://help.tableau.com/current/pro/desktop/zh-tw/connect_string_custom.htm)。

## Okta

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

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

![](/tableau/next/zh-tw/server/zh-tw/Img/redshift_oauth_iam_okta_800x332.png)

## 更新驅動程式

對於使用原始 IAM 服務的 Redshift OAuth，可以使用：

- 從版本 1.59 開始的 Redshift ODBC v1 驅動程式，可以從 [https://docs.aws.amazon.com/zh\_tw/redshift/latest/mgmt/configure-odbc-connection.html](https://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/configure-odbc-connection.html "從 Amazon 下載 Redshift ODBC V1 驅動程式") 下載。
- 從版本 2.0.1.0 開始的 Redshift ODBC v2 驅動程式，可以從 [https://github.com/aws/amazon-redshift-odbc-driver/tags](https://github.com/aws/amazon-redshift-odbc-driver/tags "從 Amazon 下載 Redshift ODBC V2 驅動程式") 下載。請注意，OSX 沒有 v2 驅動程式。

## 疑難排解

診斷錯誤的最佳方法是從圖片中移除 Tableau。可以使用驅動程式管理員或類似工具進行測試。這僅用於疑難排解 - 在正常使用此功能時，不應使用 DSN 或「其他 ODBC」連接器。為幫助確保測試有效，參數應與下面所示相同，但叢集資訊、資料庫、權杖和命名空間除外。

**附註：**測試時，請勿在 DSN 的連線字串中指定 DbUser 或 DbGroups，因為 Tableau 無法存取這些內容，也無法將它們包含在連線字串中。可以將其包含在權杖宣告中。

如果在第一次連線時看到來自驅動程式的無效/過期權杖的錯誤訊息（錯誤訊息中將包含如 \[28000\] 或\[08001\] 的 SQLState 錯誤代碼），則 Tableau 已成功完成 OAuth 流程，並且驅動程式失敗。這表示 AWS 端或 IDP 端存在設定錯誤。驅動程式也可能傳回權限或授權錯誤，這也不受 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 命令列工具。

除非您想要對該連線的所有使用者使用相同的設定檔，否則使用固定 AWS 設定檔的外掛程式將無法運作。其他 OAuth 外掛程式需要直接存取系統瀏覽器，在伺服器端無法運作。

以下是在 Windows 上使用 ODBC 驅動程式管理器的範例。

![](/tableau/next/zh-tw/server/zh-tw/Img/redshift_oauth_iam_troubleshoot.jpg)