

 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` 未使用，則會忽略其他選項。

下列範例顯示具有兩個設定檔的 \~/.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 選項。


|  選項  | 說明 | 
| --- | --- | 
| `Iam` | 僅使用於 ODBC 連線字串。設為 1 以使用 IAM 身分驗證。 | 
| `AccessKeyID`<br />`SecretAccessKey`<br />`SessionToken` | IAM 資料庫身分驗證所設定之 IAM 角色或使用者的存取金鑰 ID 和私密存取金鑰。SessionToken 僅需用於具有暫時憑證的 IAM 角色。SessionToken 不適用於使用者。如需詳細資訊，請參閱[暫時性安全登入資料](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)。 | 
| plugin\_name | 實作登入資料供應商之類別的完全合格名稱。Amazon Redshift JDBC 驅動程式包含以 SAML 為基礎的憑證供應商外掛程式。如果您提供 plugin\_name，您也可以提供其他相關選項。如需詳細資訊，請參閱[憑證提供者外掛程式](#using-credentials-provider-plugin)。 | 
| `Profile`  |  AWS 登入資料或組態檔案中包含 JDBC 連線選項值的設定檔名稱。如需詳細資訊，請參閱[使用組態設定檔](#using-configuration-profile)。 | 

## 用於建立資料庫使用者憑證的 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 政策來設定條件的範例。

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


|  選項  | 說明 | 
| --- | --- | 
| DbUser | 資料庫使用者的名稱。如果資料庫中有名稱為 DbUser 的使用者，暫時性使用者登入資料與現有使用者會有相同的許可。如果資料庫中不存在 DbUser，且 AutoCreate 為 true，將建立名為 DbUser 的新使用者。您也可選擇性停用現有使用者的密碼。如需詳細資訊，請參閱 [ALTER\_USER](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_USER.html) | 
| AutoCreate | 如果資料庫使用者不存在，指定 `true` 將建立資料庫使用者，並將其命名為 DbUser 指定的名稱。預設值為 false。 | 
| DbGroups | 資料庫使用者在目前工作階段中加入之一或多個現有資料庫群組名稱的逗號分隔清單。根據預設，新使用者只會加入 PUBLIC。 | 

## 憑證提供者外掛程式
<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\_id) 所產生的。

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`，則會忽略其他選項。


|  選項  | 說明 | 
| --- | --- | 
| plugin\_name | 針對 JDBC，為實作登入資料供應商的類別名稱。請指定下列其中一項：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/options-for-providing-iam-credentials.html)<br />針對 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) | 
| idp\_host  | 企業身分提供商主機的名稱。該名稱不得包含任何斜線 (「/」)。針對 Okta 身分提供者，idp\_host 的值應以 .okta.com 結尾。 | 
| `idp_port`  | 身分提供者使用的連接埠。預設為 443。Okta 會忽略此連接埠。 | 
| `preferred_role`  | Amazon Resource Name (ARN) 角色，來自 SAML 聲明中 Role 屬性的 AttributeValue 元素。若要尋找偏好角色適用的值，請洽詢 IdP 管理員。如需詳細資訊，請參閱[步驟 2：設定 IdP 的 SAML 聲明](generating-iam-credentials-steps.md#configuring-saml-assertions)。 | 
| `user`  | 企業使用者名稱，包括網域 (如適用)。例如，在 Active Directory 中，網域名稱為必填，使用格式為網域\\使用者名稱。 | 
| password   | 企業使用者的密碼。我們建議不要使用此選項。請改用 SQL 用戶端提供密碼。 | 
| `app_id`  | Okta 應用程式的 ID。僅搭配 Okta 使用。Okta 應用程式嵌入連結中 app\_id 後方的 amazon\_aws 值。若要取得此值，請洽詢 IdP 管理員。以下為應用程式嵌入連結的範例：https://example.okta.com/home/amazon\_aws/0oa2hylwrpM8UGehd1t7/272 | 
| `idp_tenant` | 用於 Azure AD 的租用戶。僅搭配 Azure 使用。 | 
| `client_id`  | Azure AD 中 Amazon Redshift 企業應用程式的用戶端 ID。僅搭配 Azure 使用。 | 