

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 提供 IAM 登入資料的選項
<a name="options-for-providing-iam-credentials"></a>

若要提供 JDBC 或 ODBC 連線的 IAM 登入資料，請選擇下列選項之一。
+ **AWS profile** 

  做為以 JDBC 或 ODBC 設定形式提供登入資料值的替代方案，您可將值放入命名設定檔。如需詳細資訊，請參閱[使用組態設定檔](#using-configuration-profile)。
+ **IAM 登入資料**

  以 JDBC 或 ODBC 設定形式提供 AccessKeyID、SecretAccessKey 和 (選用) SessionToken 的值。SessionToken 只對擁有暫時性登入資料的 IAM 角色為必填。如需詳細資訊，請參閱[提供 IAM 登入資料的 JDBC 和 ODBC 選項](#jdbc-options-for-providing-iam-credentials)。
+ **身分提供者聯合** 

  當您使用身分提供者聯合，讓來自身分提供者的使用者向 Amazon Redshift 進行驗證時，請指定憑證供應商外掛程式的名稱。如需詳細資訊，請參閱[憑證提供者外掛程式](#using-credentials-provider-plugin)。

  Amazon Redshift JDBC 和 ODBC 驅動程式包含下列以 SAML 為基礎之聯合身分憑證供應商的外掛程式：
  + Microsoft Active Identity Federation Services (AD FS)
  + PingOne
  + Okta
  + Microsoft Azure Active Directory (Azure AD)

  您可用 JDBC 或 ODBC 設定形式或使用設定檔提供外掛程式名稱和相關值。如需詳細資訊，請參閱[JDBC 驅動器 2.x 版組態的選項](jdbc20-configuration-options.md)。

如需詳細資訊，請參閱[步驟 5：設定 JDBC 或 ODBC 連線使用 IAM 登入資料](generating-iam-credentials-steps.md#generating-iam-credentials-configure-jdbc-odbc)。

## 使用組態設定檔
<a name="using-configuration-profile"></a>

您可以在 AWS 組態檔案中的具名設定檔中提供 IAM 登入資料選項和`GetClusterCredentials`選項做為設定。若要提供設定檔名稱，請使用設定檔 JDBC 選項。組態儲存於主目錄內名為 `.aws` 之資料夾中名為 `config` 的檔案或名為 `credentials` 的檔案中。

針對具有 Amazon Redshift JDBC 或 ODBC 驅動程式之以 SAM 為基礎的憑證供應商外掛程式，您可以使用先前在[憑證提供者外掛程式](#using-credentials-provider-plugin)中所述的設定。如果 `plugin_name` 未使用，則會忽略其他選項。

下列範例顯示具有兩個設定檔的 \$1/.aws/credentials 檔案：

```
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[user2]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
session_token=AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==
```

若要使用 `user2` 範例的登入資料，請在 JDBC URL 中指定 `Profile=user2`。

如需使用設定檔的詳細資訊，請參閱《 使用者指南》中的[組態和登入資料檔案設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)。* AWS Command Line Interface *

如需為 JDBC 驅動程式使用設定檔的相關資訊，請參閱[指定設定檔](jdbc20-configure-authentication-ssl.md#jdbc20-aws-credentials-profiles)。

如需為 ODBC 驅動程式使用設定檔的相關資訊，請參閱[身分驗證方法](odbc20-authentication-ssl.md)。

## 提供 IAM 登入資料的 JDBC 和 ODBC 選項
<a name="jdbc-options-for-providing-iam-credentials"></a>

下表列出提供 IAM 登入資料的 JDBC 和 ODBC 選項。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/options-for-providing-iam-credentials.html)

## 用於建立資料庫使用者憑證的 JDBC 和 ODBC 選項
<a name="jdbc-and-odbc-options-for-database-credentials"></a>

若要使用 Amazon Redshift JDBC 或 ODBC 驅動程式建立資料庫使用者憑證，請以 JDBC 或 ODBC 選項提供資料庫使用者名稱。如果資料庫使用者不存在，您也可選擇性讓驅動程式建立新的資料庫使用者，此外也可指定使用者於登入時加入的資料庫使用者群組清單。

如果您使用身分提供者 (IdP)，請洽詢 IdP 管理員，以決定這些選項的正確值。IdP 管理員也可設定您的 IdP，以提供這些選項，如此您便不用透過 JDBC 或 ODBC 選項提供。如需詳細資訊，請參閱[步驟 2：設定 IdP 的 SAML 聲明](generating-iam-credentials-steps.md#configuring-saml-assertions)。

**注意**  
如果您使用 IAM 政策變數 `${redshift:DbUser}`，如 [GetClusterCredentials 的資源政策](redshift-iam-access-control-identity-based.md#redshift-policy-resources.getclustercredentials-resources)中所述，則會以 API 操作的請求內容所擷取的值取代 `DbUser` 的值。Amazon Redshift 驅動程式使用連線 URL 提供的 `DbUser` 變數的值，而非提供作為 SAML 屬性的值。  
為了協助保護此組態的安全，建議您在 IAM 政策中使用條件，配合 `RoleSessionName` 來驗證 `DbUser` 值。您可以在[範例 8：使用 GetClusterCredentials 的 IAM 政策](redshift-iam-access-control-identity-based.md#redshift-policy-examples-getclustercredentials)中找到如何使用 IAM 政策來設定條件的範例。

下表列出提供用於建立資料庫使用者登入資料的選項。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/options-for-providing-iam-credentials.html)

## 憑證提供者外掛程式
<a name="using-credentials-provider-plugin"></a>

Amazon Redshift 使用憑證供應商外掛程式進行單一登入身分驗證。

為了支援單一登入身分驗證，Amazon Redshift 提供適用於 Microsoft Azure Active Directory 的 Azure AD 外掛程式。如需如何設定此外掛程式的資訊，請參閱[設定 JDBC 或 ODBC 單一登入身分驗證](setup-azure-ad-identity-provider.md)。

### 多重要素驗證
<a name="setting_mfa"></a>

為了支援多重要素驗證 (MFA)，Amazon Redshift 提供瀏覽器型的外掛程式。使用適用於 Okta、PingOne 的瀏覽器 SAML 外掛程式，以及適用於 Microsoft Azure Active Directory 的瀏覽器 Azure AD 外掛程式。

使用瀏覽器 SAML 外掛程式時的 OAuth 身分驗證流程如下：

![\[外掛程式、本機伺服器、Web 瀏覽器和端點如何搭配運作，以使用 SAML 身分驗證來驗證使用者身分的 OAuth 工作流程。\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/images/BrowserSAML_plugin.png)


1. 使用者嘗試登入。

1. 外掛程式會啟動本機伺服器來接聽 localhost 上的傳入連線。

1. 外掛程式會啟動 web 瀏覽器，從指定的單一登入 URL 聯合身分識別供應商端點透過 HTTPS 請求 SAML 回應。

1. web 瀏覽器會遵循連結，並提示使用者輸入登入資料。

1. 在使用者驗證並授予同意後，聯合身分提供者端點會透過 HTTPS 將 SAML 回應傳回由 `redirect_uri` 指定的 URI。

1. web 瀏覽器會將回應訊息與 SAML 回應移至指定的 `redirect_uri`。

1. 本機伺服器會接受傳入的連線，而外掛程式會擷取 SAML 回應並將其傳遞給 Amazon Redshift。

使用瀏覽器 Azure AD 外掛程式時，SAML 身分驗證的流程如下：

![\[外掛程式、本機伺服器、Web 瀏覽器和端點如何搭配運作，以使用 SAML 身分驗證來驗證使用者身分的 Azure 工作流程。\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/images/BrowserAzure_plugin.png)


1. 使用者嘗試登入。

1. 外掛程式會啟動本機伺服器來接聽 localhost 上的傳入連線。

1. 外掛程式會啟動 web 瀏覽器，以從 Azure AD `oauth2/authorize` 端點請求授權碼。

1. web 瀏覽器會透過 HTTPS 遵循所產生的連結，並提示使用者輸入登入資料。連結是使用組態屬性 (例如租用戶和 client\$1id) 所產生的。

1. 在使用者進行驗證並授予同意後，Azure AD `oauth2/authorize` 端點會傳回，並透過 HTTPS 將包含授權碼的回應傳送至指定 `redirect_uri`。

1. web 瀏覽器會將回應訊息與 SAML 回應移至指定的 `redirect_uri`。

1. 本機伺服器會接受傳入的連線和外掛程式請求並擷取授權碼，然後將 POST 請求傳送至 Azure AD `oauth2/token` 端點。

1. Azure AD `oauth2/token` 端點會將包含存取權杖的回應傳回指定 `redirect_uri`。

1. 外掛程式會擷取 SAML 回應並將其傳遞給 Amazon Redshift。

請參閱以下章節：
+ Active Directory Federation Services (AD FS)

  如需詳細資訊，請參閱[設定 JDBC 或 ODBC 單一登入身分驗證](setup-azure-ad-identity-provider.md)。
+ PingOne (Ping) 

  Ping 只有在使用 Forms 身分驗證的預先決定 PingOne IdP 轉接器時受到支援。

  如需詳細資訊，請參閱[設定 JDBC 或 ODBC 單一登入身分驗證](setup-azure-ad-identity-provider.md)。
+ Okta 

  Okta 只有在使用 Okta 提供用於 AWS 管理主控台的應用程式時受到支援。

  如需詳細資訊，請參閱[設定 JDBC 或 ODBC 單一登入身分驗證](setup-azure-ad-identity-provider.md)。
+ Microsoft Azure Active Directory

  如需詳細資訊，請參閱[設定 JDBC 或 ODBC 單一登入身分驗證](setup-azure-ad-identity-provider.md)。

### 外掛程式選項
<a name="configuring_plugin_options"></a>

若要使用以 SAML 為基礎的憑證供應商外掛程式，請使用 JDBC 或 ODBC 選項或在命名設定檔中指定下列選項。如果未指定 `plugin_name`，則會忽略其他選項。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/options-for-providing-iam-credentials.html)

# 使用 Amazon Redshift CLI 或 API 產生 IAM 身分的資料庫憑證
<a name="generating-iam-credentials-cli-api"></a>

若要以程式設計方式產生臨時資料庫使用者憑證，Amazon Redshift 為 AWS Command Line Interface (AWS CLI) 和 GetClusterCredentials API 操作提供 [get-cluster-credentials](https://docs.aws.amazon.com/cli/latest/reference/redshift/get-cluster-credentials.html) [GetClusterCredentials](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html) 命令。或者，您可以使用 Amazon Redshift JDBC 或 ODBC 驅動程式來設定 SQL 用戶端，以管理呼叫 `GetClusterCredentials` 操作、擷取資料庫使用者憑證，以及在 SQL 用戶端和 Amazon Redshift 資料庫之間建立連接的程序。如需詳細資訊，請參閱[用於建立資料庫使用者憑證的 JDBC 和 ODBC 選項](options-for-providing-iam-credentials.md#jdbc-and-odbc-options-for-database-credentials)。

**注意**  
我們建議使用 Amazon Redshift JDBC 或 ODBC 驅動程式產生資料庫使用者憑證。

您可在本節中找到程式設計的步驟，以用來呼叫 `GetClusterCredentials` 操作或 get-cluster-credentials 命令、擷取資料庫使用者登入資料，以及連線至資料庫。

**產生及使用暫時性資料庫登入資料**

1. 建立或修改具有必要許可的使用者或角色。如需 IAM 許可的相關資訊，請參閱 [步驟 3：建立具有呼叫 GetClusterCredentialsWithIAM 或 GetClusterCredentials 許可的 IAM 角色 GetClusterCredentials](generating-iam-credentials-steps.md#generating-iam-credentials-role-permissions)。

1. 以您在先前步驟中授權的使用者或角色身分，執行 get-cluster-credentials CLI 命令或呼叫 `GetClusterCredentials` API 操作，然後提供下列值：
   + **叢集識別碼** — 包含資料庫之叢集的名稱。
   + **資料庫使用者名稱** — 現有或新資料庫使用者的名稱。
     + 如果資料庫中不存在使用者，且 AutoCreate 為 true，將建立停用 PASSWORD 的新使用者。
     +  如果使用者不存在，且 AutoCreate 為 false，則請求失敗。
     + 針對此範例，資料庫使用者名稱為 `temp_creds_user`。
   +  **自動建立** — (選用) 如果資料庫使用者名稱不存在，則建立新使用者。
   +  **資料庫名稱** — (選用) 使用者授權登入之資料庫的名稱。如果未指定資料庫名稱，使用者將可登入任何的叢集資料庫。
   +  **資料庫群組** — (選用) 現有資料庫使用者群組的清單。成功登入後，資料庫使用者將新增至指定的使用者群組。如果未指定群組，使用者只會具有 PUBLIC 許可。使用者群組名稱必須符合附加至使用者或角色之 IAM 政策中指定的 dbgroup 資源 ARN。
   +  **過期時間** — (選用) 暫時性憑證過期前經過的時間 (以秒計)。您可指定 900 秒 (15 分鐘) 至 3600 秒 (60 分鐘) 之間的值。預設為 900 秒。

1. Amazon Redshift 會確定使用者具備用指定資源呼叫 `GetClusterCredentials` 操作的許可。

1. Amazon Redshift 將傳回暫時性密碼和資料庫使用者名稱。

   下列範例使用 Amazon Redshift CLI 為名為 `temp_creds_user` 的現有使用者產生暫時性資料庫憑證。

   ```
   aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --db-name exampledb --duration-seconds 3600
   ```

   結果如下所示。

   ```
   {
     "DbUser": "IAM:temp_creds_user", 
     "Expiration": "2016-12-08T21:12:53Z", 
     "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
   }
   ```

   下列範例使用 Amazon Redshift CLI 與 autocreate 為新使用者產生暫時性資料庫憑證，並將使用者加入到 `example_group` 群組。

   ```
   aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --auto-create --db-name exampledb --db-groups example_group --duration-seconds 3600
   ```

   結果如下所示。

   ```
   {
     "DbUser": "IAMA:temp_creds_user:example_group", 
     "Expiration": "2016-12-08T21:12:53Z", 
     "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
   }
   ```

1. 建立與 Amazon Redshift 叢集的 Secure Socket Layer (SSL) 身分驗證連線，並用來自 `GetClusterCredentials` 回應中的使用者名稱和密碼傳送登入請求。請在使用者名稱中加入 `IAM:` 或 `IAMA:` 字首，例如，`IAM:temp_creds_user` 或 `IAMA:temp_creds_user`。
**重要**  
設定 SQL 用戶端要求 SSL。否則，如果您的 SQL 用戶端自動嘗試使用 SSL 連線，發生任何類型的故障時其將切換為非 SSL。在此情況下，第一個連線嘗試可能會因為登入資料過期或失效而失敗，而第二個連線嘗試可能會因連線不是 SSL 而失敗。此時，可能會跳過第一個錯誤訊息。如需使用 SSL 連接至叢集的相關資訊，請參閱 [設定連線的安全選項](connecting-ssl-support.md)。

1. 如果連線不使用 SSL，連線嘗試將失敗。

1. 叢集會傳送 `authentication` 請求至 SQL 用戶端。

1. 接著 SQL 用戶端會傳送暫時性密碼至叢集。

1. 如果密碼為有效且尚未過期，叢集將完成連線。

# 設定 JDBC 或 ODBC 單一登入身分驗證
<a name="setup-azure-ad-identity-provider"></a>

您可以利用外部身分提供者 (IdP) 來驗證使用者身分，並授權使用者存取 Amazon Redshift 叢集，以簡化使用者管理和增強安全性。如此即可在多項服務之間集中管理使用者、啟用角色型存取控制和稽核功能。常見的使用案例包括簡化各種使用者群組的身分驗證、強制執行一致的存取政策，以及符合監管要求。

以下頁面將引導您設定與 Redshift 叢集的 IdP 整合。如需 AWS 將 設定為 IdP 服務提供者的詳細資訊，請參閱《*IAM 使用者指南*》中的[使用依賴方信任設定 SAML 2.0 IdP 和新增宣告](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html#saml_relying-party)。

# AD FS
<a name="setup-identity-provider-adfs"></a>

本教學課程說明如何使用 AD FS 作為身分提供者 (IdP) 來存取您的 Amazon Redshift 叢集。

## 步驟 1：設定 AD FS 和 AWS 您的帳戶彼此信任
<a name="setup-identity-provider-adfs-trust"></a>

 下列程序說明如何設定信任關係。

1. 建立或使用現有的 Amazon Redshift 叢集，以供 AD FS 使用者連線。若要設定連線，則需要此叢集的特定屬性，例如叢集識別碼。如需詳細資訊，請參閱[建立叢集](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html)。

1. 設定 AD FS 以控制 Microsoft 管理主控台上的 Amazon Redshift 存取：

   1. 選擇 **ADFS 2.0**，然後選擇 **Add Relying Party Trust (新增信賴方信任)**。在 **Add Relying Party Trust Wizard (新增信賴方信任精靈)** 頁面上，選擇 **Start (開始)**。

   1. 在 **Select Data Source (選取資料來源)** 頁面上，選擇 **Import data about the relying party published online or on a local network (匯入關於在線上或本機網路上發佈信賴方的資料)**。

   1. 針對 **Federation metadata address (host name or URL) (聯合中繼資料地址 (主機名稱或 URL))**，輸入 **https://signin.aws.amazon.com/saml-metadata.xml**。中繼資料 XML 檔案是描述 AWS 為依賴方的標準 SAML 中繼資料文件。

   1. 在 **Specify Display Name (指定顯示名稱)** 頁面上，輸入 **Display name (顯示名稱)** 的值。

   1. 在 **Choose Issuance Authorization Rules (選擇發行授權規則)** 頁面上，選擇允許或拒絕所有使用者存取此信賴方的發行授權規則。

   1. 在 **Ready to Add Trust (準備新增信任)** 頁面上檢閱您的設定。

   1. 在 **Finish (完成)** 頁面上，選擇 **Open the Edit Claim Rules dialog for this relying party trust when the wizard closes (當精靈關閉時，開啟此信賴方信任的「編輯宣告規則」對話方塊)**。

   1. 在內容 (按一下滑鼠右鍵) 功能表上，選擇 **Relying Party Trusts (依賴方信任)**。

   1. 針對您的信賴方，開啟內容 (按一下滑鼠右鍵) 功能表，然後選擇 **Edit Claim Rules (編輯宣告規則)**。在 **Edit Claim Rules (編輯宣告規則)** 頁面上，選擇 **Add Rule (新增規則)**。

   1. 在 **Claim rule template (宣告規則範本)** 中，選擇 **Transform an Incoming Claim (轉換傳入宣告)**，然後在 **Edit Rule – NameId (編輯規則 – NameId) ** 頁面上執行下列動作：
      + 針對 **Claim rule name (宣告規則名稱)**，輸入 **NameId**。
      + 針對 **Incoming claim name (傳入宣告名稱)**，選擇 **Windows Account Name (Windows 帳戶名稱)**。
      + 針對 **Outgoing claim name (傳出宣告名稱)**，選擇 **Name ID (名稱 ID)**。
      + 針對 **Outgoing name ID format (傳出名稱 ID 格式)**，選擇 **Persistent Identifier (持久性標識符)**。
      + 選擇 **Pass through all claim values (傳遞所有宣告值)**。

   1. 在 **Edit Claim Rules (編輯宣告規則)** 頁面上，選擇 **Add Rule (新增規則)**。在 **Select Rule Template (選取規則範本)** 頁面上，針對 **Claim rule template (宣告規則範本)**，選擇 **Send LDAP Attributes as Claims (將 LDAP 屬性傳送為宣告)**。

   1. 在 **Configure Rule (設定規則)** 頁面上，執行下列作業：
      + 針對 **Claim rule name (宣告規則名稱)**，輸入 **RoleSessionName**。
      + 針對 **Attribute store (屬性存放區)**，選擇 **Active Directory**。
      + 針對 **LDAP Attribute (LDAP 屬性)**，選擇 **Email Addresses (電子郵件地址)**。
      + 針對 **傳出宣告類型**，選擇 **https://aws.amazon.com/SAML/Attributes/RoleSessionName**。

   1. 在 **Edit Claim Rules (編輯宣告規則)** 頁面上，選擇 **Add Rule (新增規則)**。在 **Select Rule Template (選取規則範本)** 頁面上，針對 **Claim rule template (宣告規則範本)**，選擇 **Send Claims Using a Custom Rule (使用自訂規則傳送宣告)**。

   1. 在 **Edit Rule – Get AD Groups (編輯規則 – 取得 AD 群組)** 頁面上，針對 **Claim rule name (宣告規則名稱)**，輸入 **Get AD Groups (取得 AD 群組)**。

   1. 針對 **Custom rule (自訂規則)**，輸入下列內容。

      ```
      c:[Type ==
                                          "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
                                          Issuer == "AD AUTHORITY"] => add(store = "Active Directory",
                                          types = ("http://temp/variable"), query = ";tokenGroups;{0}",
                                          param = c.Value);
      ```

   1. 在 **Edit Claim Rules (編輯宣告規則)** 頁面上，選擇 **Add Rule (新增規則)**。在 **Select Rule Template (選取規則範本)** 頁面上，針對 **Claim rule template (宣告規則範本)**，選擇 **Send Claims Using a Custom Rule (使用自訂規則傳送宣告)**。

   1. 在 **Edit Rule – Roles (編輯規則 – 角色)** 頁面上，針對 **Claim rule name (宣告規則名稱)**，輸入 **Roles (角色)**。

   1. 針對 **Custom rule (自訂規則)**，輸入下列內容。

      ```
      c:[Type == "http://temp/variable", Value =~ "(?i)^AWS-"] => issue(Type = "https://aws.amazon.com/SAML/Attributes/Role", Value = RegExReplace(c.Value, "AWS-", "arn:aws:iam::123456789012:saml-provider/ADFS,arn:aws:iam::123456789012:role/ADFS-"));
      ```

      請記下 SAML 供應商的 ARN，以及要扮演的角色。在此範例中，`arn:aws:iam:123456789012:saml-provider/ADFS` 是 SAML 供應商的 ARN，`arn:aws:iam:123456789012:role/ADFS-` 是角色的 ARN。

1. 請確定您已下載 `federationmetadata.xml` 檔案。檢查文件內容沒有無效的字元。這是您在設定與 AWS的信任關係時，使用的中繼資料檔案。

1. 在 IAM 主控台上建立 IAM SAML 身分提供者。您所提供的中繼資料文件，是您在設定 Azure 企業應用程式時儲存的聯合中繼資料 XML 檔案。如需詳細步驟，請參閱《IAM 使用者指南》**中的[建立和管理 IAM 身分提供者 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html#idp-manage-identityprovider-console)。

1. 在 IAM 主控台上建立 SAML 2.0 聯合的 IAM 角色。如需詳細步驟，請參閱《IAM 使用者指南》**中的[為 SAML 建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html#idp_saml_Create)。

1. 建立 IAM 政策，您可將其附加至您在 IAM 主控台上為 SAML 2.0 聯合建立的 IAM 角色。如需詳細步驟，請參閱《IAM 使用者指南》**中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)。如需 Azure AD 範例，請參閱[設定 JDBC 或 ODBC 單一登入身分驗證](setup-azure-ad-identity-provider.md)。

## 步驟 2：設定 JDBC 或 ODBC 以對 AD FS 進行身分驗證
<a name="setup-identity-provider-adfs-auth"></a>

------
#### [ JDBC ]

 下列程序說明如何設定 JDBC 與 AD FS 的關係。
+ 將資料庫用戶端設定為使用 AD FS 單一登入，透過 JDBC 連線到您的叢集。

  您可使用任何採用 JDBC 驅動程式的用戶端使用 AD FS 單一登入進行連線，或使用 Java 之類的語言透過指令碼進行連線。如需安裝和組態資訊，請參閱 [設定適用於 Amazon Redshift 的 JDBC 驅動器 2.x 版的連線](jdbc20-install.md)。

  例如，您可以使用 SQLWorkbench/J 作為用戶端。當您設定 SQLWorkbench /J 時，您的資料庫 URL 會使用下列格式。

  ```
  jdbc:redshift:iam://cluster-identifier:us-west-1/dev
  ```

  如果您使用 SQLWorkbench /J 作為用戶端，請執行下列步驟：

  1. 啟動 SQL Workbench/J。在**選取連線設定檔**頁面中，新增**設定檔群組**，例如 **ADFS**。

  1. 針對 **Connection Profile (連線設定檔)**，輸入您的連線設定檔名稱，例如 **ADFS**。

  1. 選擇 **Manage Drivers (管理驅動程式)**，然後選擇 **Amazon Redshift**。選擇**程式庫**旁邊的**開啟資料夾**圖示，然後選擇適當的 JDBC .jar 檔案。

  1. 在 **Select Connection Profile (選取連線設定檔)** 頁面上，將資訊新增至連線設定檔，如下所示：
     + 針對 **User (使用者)**，輸入您的 AD FS 使用者名稱。這是您用於單一登入之 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。
     + 針對 **Password (密碼)**，輸入您的 AD FS 密碼。
     + 針對 **Drivers (驅動程式)**，選擇 **Amazon Redshift (com.amazon.redshift.jdbc.Driver)**。
     + 針對 **URL**，輸入 **jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name***。

  1. 選擇**延伸屬性**。針對 **plugin\$1name**，輸入 **com.amazon.redshift.plugin.AdfsCredentialsProvider**。此值會指定驅動程式使用 AD FS 單一登入做為身分驗證方法。

------
#### [ ODBC ]

**設定 ODBC 以對 AD FS 進行身分驗證**
+ 將資料庫用戶端設定為使用 AD FS 單一登入，透過 ODBC 連線到您的叢集。

  Amazon Redshift 會提供適用於 Linux、Windows 和 macOS 作業系統的 ODBC 驅動程式。安裝 ODBC 驅動程式之前，查明 SQL 用戶端工具是 32 位元或 64 位元。安裝符合 SQL 用戶端工具需求的 ODBC 驅動程式。

  在 Windows 上，於 **Amazon Redshift ODBC Driver DSN Setup (Amazon Redshift ODBC 驅動程式 DSN 設定)** 頁面的 **Connection Settings (連線設定)** 之下，輸入下列資訊：
  + 針對 **Data source name (資料來源名稱)**，輸入 ***your-DSN***。這會指定作為 ODBC 設定檔名稱的資料來源名稱。
  + 針對**驗證類型**，選擇**身分提供者：SAML**。這是 ODBC 驅動程式使用 AD FS 單一登入來進行驗證的身分驗證方法。
  + 針對 **Cluster ID (叢集 ID)**，輸入 ***your-cluster-identifier***。
  + 針對 **Region (區域)**，輸入 ***your-cluster-region***。
  + 針對 **Database (資料庫)**，輸入 ***your-database-name***。
  + 針對 **User (使用者)**，輸入 ***your-adfs-username***。這是您用於單一登入之 AD FS 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。僅在 **Auth Type (驗證類型)** 為**Identity Provider: SAML (身分提供者：SAML)** 的情況下使用此項目。
  + 針對 **Password (密碼)**，輸入 ***your-adfs-password***。僅在 **Auth Type (驗證類型)** 為**Identity Provider: SAML (身分提供者：SAML)** 的情況下使用此項目。

  在 macOS 和 Linux 上，編輯 `odbc.ini` 檔案，如下所示：
**注意**  
所有項目都不區分大小寫。
  + 針對 **clusterid**，輸入 ***your-cluster-identifier***。這是所建立 Amazon Redshift 叢集的名稱。
  + 針對 **region (區域)**，輸入 ***your-cluster-region***。這是已建立 Amazon Redshift 叢集 AWS 的區域。
  + 針對 **database (資料庫)**，輸入 ***your-database-name***。這是您嘗試在 Amazon Redshift 叢集上存取的資料庫名稱。
  + 針對 **locale**，輸入 **en-us**。這是錯誤訊息的顯示語言。
  + 針對 **iam**，輸入 **1**。此值指定驅動程式使用 IAM 登入資料進行身分驗證。
  + 針對 **plugin\$1name**，執行下列其中一項作業：
    + 若為具有 MFA 的 AD FS 單一登入組態，請輸入 **BrowserSAML**。這是 ODBC 驅動程式用來驗證 AD FS 的身分驗證方法。
    + 若為 AD FS 單一登入組態，請輸入 **ADFS**。這是 ODBC 驅動程式使用 Azure AD 單一登入來進行驗證的身分驗證方法。
  + 針對 **uid**，輸入 ***your-adfs-username***。這是您用於單一登入之 Microsoft Azure 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。僅在 **plugin\$1name** 為 **ADFS** 的情況下使用此項目。
  + 針對 **pwd**，輸入 ***your-adfs-password***。僅在 **plugin\$1name** 為 **ADFS** 的情況下使用此項目。

  在 macOS 和 Linux 上，同時編輯設定檔設定以新增下列匯出：

  ```
  export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
  ```

  ```
  export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini
  ```

------

# Azure
<a name="setup-identity-provider-azure"></a>

您可以使用 Microsoft Azure AD 作為身分提供者 (IdP) 來存取您的 Amazon Redshift 叢集。本教學課程說明如何使用 Azure 作為身分提供者 (IdP) 來存取您的 Amazon Redshift 叢集。

如要了解如何搭配 Microsoft Azure AD 單一登入聯合 Amazon Redshift 存取，請觀看以下影片。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/aXs9hEgJCss/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/aXs9hEgJCss)


## 步驟 1：設定 Azure 和 AWS 您的帳戶彼此信任
<a name="setup-identity-provider-azure-trust"></a>

下列程序說明如何設定信任關係。

**設定 Azure AD 和 AWS 您的帳戶彼此信任**

1. 建立或使用現有的 Amazon Redshift 叢集，以供 Azure AD 使用者連線。若要設定連線，則需要此叢集的特定屬性，例如叢集識別碼。如需詳細資訊，請參閱[建立叢集](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html)。

1. 在 Microsoft Azure 入口網站 AWS 上設定用於 的 Azure Active Directory、群組和使用者。

1. 在 Microsoft Azure 入口網站上將 Amazon Redshift 新增為企業應用程式，以用於 AWS 主控台的單一登入和 Amazon Redshift 的聯合登入。選擇 **Enterprise application (企業應用程式)**。

1. 選擇 **\$1New application (新增應用程式)**。新增應用程式頁面隨即顯示。

1. 在搜尋欄位中搜尋 **AWS**。

1. 選擇 **Amazon Web Services (AWS)**，然後選擇**新增**。此操作會建立 AWS 應用程式。

1. 在 **Manage (管理)** 下方，選擇 **Single sign-on (單一登入)**。

1. 選擇 **SAML**。Amazon Web Services (AWS) \$1 以 SAML 為基礎的登入頁面隨即顯示。

1. 選擇 **Yes (是)**，繼續進行「使用 SAML 頁面設定單一登入」。此頁面會顯示預先設定的單一登入相關屬性清單。

1. 在 **Basic SAML Configuration (基本 SAML 組態)** 中，選擇編輯圖示並選擇 **Save (儲存)**。

1. 設定超過一個應用程式時，請提供識別碼值。例如，​輸入 ***https://signin.aws.amazon.com/saml\$12***。請注意，從第二個應用程式開始，請使用此格式搭配 \$1 符號來指定唯一的 SPN 值。

1. 在 **User Attributes and Claims (使用者屬性和宣告)** 區段中選擇編輯圖示。

   根據預設，唯一使用者標識符 (UID)、角色、RoleSessionName 和 SessionDuration 宣告都是預先設定的。

1. 選擇 **\$1 Add new claim (新增宣告)** 來新增資料庫使用者的宣告。

   對於**名稱**，輸入 **DbUser**。

   針對 **Namespace (命名空間)**，輸入 **https://redshift.amazon.com/SAML/Attributes**。

   針對 **Source (來源)**，選擇 **Attribute (屬性)**。

   針對 **Source attribute (來源屬性)**，選擇 **user.userprincipalname**。然後選擇 **Save (儲存)**。

1. 選擇 **\$1 Add new claim (新增宣告)** 來新增 AutoCreate 的宣告。

   對於**名稱**，輸入 **AutoCreate**。

   針對 **Namespace (命名空間)**，輸入 **https://redshift.amazon.com/SAML/Attributes**。

   針對 **Source (來源)**，選擇 **Attribute (屬性)**。

   針對 **Source attribute (來源屬性)**，選擇 **“true”**。然後選擇 **Save (儲存)**。

   在此，`123456789012` 是您的 AWS 帳戶，*`AzureSSO`* 是您建立的 IAM 角色，而 *`AzureADProvider`* 是 IAM 提供者。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/setup-identity-provider-azure.html)

1. 在 **App Registration (應用程式註冊) > ***your-application-name*** > Authentication (身分驗證)** 下方，新增 **Mobile And Desktop Application (行動和桌面應用程式)**。將 URL 指定為 http://localhost/redshift。

1. 在 **SAML Signing Certificate (SAML 簽署憑證)** 區段中，選擇 **Download (下載)** 以下載並儲存聯合中繼資料 XML 檔案，以便在建立 IAM SAML 身分提供者時使用。此檔案用於建立單一登入聯合身分。

1. 在 IAM 主控台上建立 IAM SAML 身分提供者。您所提供的中繼資料文件，是您在設定 Azure 企業應用程式時儲存的聯合中繼資料 XML 檔案。如需詳細步驟，請參閱《IAM 使用者指南》**中的[建立和管理 IAM 身分提供者 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html#idp-manage-identityprovider-console)。

1. 在 IAM 主控台上建立 SAML 2.0 聯合的 IAM 角色。如需詳細步驟，請參閱《IAM 使用者指南》**中的[為 SAML 建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html#idp_saml_Create)。

1. 建立 IAM 政策，您可將其附加至您在 IAM 主控台上為 SAML 2.0 聯合建立的 IAM 角色。如需詳細步驟，請參閱《IAM 使用者指南》**中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)。

   為您的環境修改下列政策 (JSON 格式)：
   + 將叢集 AWS 的區域替換為 `us-west-1`。
   + 將 AWS 您的帳戶替換為 *`123456789012`*。
   + 以您的叢集識別碼 (或 `*` 代表所有叢集) 代替 *`cluster-identifier`*。
   + 以您的資料庫 (或 `*` 代表所有資料庫) 代替 *`dev`*。
   + 以 IAM 角色的唯一識別碼代替 *`AROAJ2UCCR6DPCEXAMPLE`*。
   + 以您的租用戶或公司電子郵件網域代替 `example.com`。
   + 以您計劃為其指派使用者的資料庫群組代替 *`my_dbgroup`*。

   ```
   {
       "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:123456789012:dbuser:cluster-identifier/${redshift:DbUser}"
           },
           {
               "Effect": "Allow",
               "Action": "redshift:JoinGroup",
               "Resource": "arn:aws:redshift:us-west-1:123456789012:dbgroup:cluster-identifier/my_dbgroup"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "redshift:DescribeClusters",
                   "iam:ListRoles"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

   此政策會授與許可，如下所示：
   + 第一個區段會授與 `GetClusterCredentials` API 操作的許可，以取得所指定叢集的暫時性登入資料。在此範例中，資源是 `cluster-identifier`，其具有資料庫 *`dev`*、位於帳戶 *`123456789012`*、並位於 AWS 區域 *`us-west-1`*。`${redshift:DbUser}` 子句只允許符合 Azure AD 中指定 `DbUser` 值的使用者連線。
   + 條件子句會強制只有特定使用者會取得臨時登入資料。這些是依據貴公司電子郵件網域中的電子郵件地址所識別的 IAM 帳戶中，具備角色唯一 ID *`AROAJ2UCCR6DPCEXAMPLE`* 所指定角色的使用者。如需唯一 ID 的相關資訊，請參閱《IAM 使用者指南》**中的[唯一 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids)。

     您所設定的 IdP (在此案例中為 Azure AD) 會決定條件子句的撰寫方式。如果您的員工電子郵件是 `johndoe@example.com`，請先將 `${redshift:DbUser}` 設定為符合員工使用者名稱 `johndoe` 的超級欄位。然後將 AWS SAML `RoleSessionName` 欄位設定為符合員工電子郵件 `johndoe@example.com` 的超級欄位，讓此條件發揮作用。當您採取這種方法時，請考慮下列事項：
     + 如果您將 `${redshift:DbUser}` 設定為員工的電子郵件，然後移除範例 JSON 中符合 `RoleSessionName` 的 `@example.com`。
     + 如果您將 `RoleSessionId` 設定為員工的使用者名稱，然後移除範例中符合 `RoleSessionName` 的 `@example.com`。
     + 在範例 JSON 中，`${redshift:DbUser}` 和 `RoleSessionName` 均設定為員工的電子郵件。此範例 JSON 會使用 Amazon Redshift 資料庫使用者名稱搭配 `@example.com`，讓使用者登入以存取叢集。
   + 第二個區段會授與許可，以在指定的叢集中建立 `dbuser` 名稱。在此範例 JSON 中，其會將建立限制於 `${redshift:DbUser}`。
   + 第三個區段會授與許可，以指定使用者可以加入的 `dbgroup`。在此範例 JSON 中，使用者可以加入指定叢集中的 `my_dbgroup` 群組。
   + 第四個區段會授予使用者可對所有資源執行動作的許可。在此範例 JSON 中，它允許使用者呼叫 `redshift:DescribeClusters`以取得叢集資訊，例如叢集端點、 AWS 區域和連接埠。此外，還可允許使用者呼叫 `iam:ListRoles`，以檢查使用者可以擔任哪些角色。

## 步驟 2：設定 JDBC 或 ODBC 以對 Azure 進行身分驗證
<a name="setup-identity-provider-azure-auth"></a>

------
#### [ JDBC ]

**設定 JDBC 以對 Microsoft Azure AD 進行身分驗證**
+ 將資料庫用戶端設定為使用 Azure AD 單一登入，透過 JDBC 連線到您的叢集。

  您可使用任何採用 JDBC 驅動程式的用戶端使用 Azure AD 單一登入進行連線，或使用 Java 之類的語言透過指令碼進行連線。如需安裝和組態資訊，請參閱 [設定適用於 Amazon Redshift 的 JDBC 驅動器 2.x 版的連線](jdbc20-install.md)。

  例如，您可以使用 SQLWorkbench/J 作為用戶端。當您設定 SQLWorkbench /J 時，您的資料庫 URL 會使用下列格式。

  ```
  jdbc:redshift:iam://cluster-identifier:us-west-1/dev
  ```

  如果您使用 SQLWorkbench /J 作為用戶端，請執行下列步驟：

  1. 啟動 SQL Workbench/J。在**選取連線設定檔**頁面上，新增名為 **AzureAuth** 的**設定檔群組**。

  1. 針對 **Connection Profile (連線設定檔)**，輸入 **Azure**。

  1. 選擇 **Manage Drivers (管理驅動程式)**，然後選擇 **Amazon Redshift**。選擇**程式庫**旁邊的**開啟資料夾**圖示，然後選擇適當的 JDBC .jar 檔案。

  1. 在 **Select Connection Profile (選取連線設定檔)** 頁面上，將資訊新增至連線設定檔，如下所示：
     + 針對 **User (使用者)**，輸入您的 Microsoft Azure 使用者名稱。這是您用於單一登入之 Microsoft Azure 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。
     + 針對 **Password (密碼)**，輸入您的 Microsoft Azure 密碼。
     + 針對 **Drivers (驅動程式)**，選擇 **Amazon Redshift (com.amazon.redshift.jdbc.Driver)**。
     + 針對 **URL**，輸入 **jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name***。

  1. 選擇 **Extended Properties (擴充屬性)** 以將其他資訊新增至連線屬性，如下所述。

     針對 Azure AD 單一登入組態新增其他資訊，如下所示：
     + 針對 **plugin\$1name**，輸入 **com.amazon.redshift.plugin.AzureCredentialsProvider**。此值會指定驅動程式使用 Azure AD 單一登入做為身分驗證方法。
     + 針對 **idp\$1tenant**，輸入 ***your-idp-tenant***。僅用於 Microsoft Azure AD。這是您在 Azure AD 上設定的公司租用戶名稱。此值可以是租用戶名稱或租用戶唯一 ID (含連字號)。
     + 針對 **client\$1secret**，輸入 ***your-azure-redshift-application-client-secret***。僅用於 Microsoft Azure AD。這是您在設定 Azure 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端秘密。這只適用於 com.amazon.redshift.plugin.AzureCredentialsProvider 外掛程式。
     + 針對 **client\$1id**，輸入 ***your-azure-redshift-application-client-id***。僅用於 Microsoft Azure AD。這是您在設定 Azure 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端 ID (含連字號)。

     針對具有 MFA 的 Azure AD 單一登入組態，將其他資訊新增至連線屬性，如下所示：
     + 針對 **plugin\$1name**，輸入 **com.amazon.redshift.plugin.BrowserAzureCredentialsProvider**。此值會指定驅動程式使用具有 MFA 的 Azure AD 單一登入做為身分驗證方法。
     + 針對 **idp\$1tenant**，輸入 ***your-idp-tenant***。僅用於 Microsoft Azure AD。這是您在 Azure AD 上設定的公司租用戶名稱。此值可以是租用戶名稱或租用戶唯一 ID (含連字號)。
     + 針對 **client\$1id**，輸入 ***your-azure-redshift-application-client-id***。此選項僅用於 Microsoft Azure AD。這是您在設定具有 MFA 的 Azure AD 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端 ID (含連字號)。
     + 針對 **listen\$1port**，輸入 ***your-listen-port***。這是本機伺服器接聽的連接埠。預設值為 7890。
     + 針對 **idp\$1response\$1timeout**，輸入 ***the-number-of-seconds***。這是 IdP 伺服器傳回回應時，在逾時之前等待的秒數。秒數的下限必須為 10。如果建立連線所花的時間超過此臨界值，連線會中止。

------
#### [ ODBC ]

**設定 ODBC 以對 Microsoft Azure AD 進行身分驗證**
+ 將資料庫用戶端設定為使用 Azure AD 單一登入，透過 ODBC 連線到您的叢集。

  Amazon Redshift 會提供適用於 Linux、Windows 和 macOS 作業系統的 ODBC 驅動程式。安裝 ODBC 驅動程式之前，查明 SQL 用戶端工具是 32 位元或 64 位元。安裝符合 SQL 用戶端工具需求的 ODBC 驅動程式。

  在 Windows 上，於 **Amazon Redshift ODBC Driver DSN Setup (Amazon Redshift ODBC 驅動程式 DSN 設定)** 頁面的 **Connection Settings (連線設定)** 之下，輸入下列資訊：
  + 針對 **Data source name (資料來源名稱)**，輸入 ***your-DSN***。這會指定作為 ODBC 設定檔名稱的資料來源名稱。
  + 針對 Azure AD 單一登入組態的**驗證類型**，請選擇 **Identity Provider: Azure AD**。這是 ODBC 驅動程式使用 Azure 單一登入來進行驗證的身分驗證方法。
  + 針對具有 MFA 的 Azure AD 單一登入組態的**驗證類型**，請選擇 **Identity Provider: Browser Azure AD**。這是 ODBC 驅動程式使用具有 MFA 之 Azure 單一登入來進行驗證的身分驗證方法。
  + 針對 **Cluster ID (叢集 ID)**，輸入 ***your-cluster-identifier***。
  + 針對 **Region (區域)**，輸入 ***your-cluster-region***。
  + 針對 **Database (資料庫)**，輸入 ***your-database-name***。
  + 針對 **User (使用者)**，輸入 ***your-azure-username***。這是您用於單一登入之 Microsoft Azure 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。僅在 **Auth Type (驗證類型)** 為**Identity Provider: Azure AD (身分提供者：Azure AD)** 的情況下使用此項目。
  + 針對 **Password (密碼)**，輸入 ***your-azure-password***。僅在 **Auth Type (驗證類型)** 為**Identity Provider: Azure AD (身分提供者：Azure AD)** 的情況下使用此項目。
  + 針對 **IdP Tenant (IdP 租用戶)**，輸入 ***your-idp-tenant***。這是您在 IdP (Azure) 上設定的公司租用戶名稱。此值可以是租用戶名稱或租用戶唯一 ID (含連字號)。
  + 針對 **Azure Client Secret (Azure 用戶端密碼)**，輸入 ***your-azure-redshift-application-client-secret***。這是您在設定 Azure 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端秘密。
  + 針對 **Azure Client ID (Azure 用戶端 ID)**，輸入 ***your-azure-redshift-application-client-id***。這是您在設定 Azure 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端 ID (含連字號)。
  + 針對 **Listen Port (接聽連接埠)**，輸入 ***your-listen-port***。這是本機伺服器接聽的預設接聽連接埠。預設值為 7890。這僅適用於瀏覽器 Azure AD 外掛程式。
  + 針對 **Response Timeout (回應逾時)**，輸入 ***the-number-of-seconds***。這是 IdP 伺服器傳回回應時，在逾時之前等待的秒數。秒數的下限必須為 10。如果建立連線所花的時間超過此臨界值，連線會中止。此選項僅適用於瀏覽器 Azure AD 外掛程式。

  在 macOS 和 Linux 上，編輯 `odbc.ini` 檔案，如下所示：
**注意**  
所有項目都不區分大小寫。
  + 針對 **clusterid**，輸入 ***your-cluster-identifier***。這是所建立 Amazon Redshift 叢集的名稱。
  + 針對 **region (區域)**，輸入 ***your-cluster-region***。這是已建立 Amazon Redshift 叢集 AWS 的區域。
  + 針對 **database (資料庫)**，輸入 ***your-database-name***。這是您嘗試在 Amazon Redshift 叢集上存取的資料庫名稱。
  + 針對 **locale**，輸入 **en-us**。這是錯誤訊息的顯示語言。
  + 針對 **iam**，輸入 **1**。此值指定驅動程式使用 IAM 登入資料進行身分驗證。
  + 如需 Azure AD 單一登入組態的 **plugin\$1name**，請輸入 **AzureAD**。這會指定驅動程式使用 Azure 單一登入作為身分驗證方法。
  + 如需具有 MFA 的 Azure AD 單一登入組態的 **plugin\$1name**，請輸入 **BrowserAzureAD**。這會指定驅動程式使用具有 MFA 的 Azure 單一登入做為身分驗證方法。
  + 針對 **uid**，輸入 ***your-azure-username***。這是您用於單一登入之 Microsoft Azure 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。僅在 **plugin\$1name** 為 **AzureAD** 的情況下使用此項目。
  + 針對 **pwd**，輸入 ***your-azure-password***。僅在 **plugin\$1name** 為 **AzureAD** 的情況下使用此項目。
  + 針對 **idp\$1tenant**，輸入 ***your-idp-tenant***。這是您在 IdP (Azure) 上設定的公司租用戶名稱。此值可以是租用戶名稱或租用戶唯一 ID (含連字號)。
  + 針對 **client\$1secret**，輸入 ***your-azure-redshift-application-client-secret***。這是您在設定 Azure 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端秘密。
  + 針對 **client\$1id**，輸入 ***your-azure-redshift-application-client-id***。這是您在設定 Azure 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端 ID (含連字號)。
  + 針對 **listen\$1port**，輸入 ***your-listen-port***。這是本機伺服器接聽的連接埠。預設值為 7890。這適用於瀏覽器 Azure AD 外掛程式。
  + 針對 **idp\$1response\$1timeout**，輸入 ***the-number-of-seconds***。這是等待 Azure 回應的指定時間期間 (秒)。此選項適用於瀏覽器 Azure AD 外掛程式。

  在 macOS 和 Linux 上，同時編輯設定檔設定以新增下列匯出：

  ```
  export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
  ```

  ```
  export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini
  ```

------

## 疑難排解
<a name="setup-identity-provider-azure-auth"></a>

若要對瀏覽器 Azure AD 外掛程式的問題進行故障診斷，請考慮下列事項：
+ 若要使用瀏覽器 Azure AD 外掛程式，您必須設定請求中指定的回覆 URL，以符合為您的應用程式設定的回覆 URL。瀏覽至 Microsoft Azure 入口網站上的 **Set up Single Sign-On with SAML (使用 SAML 設定單一登入)** 頁面。然後檢查**回覆網址** 是否設定為 http://localhost/redshift/。
+ 如果您收到 IdP 租用戶錯誤，請確認 **IdP 租用戶**名稱與您最初用來設定 Microsoft Azure 中使用中目錄的網域名稱相符。

  在 Windows 上，導覽至 **Amazon Redshift ODBC DSN 設定**頁面的**連線設定**區段。接著檢查您在 IdP (Azure) 上設定的公司租用戶名稱是否與您最初用來在 Microsoft Azure 中設定使用中目錄的網域名稱相符。

  在 macOS 和 Linux 上，找到這個 *odbc.ini* 檔案。接著檢查您在 IdP (Azure) 上設定的公司租用戶名稱是否與您最初用來在 Microsoft Azure 中設定使用中目錄的網域名稱相符。
+ 如果您收到請求中指定的回覆 URL 與為應用程式設定的回覆 URL 不相符的錯誤，請確認**重新導向 URI** 與回覆 URL 相同。

  瀏覽至 Microsoft Azure 入口網站上應用程式的 **App registration (應用程式註冊)** 頁面。然後檢查重新導向 URI 與回覆 URL 是否相符。
+ 如果您收到未經授權的回應：未經授權的錯誤，請確認您已完成**行動裝置和桌面應用程式**組態。

  瀏覽至 Microsoft Azure 入口網站上應用程式的 **App registration (應用程式註冊)** 頁面。然後瀏覽至 **Authentication (驗證)**，並檢查您已將**行動裝置和桌面應用程式**設定為使用 http://localhost/redshift/ 做為重新導向 URI。

# Ping 身分
<a name="setup-identity-provider-ping"></a>

您可以使用 Ping 身分做為身分提供者 (IdP) 來存取您的 Amazon Redshift 叢集。本教學課程說明如何使用 Ping Identity 作為身分提供者 (IdP) 來存取您的 Amazon Redshift 叢集。

## 步驟 1：設定 Ping Identity 和 AWS 您的帳戶彼此信任
<a name="setup-identity-provider-ping-trust"></a>

下列程序說明如何使用 PingOne 入口網站設定信任關係。

**設定 Ping Identity 和 AWS 您的帳戶彼此信任**

1. 建立或使用現有的 Amazon Redshift 叢集，以供 Ping Identity 使用者連線。若要設定連線，則需要此叢集的特定屬性，例如叢集識別碼。如需詳細資訊，請參閱[建立叢集](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html)。

1. 在 PingOne 入口網站上將 Amazon Redshift 新增為新的 SAML 應用程式。如需詳細步驟，請參閱 [Ping 身分文件](https://docs.pingidentity.com/)。

   1. 前往 **My Applications (我的應用程式)**。

   1. 在 **Add Application (新增應用程式)** 下方，選擇 **New SAML Application (新增 SAML 應用程式)**。

   1. 針對 **Application Name (應用程式名稱)**，輸入 **Amazon Redshift**。

   1. 針對 **Protocol Version (通訊協定版本)**，選擇 **SAML v2.0**。

   1. 針對 **Category (類別)**，選擇 ***your-application-category***。

   1. 針對 **Assertion Consumer Service (ACS) (聲明消費者服務 (ACS))**，輸入 ***your-redshift-local-host-url***。這是 SAML 聲明會重新導向至的本機主機與連接埠。

   1. 針對 **Entity ID (實體 ID)**，輸入 `urn:amazon:webservices`。

   1. 針對 **Signing (簽署)**，選擇 **Sign Assertion (簽署聲明)**。

   1. 在 **SSO Attribute Mapping (SSO 屬性映射)** 區段中，建立如下表所示的宣告。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/setup-identity-provider-ping.html)

1. 針對 **Group Access (群組存取)**，視需要設定下列群組存取：
   + **https://aws.amazon.com/SAML/Attributes/Role**
   + **https://aws.amazon.com/SAML/Attributes/RoleSessionName**
   + **https://redshift.amazon.com/SAML/Attributes/AutoCreate**
   + **https://redshift.amazon.com/SAML/Attributes/DbUser**

1. 檢閱您的設定並進行變更 (如有必要)。

1. 使用 **Initiate Single Sign-On (SSO) URL (啟動單一登入 (SSO) URL)** 做為瀏覽器 SAML 外掛程式的登入 URL。

1. 在 IAM 主控台上建立 IAM SAML 身分提供者。您所提供的中繼資料文件，是您在設定 Ping 身分時儲存的聯合中繼資料 XML 檔案。如需詳細步驟，請參閱《IAM 使用者指南》**中的[建立和管理 IAM 身分提供者 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html#idp-manage-identityprovider-console)。

1. 在 IAM 主控台上建立 SAML 2.0 聯合的 IAM 角色。如需詳細步驟，請參閱《IAM 使用者指南》**中的[為 SAML 建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html#idp_saml_Create)。

1. 建立 IAM 政策，您可將其附加至您在 IAM 主控台上為 SAML 2.0 聯合建立的 IAM 角色。如需詳細步驟，請參閱《IAM 使用者指南》**中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)。如需 Azure AD 範例，請參閱[設定 JDBC 或 ODBC 單一登入身分驗證](setup-azure-ad-identity-provider.md)。

## 步驟 2：設定 JDBC 或 ODBC 以對 Ping Identity 進行身分驗證
<a name="setup-identity-provider-ping-auth"></a>

------
#### [ JDBC ]

**設定 JDBC 以對 Ping 身分進行驗證**
+ 將資料庫用戶端設定為使用 Ping Identity 單一登入，透過 JDBC 連線到您的叢集。

  您可使用任何採用 JDBC 驅動程式的用戶端使用 Ping Identity 單一登入進行連線，或使用 Java 之類的語言透過指令碼進行連線。如需安裝和組態資訊，請參閱 [設定適用於 Amazon Redshift 的 JDBC 驅動器 2.x 版的連線](jdbc20-install.md)。

  例如，您可以使用 SQLWorkbench/J 作為用戶端。當您設定 SQLWorkbench /J 時，您的資料庫 URL 會使用下列格式。

  ```
  jdbc:redshift:iam://cluster-identifier:us-west-1/dev
  ```

  如果您使用 SQLWorkbench /J 作為用戶端，請執行下列步驟：

  1. 啟動 SQL Workbench/J。在**選取連線設定檔**頁面中，新增**設定檔群組**，例如 **Ping**。

  1. 針對 **Connection Profile (連線設定檔)**，輸入 ***your-connection-profile-name***，例如 **Ping**。

  1. 選擇 **Manage Drivers (管理驅動程式)**，然後選擇 **Amazon Redshift**。選擇**程式庫**旁邊的**開啟資料夾**圖示，然後選擇適當的 JDBC .jar 檔案。

  1. 在 **Select Connection Profile (選取連線設定檔)** 頁面上，將資訊新增至連線設定檔，如下所示：
     + 針對 **User (使用者)**，輸入您的 PingOne 使用者名稱。這是您用於單一登入之 PingOne 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。
     + 針對 **Password (密碼)**，輸入您的 PingOne 密碼。
     + 針對 **Drivers (驅動程式)**，選擇 **Amazon Redshift (com.amazon.redshift.jdbc.Driver)**。
     + 針對 **URL**，輸入 **jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name***。

  1. 選擇 **Extended Properties (延伸屬性)**，然後執行下列任一項：
     + 針對 **login\$1url**，輸入 ***your-ping-sso-login-url***。此值會指定 URL 使用單一登入做為登入的身分驗證。
     + 若為 Ping 身分，請針對 **plugin\$1name** 輸入 **com.amazon.redshift.plugin.PingCredentialsProvider**。此值指定驅動程式使用 Ping Identity 單一登入作為身分驗證方法。
     + 若為具有單一登入的 Ping Identity，請針對 **plugin\$1name** 輸入 **com.amazon.redshift.plugin.BrowserSamlCredentialsProvider**。此值會指定驅動程式將 Ping 身分 PingOne 與單一登入搭配使用，以做為身分驗證方法。

------
#### [ ODBC ]

**設定 ODBC 以對 Ping 身分進行身分驗證**
+ 將資料庫用戶端設定為使用 Ping Identity PingOne 單一登入，透過 ODBC 連線到您的叢集。

  Amazon Redshift 會提供適用於 Linux、Windows 和 macOS 作業系統的 ODBC 驅動程式。安裝 ODBC 驅動程式之前，查明 SQL 用戶端工具是 32 位元或 64 位元。安裝符合 SQL 用戶端工具需求的 ODBC 驅動程式。

  在 Windows 上，於 **Amazon Redshift ODBC Driver DSN Setup (Amazon Redshift ODBC 驅動程式 DSN 設定)** 頁面的 **Connection Settings (連線設定)** 之下，輸入下列資訊：
  + 針對 **Data source name (資料來源名稱)**，輸入 ***your-DSN***。這會指定作為 ODBC 設定檔名稱的資料來源名稱。
  + 針對 **Auth Type (驗證類型)**，執行下列其中一項操作：
    + 針對 Ping 身分組態，選擇 **Identity Provider: Ping Federate (身分提供者：Ping 聯合)**。這是 ODBC 驅動程式使用 Ping Identity 單一登入用來驗證的身分驗證方法。
    + 針對具有單一登入的 Ping Identity 組態，選擇**身分提供者：瀏覽器 SAML**。這是 ODBC 驅動程式透過具有單一登入的 Ping Identity 用來進行身分驗證的身分驗證方法。
  + 針對 **Cluster ID (叢集 ID)**，輸入 ***your-cluster-identifier***。
  + 針對 **Region (區域)**，輸入 ***your-cluster-region***。
  + 針對 **Database (資料庫)**，輸入 ***your-database-name***。
  + 針對 **User (使用者)**，輸入 ***your-ping-username***。這是您用於單一登入之 PingOne FS 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。僅在 **Auth Type (驗證類型)** 為 **Identity Provider: PingFederate (身分提供者：PingFederate)** 的情況下使用此項目。
  + 針對 **Password (密碼)**，輸入 ***your-ping-password***。僅在 **Auth Type (驗證類型)** 為 **Identity Provider: PingFederate (身分提供者：PingFederate)** 的情況下使用此項目。
  + 針對 **Listen Port (接聽連接埠)**，輸入 ***your-listen-port***。這是本機伺服器接聽的連接埠。預設值為 7890。這僅適用於瀏覽器 SAML 外掛程式。
  +  針對 **Response Timeout (回應逾時)**，輸入 ***the-number-of-seconds***。這是 IdP 伺服器傳回回應時，在逾時之前等待的秒數。秒數的下限必須為 10。如果建立連線所花的時間超過此臨界值，連線會中止。這僅適用於瀏覽器 SAML 外掛程式。
  + 針對 **Login URL (登入 URL)**，輸入 ***your-login-url***。這僅適用於瀏覽器 SAML 外掛程式。

  在 macOS 和 Linux 上，編輯 `odbc.ini` 檔案，如下所示：
**注意**  
所有項目都不區分大小寫。
  + 針對 **clusterid**，輸入 ***your-cluster-identifier***。這是所建立 Amazon Redshift 叢集的名稱。
  + 針對 **region (區域)**，輸入 ***your-cluster-region***。這是已建立 Amazon Redshift 叢集 AWS 的區域。
  + 針對 **database (資料庫)**，輸入 ***your-database-name***。這是您嘗試在 Amazon Redshift 叢集上存取的資料庫名稱。
  + 針對 **locale**，輸入 **en-us**。這是錯誤訊息的顯示語言。
  + 針對 **iam**，輸入 **1**。此值指定驅動程式使用 IAM 登入資料進行身分驗證。
  + 針對 **plugin\$1name**，執行下列其中一項作業：
    + 針對 Ping 身分組態，輸入 **BrowserSAML**。這是 ODBC 驅動程式用來驗證具有 MFA 之 Ping 身分 SSO 的身分驗證方法。
    + 對於具有單一登入的 Ping Identity 組態，請輸入 **Ping**。這是 ODBC 驅動程式透過具有單一登入的 Ping Identity 用來進行身分驗證的身分驗證方法。
  + 針對 **uid**，輸入 ***your-ping-username***。這是您用於單一登入之 Microsoft Azure 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。僅在 **plugin\$1name** 為 **Ping** 的情況下使用此項目。
  + 針對 **pwd**，輸入 ***your-ping-password***。僅在 **plugin\$1name** 為 **Ping** 的情況下使用此項目。
  + 針對 **login\$1url**，輸入 ***your-login-url***。這是會傳回 SAML 回應的初始單一登入 URL。這僅適用於瀏覽器 SAML 外掛程式。
  + 針對 **idp\$1response\$1timeout**，輸入 ***the-number-of-seconds***。這是等待 PingOne 身分回應的指定時間期間 (秒)。這僅適用於瀏覽器 SAML 外掛程式。
  + 針對 **listen\$1port**，輸入 ***your-listen-port***。這是本機伺服器接聽的連接埠。預設值為 7890。這僅適用於瀏覽器 SAML 外掛程式。

  在 macOS 和 Linux 上，同時編輯設定檔設定以新增下列匯出：

  ```
  export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
  ```

  ```
  export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini
  ```

------

# Okta
<a name="setup-identity-provider-okta"></a>

您可以使用 Okta 做為身分提供者 (IdP) 來存取您的 Amazon Redshift 叢集。本教學課程說明如何使用 Okta 作為身分提供者 (IdP) 來存取您的 Amazon Redshift 叢集。

## 步驟 1：設定 Okta 和 AWS 您的帳戶彼此信任
<a name="setup-identity-provider-okta-trust"></a>

下列程序說明如何設定信任關係。

**設定 Okta 和 AWS 您的帳戶彼此信任**

1. 建立或使用現有的 Amazon Redshift 叢集，以供 Okta 使用者連線。若要設定連線，則需要此叢集的特定屬性，例如叢集識別碼。如需詳細資訊，請參閱[建立叢集](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html)。

1. 在 Okta 入口網站上將 Amazon Redshift 新增為新的應用程式。如需詳細步驟，請參閱 [Okta 文件](https://developer.okta.com/docs/)。
   + 選擇 **Add Application (新增應用程式)**。
   + 在 **Add Application (新增應用程式)** 下方，選擇 **Create New App (建立新的應用程式)**。
   + 在 **Create a New Add Application Integration (建立新的新增應用程式整合)** 頁面上，針對 **Platform (平台)** 選擇 **Web**。
   + 針對 **Sign on method (登入方法)**，選擇 **SAML v2.0**。
   + 在 **General Settings (一般設定)** 頁面上，針對 **App name (應用程式名稱)** 輸入 ***your-redshift-saml-sso-name***。這是您的應用程式名稱。
   + 在 **SAML Settings (SAML 設定)** 頁面上，針對 **Single sign on URL (單一登入 URL)**，輸入 ***your-redshift-local-host-url***。這是 SAML 聲明會重新導向至的本機主機與連接埠，例如 `http://localhost:7890/redshift/`。

1. 使用**單一登入 URL** 值做為**收件人 URL** 和**目標 URL**。

1. 針對 **Signing (簽署)**，選擇 **Sign Assertion (簽署聲明)**。

1. 針對**對象 URI (SP 實體 ID)**，針對宣告輸入 **urn:amazon:webservices**，如下表所示。

1. 在**進階設定**區段中，針對 **SAML 發行者 ID** 輸入 ***your-Identity-Provider-Issuer-ID***，您可以在**檢視設定指示**區段中找到此值。

1. 在 **Attribute Statements (屬性陳述式)** 區段中，建立如下表所示的宣告。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/setup-identity-provider-okta.html)

1. 在 **App Embed Link (應用程式內嵌連結)** 區段中，尋找您可以用來做為瀏覽器 SAML 外掛程式登入 URL 的 URL。

1. 在 IAM 主控台上建立 IAM SAML 身分提供者。您所提供的中繼資料文件，是您在設定 Okta 時儲存的聯合中繼資料 XML 檔案。如需詳細步驟，請參閱《IAM 使用者指南》**中的[建立和管理 IAM 身分提供者 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html#idp-manage-identityprovider-console)。

1. 在 IAM 主控台上建立 SAML 2.0 聯合的 IAM 角色。如需詳細步驟，請參閱《IAM 使用者指南》**中的[為 SAML 建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html#idp_saml_Create)。

1. 建立 IAM 政策，您可將其附加至您在 IAM 主控台上為 SAML 2.0 聯合建立的 IAM 角色。如需詳細步驟，請參閱《IAM 使用者指南》**中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)。如需 Azure AD 範例，請參閱[設定 JDBC 或 ODBC 單一登入身分驗證](setup-azure-ad-identity-provider.md)。

## 步驟 2：設定 JDBC 或 ODBC 以對 Okta 進行身分驗證
<a name="setup-identity-provider-okta-auth"></a>

------
#### [ JDBC ]

**設定 JDBC 以對 Okta 進行身分驗證**
+ 將資料庫用戶端設定為使用 Okta 單一登入，透過 JDBC 連線到您的叢集。

  您可使用任何採用 JDBC 驅動程式的用戶端使用 Okta 單一登入進行連線，或使用 Java 之類的語言透過指令碼進行連線。如需安裝和組態資訊，請參閱 [設定適用於 Amazon Redshift 的 JDBC 驅動器 2.x 版的連線](jdbc20-install.md)。

  例如，您可以使用 SQLWorkbench/J 作為用戶端。當您設定 SQLWorkbench /J 時，您的資料庫 URL 會使用下列格式。

  ```
  jdbc:redshift:iam://cluster-identifier:us-west-1/dev
  ```

  如果您使用 SQLWorkbench /J 作為用戶端，請執行下列步驟：

  1. 啟動 SQL Workbench/J。在**選取連線設定檔**頁面中，新增**設定檔群組**，例如 **Okta**。

  1. 針對 **Connection Profile (連線設定檔)**，輸入 ***your-connection-profile-name***，例如 **Okta**。

  1. 選擇 **Manage Drivers (管理驅動程式)**，然後選擇 **Amazon Redshift**。選擇**程式庫**旁邊的**開啟資料夾**圖示，然後選擇適當的 JDBC .jar 檔案。

  1. 在 **Select Connection Profile (選取連線設定檔)** 頁面上，將資訊新增至連線設定檔，如下所示：
     + 在 **User** (使用者) 輸入您的 Okta 使用者名稱。這是您用於單一登入之 Okta 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。
     + 在 **Password** (密碼) 輸入您的 Okta 密碼。
     + 針對 **Drivers (驅動程式)**，選擇 **Amazon Redshift (com.amazon.redshift.jdbc.Driver)**。
     + 針對 **URL**，輸入 **jdbc:redshift:iam://*your-cluster-identifier*:*your-cluster-region*/*your-database-name***。

  1. 選擇 **Extended Properties (延伸屬性)**，然後執行下列任一項：
     + 針對 **login\$1url**，輸入 ***your-okta-sso-login-url***。此值會指定 URL 使用單一登入做為登入 Okta 的身分驗證。
     + 針對 Okta 單一登入，請為 **plugin\$1name** 輸入 **com.amazon.redshift.plugin.OktaCredentialsProvider**。此值指定驅動程式使用 Okta 單一登入作為身分驗證方法。
     + 針對具有 MFA 的 Okta 單一登入，請為 **plugin\$1name** 輸入 **com.amazon.redshift.plugin.BrowserSamlCredentialsProvider**。此值會指定驅動程式使用具有 MFA 的 Okta 單一登入做為身分驗證方法。

------
#### [ ODBC ]

**設定 ODBC 以對 Okta 進行身分驗證**
+ 將資料庫用戶端設定為使用 Okta 單一登入，透過 ODBC 連線到您的叢集。

  Amazon Redshift 會提供適用於 Linux、Windows 和 macOS 作業系統的 ODBC 驅動程式。安裝 ODBC 驅動程式之前，查明 SQL 用戶端工具是 32 位元或 64 位元。安裝符合 SQL 用戶端工具需求的 ODBC 驅動程式。

  在 Windows 上，於 **Amazon Redshift ODBC Driver DSN Setup (Amazon Redshift ODBC 驅動程式 DSN 設定)** 頁面的 **Connection Settings (連線設定)** 之下，輸入下列資訊：
  + 針對 **Data source name (資料來源名稱)**，輸入 ***your-DSN***。這會指定作為 ODBC 設定檔名稱的資料來源名稱。
  + 針對 **Auth Type (驗證類型)**，執行下列其中一項操作：
    + 針對 Okta 單一登入組態，請選擇 **Identity Provider: Okta**。這是 ODBC 驅動程式使用 Okta 單一登入來進行驗證的身分驗證方法。
    + 針對具有 MFA 的 Okta 單一登入組態，請選擇 **Identity Provider: Browser SAML**。這是 ODBC 驅動程式使用具有 MFA 之 Okta 單一登入來進行驗證的身分驗證方法。
  + 針對 **Cluster ID (叢集 ID)**，輸入 ***your-cluster-identifier***。
  + 針對 **Region (區域)**，輸入 ***your-cluster-region***。
  + 針對 **Database (資料庫)**，輸入 ***your-database-name***。
  + 針對 **User (使用者)**，輸入 ***your-okta-username***。這是您用於單一登入之 Okta 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。僅在 **Auth Type (驗證類型)** 為**Identity Provider: Okta (身分提供者：Okta)** 的情況下使用此項目。
  + 針對 **Password (密碼)**，輸入 ***your-okta-password***。僅在 **Auth Type (驗證類型)** 為**Identity Provider: Okta (身分提供者：Okta)** 的情況下使用此項目。

  在 macOS 和 Linux 上，編輯 `odbc.ini` 檔案，如下所示：
**注意**  
所有項目都不區分大小寫。
  + 針對 **clusterid**，輸入 ***your-cluster-identifier***。這是所建立 Amazon Redshift 叢集的名稱。
  + 針對 **region (區域)**，輸入 ***your-cluster-region***。這是已建立 Amazon Redshift 叢集 AWS 的區域。
  + 針對 **database (資料庫)**，輸入 ***your-database-name***。這是您嘗試在 Amazon Redshift 叢集上存取的資料庫名稱。
  + 針對 **locale**，輸入 **en-us**。這是錯誤訊息的顯示語言。
  + 針對 **iam**，輸入 **1**。此值指定驅動程式使用 IAM 登入資料進行身分驗證。
  + 針對 **plugin\$1name**，執行下列其中一項作業：
    + 若為具有 MFA 的 Okta 單一登入組態，請輸入 **BrowserSAML**。這是 ODBC 驅動程式用來驗證具有 MFA 之 Okta 單一登入的身分驗證方法。
    + 針對 Okta 單一登入組態，請輸入 **Okta**。這是 ODBC 驅動程式使用 Okta 單一登入來進行驗證的身分驗證方法。
  + 針對 **uid**，輸入 ***your-okta-username***。這是您用於單一登入之 Okta 帳戶的使用者名稱，該帳戶具有您嘗試驗證之叢集的許可。僅在 **plugin\$1name** 為 **Okta** 的情況下使用此項目。
  + 針對 **pwd**，輸入 ***your-okta-password***。僅在 **plugin\$1name** 為 **Okta** 的情況下使用此項目。
  + 針對 **login\$1url**，輸入 ***your-login-url***。這是會傳回 SAML 回應的初始單一登入 URL。這僅適用於瀏覽器 SAML 外掛程式。
  + 針對 **idp\$1response\$1timeout**，輸入 ***the-number-of-seconds***。這是等待 PingOne 回應的指定時間期間 (秒)。這僅適用於瀏覽器 SAML 外掛程式。
  + 針對 **listen\$1port**，輸入 ***your-listen-port***。這是本機伺服器接聽的連接埠。預設值為 7890。這僅適用於瀏覽器 SAML 外掛程式。

  在 macOS 和 Linux 上，同時編輯設定檔設定以新增下列匯出：

  ```
  export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
  ```

  ```
  export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini
  ```

------