

 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/)。

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

# 設定身分驗證和 SSL
<a name="jdbc20-configure-authentication-ssl"></a>

為了防止有人未經授權就存取資料，Amazon Redshift 資料存放區會要求所有連線使用使用者憑證進行身分驗證。某些資料存放區還會要求必須透過 Secure Sockets Layer (SSL) 通訊協定來進行連線 (無論是否使用單向身分驗證)。

Amazon Redshift JDBC 驅動器 2.x 版會針對這些身分驗證通訊協定提供完整支援。

驅動程式支援的 SSL 版本取決於您使用的 JVM 版本。如需每個 Java 版本所支援之 SSL 版本的相關資訊，請參閱 Java Platform Group Product Management 部落格上的[診斷 TLS、SSL 和 HTTPS](https://blogs.oracle.com/java-platform-group/diagnosing-tls,-ssl,-and-https)。

用於連線的 SSL 版本是驅動程式和伺服器支援的最高版本，而這會在連線時確定。

將 Amazon Redshift JDBC 驅動器 2.x 版設定為根據您要連線之 Redshift 伺服器的安全需求驗證您的連線。

您一律必須提供 Redshift 使用者名稱和密碼來驗證連線。根據伺服器上是否啟用且需要 SSL，您可能還需要將驅動程式設定為透過 SSL 連接。或者，您也可以使用單向 SSL 身分驗證，以便用戶端 (驅動程式本身) 驗證伺服器的身分。

您要在連線 URL 中提供組態資訊給驅動程式。如需連線 URL 語法的相關資訊，請參閱[建置連線 URL](jdbc20-build-connection-url.md)。

*SSL* 表示 TLS/SSL，兩者分別是 Transport Layer Security 和 Secure Sockets Layer。此驅動程式支援業界標準的 TLS/SSL 版本。

## 設定 IAM 身分驗證
<a name="jdbc20-configure-iam-authentication"></a>

如果您要使用 IAM 身分驗證連線至 Amazon Redshift 伺服器，請將以下屬性設定為資料來源連線字串的一部分。

 如需 IAM 身分驗證的相關資訊，請參閱 [Amazon Redshift 中的身分和存取管理](redshift-iam-authentication-access-control.md)。

若要使用 IAM 身分驗證，請使用下列其中一種連線字串格式：


| 連接字串 | Description | 
| --- | --- | 
|  `jdbc:redshift:iam:// [host]:[port]/[db]`  |  一般連線字串。驅動程式會從主機推斷 ClusterID 和 Region。  | 
|  `jdbc:redshift:iam:// [cluster-id]: [region]/[db]`  |  驅動程式會擷取主機資訊 (在給定 ClusterID D 和 Region 的情況下)。  | 
|  `jdbc:redshift:iam:// [host]/[db]`  |  驅動程式會預設為連接埠 5439，並從主機推斷 ClusterID 和 Region。根據您在建立、修改或遷移叢集時所選取的連接埠而定，允許存取選取的連接埠。  | 

## 指定設定檔
<a name="jdbc20-aws-credentials-profiles"></a>

如果您要使用 IAM 身分驗證，則可以在設定檔名稱下指定任何其他必要或選擇性的連線屬性。這樣做可讓您避免將某些資訊直接放在連線字串中。您可以使用 Profile 屬性在連線字串中指定設定檔名稱。

設定檔可以新增至 AWS 登入資料檔案。此檔案的預設位置是：`~/.aws/credentials`。

您可以在下列環境變數中設定路徑來變更預設值：`AWS_CREDENTIAL_PROFILES_FILE`

 如需設定檔的相關資訊，請參閱《適用於 Java 的 AWS SDK》**中的[使用 AWS 憑證](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html)。

## 使用執行個體設定檔憑證
<a name="jdbc20-instance-profile-credentials"></a>

如果您要在與 IAM 角色關聯的 Amazon EC2 執行個體上執行應用程式，您可以使用執行個體設定檔憑證進行連線。

若要這麼做，請使用前述資料表中的其中一種 IAM 連線字串格式，並將 dbuser 連線屬性設定為您要用來連線的 Amazon Redshift 使用者名稱。

如需執行個體設定檔的相關資訊，請參閱《IAM 使用者指南》**中的[存取管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。

## 使用憑證提供者
<a name="jdbc20-aws-credentials-provider"></a>

此驅動程式也支援下列服務的憑證提供者外掛程式：
+ AWS IAM Identity Center
+ Active Directory Federation Service (ADFS)
+ JSON Web 權杖 (JWT) 服務
+ Microsoft Azure Active Directory (AD) 服務和瀏覽器 Microsoft Azure Active Directory (AD) 服務
+ Okta 服務
+ PingFederate 服務 
+ 適用於 SAML 服務的瀏覽器 SAML，例如 Okta、Ping 或 ADFS

如果您使用這些服務的其中一個，連線 URL 必須指定下列屬性：
+ **Plugin\$1Name** — 憑證提供者外掛程式類別的完整類別路徑。
+ **IDP\$1Host** — 您用來對 Amazon Redshift 進行身分驗證的服務主機。
+ **IdP\$1Port** — 用於身分驗證服務的主機監聽的連接埠。Okta 不需要此屬性。
+ **User** - idp\$1host 伺服器的使用者名稱。
+ **Password** - 與 idp\$1host 使用者名稱相關聯的密碼。
+ **DbUser** - 您用來連線的 Amazon Redshift 使用者名稱。
+ **SSL\$1Insecure** — 指出是否應驗證 IDP 伺服器憑證。
+ **Client\$1ID** - 與 Azure AD 入口網站中的使用者名稱相關聯的用戶端 ID。僅用於 Azure AD。
+ **Client\$1Secret** — 與 Azure AD 入口網站中的用戶端 ID 相關聯的用戶端祕密。僅用於 Azure AD。
+ **IdP\$1Tenant** — Amazon Redshift 應用程式的 Azure AD 租用戶 ID。僅用於 Azure AD。
+ **App\$1ID** — Amazon Redshift 應用程式的 Okta 應用程式 ID。僅用於 Okta。
+ **App\$1Name** — Amazon Redshift 應用程式的 Okta 應用程式名稱 (選擇性)。僅用於 Okta。
+ **Partner\$1SPID** — 選擇性的合作夥伴 SPID (服務提供者 ID) 值。僅用於 PingFederate。
+ **Idc\$1Region** – IAM Identity Center AWS 區域 AWS 執行個體所在的 。僅用於 AWS IAM Identity Center。
+ **Issuer\$1Url** – AWS IAM Identity Center 伺服器的執行個體端點。僅用於 AWS IAM Identity Center。

如果您使用這些服務其中之一的瀏覽器外掛程式，連線 URL 也可以包括：
+ **Login\$1URL** — 透過瀏覽器外掛程式使用安全性聲明標記語言 (SAML) 或 Azure AD 服務時，身分提供者網站上資源的 URL。如果您使用瀏覽器外掛程式，則必須要有此參數。
+ **Listen\$1Port** – 透過瀏覽器外掛程式使用 SAML、Azure AD 或 IAM Identity Center AWS 服務時，驅動程式用來從身分提供者取得 SAML 回應的連接埠。
+ **IdP\$1Response\$1Timeout** – 透過瀏覽器外掛程式使用 SAML、Azure AD 或 IAM Identity Center AWS 服務時，驅動程式等待來自身分提供者的 SAML 回應的時間，以秒為單位。

如需其他連線字串屬性的資訊，請參閱 [JDBC 驅動器 2.x 版組態的選項](jdbc20-configuration-options.md)。

# 僅使用使用者名稱和密碼
<a name="jdbc20-authentication-username-password"></a>

如果您要連線的伺服器未使用 SSL，您只需要提供 Redshift 使用者名稱和密碼即可驗證連線。

**僅使用 Redshift 使用者名稱和密碼來設定身分驗證**

1. 將 `UID` 屬性設定為用於存取 Amazon Redshift 伺服器的 Redshift 使用者名稱。

1. 將 PWD 屬性設定為與 Redshift 使用者名稱對應的密碼。

# 使用 SSL 但不進行身分驗證
<a name="jdbc20-use-ssl-without-identity-verification"></a>

如果您要連線的伺服器使用 SSL，但不需要進行身分驗證，則您可以將驅動程式設定為使用非驗證 SSL Factory。

**設定沒有身分驗證的 SSL 連線**

1. 將 `UID` 屬性設定為用於存取 Amazon Redshift 伺服器的 Redshift 使用者名稱。

1. 將 `PWD` 屬性設定為與 Redshift 使用者名稱對應的密碼。

1. 將 `SSLFactory` 屬性設定為 `com.amazon.redshift.ssl.NonValidatingFactory`。

# 使用單向 SSL 身分驗證
<a name="jdbc20-use-one-way-SSL-authentication"></a>

如果您要連線的伺服器使用 SSL 且具有憑證，則您可以將驅動程式設定為使用單向身分驗證來驗證伺服器的身分。

單向身分驗證需要已簽署的受信任 SSL 憑證來驗證伺服器的身分。您可以將驅動程式設定為使用特定憑證，或存取包含適當憑證的 TrustStore。如果您未指定憑證或 TrustStore，則驅動程式會使用預設的 Java TrustStore (一般是 `jssecacerts` 或 `cacerts`)。

**設定單向 SSL 身分驗證**

1. 將 UID 屬性設定為用於存取 Amazon Redshift 伺服器的 Redshift 使用者名稱。

1. 將 PWD 屬性設定為與 Redshift 使用者名稱對應的密碼。

1. 將 SSL 屬性設為 true。

1. 將 SSLRootCert 屬性設定為根 CA 憑證的位置。

1. 如果您未使用其中一個預設的 Java TrustStore，請執行以下其中一項操作：
   + 若要指定伺服器憑證，請將 SSLRootCert 屬性設定為憑證的完整路徑。
   + 若要指定 TrustStore，請執行以下操作：

     1. 使用 keytool 程式，將伺服器憑證新增至您要使用的 TrustStore。

     1. 指定要在使用驅動程式啟動 Java 應用程式時使用的 TrustStore 和密碼。例如：

        ```
        -Djavax.net.ssl.trustStore=[TrustStoreName]
        -Djavax.net.ssl.trustStorePassword=[TrustStorePassword]
        -Djavax.net.ssl.trustStoreType=[TrustStoreType]
        ```

1. 選擇一項：
   + 若要驗證憑證，請將 SSLMode 屬性設定為 verify-ca。
   + 若要驗證憑證並驗證憑證中的主機名稱，請將 SSLMode 屬性設定為 verify-full。