設定身分驗證和 SSL - Amazon Redshift

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

設定身分驗證和 SSL

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

Amazon Redshift JDBC 驅動程式 2.1 版會針對這些身分驗證通訊協定提供完整支援。

驅動程式支援的 SSL 版本取決於您使用的 JVM 版本。如需每個 Java 版本所支援之 SSL 版本的相關資訊,請參閱 Java Platform Group Product Management 部落格上的診斷 TLS、SSL 和 HTTPS

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

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

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

您要在連線 URL 中提供組態資訊給驅動程式。如需連線 URL 語法的相關資訊,請參閱建置連線 URL

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

僅使用使用者名稱和密碼

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

僅使用 Redshift 使用者名稱和密碼來設定身分驗證
  1. UID 屬性設定為用於存取 Amazon Redshift 伺服器的 Redshift 使用者名稱。

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

使用 SSL 但不進行身分驗證

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

設定沒有身分驗證的 SSL 連線
  1. UID 屬性設定為用於存取 Amazon Redshift 伺服器的 Redshift 使用者名稱。

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

  3. SSLFactory 屬性設定為 com.amazon.redshift.ssl.NonValidatingFactory

使用單向 SSL 身分驗證

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

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

設定單向 SSL 身分驗證
  1. 將 UID 屬性設定為用於存取 Amazon Redshift 伺服器的 Redshift 使用者名稱。

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

  3. 將 SSL 屬性設為 true。

  4. 將 SSL RootCert 屬性設定為根 CA 憑證的位置。

  5. 如果您沒有使用預設 Java 之一 TrustStores,請執行下列其中一個動作:

    • 若要指定伺服器憑證,請將 SSL RootCert 屬性設定為憑證的完整路徑。

    • 若要指定 TrustStore,請執行下列動作:

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

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

        -Djavax.net.ssl.trustStore=[TrustStoreName] -Djavax.net.ssl.trustStorePassword=[TrustStorePassword] -Djavax.net.ssl.trustStoreType=[TrustStoreType]
  6. 選擇一項:

    • 若要驗證憑證,請將 SSLMode 屬性設定為 verify-ca。

    • 若要驗證憑證並驗證憑證中的主機名稱,請將 SSLMode 屬性設定為 verify-full。

設定 IAM 身分驗證

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

如需 IAM 身分驗證的相關資訊,請參閱 Amazon Redshift 中的身分和存取管理

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

連接字串 描述

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。根據您在建立、修改或遷移叢集時所選取的連接埠而定,允許存取選取的連接埠。

指定設定檔

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

可以將設定檔新增至 AWS 認證檔案。此檔案的預設位置是:~/.aws/credentials

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

如需設定檔的相關資訊,請參閱《AWS SDK for Java》中的使用 AWS 憑證

使用執行個體設定檔憑證

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

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

如需執行個體設定檔的相關資訊,請參閱《IAM 使用者指南》中的存取管理

使用憑證提供者

此驅動程式也支援下列服務的憑證提供者外掛程式:

  • 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_Name — 憑證提供者外掛程式類別的完整類別路徑。

  • IDP_Host — 您用來對 Amazon Redshift 進行身分驗證的服務主機。

  • IdP_Port — 用於身分驗證服務的主機監聽的連接埠。Okta 不需要此屬性。

  • User — idp_host 伺服器的使用者名稱。

  • Password — 與 idp_host 使用者名稱相關聯的密碼。

  • DbUser— 您正在連接的 Amazon Redshift 用戶名.

  • SSL_Insecure — 指出是否應驗證 IDP 伺服器憑證。

  • Client_ID — 與 Azure AD 入口網站中的使用者名稱相關聯的用戶端 ID。僅用於 Azure AD。

  • Client_Secret — 與 Azure AD 入口網站中的用戶端 ID 相關聯的用戶端祕密。僅用於 Azure AD。

  • IdP_Tenant — Amazon Redshift 應用程式的 Azure AD 租用戶 ID。僅用於 Azure AD。

  • App_ID — Amazon Redshift 應用程式的 Okta 應用程式 ID。僅用於 Okta。

  • App_Name — Amazon Redshift 應用程式的 Okta 應用程式名稱 (選擇性)。僅用於 Okta。

  • Partner_SPID — 選擇性的合作夥伴 SPID (服務提供者 ID) 值。僅用於 PingFederate.

如果您使用這些服務其中之一的瀏覽器外掛程式,連線 URL 也可以包括:

  • Login_URL — 透過瀏覽器外掛程式使用安全性聲明標記語言 (SAML) 或 Azure AD 服務時,身分提供者網站上資源的 URL。如果您使用瀏覽器外掛程式,則必須要有此參數。

  • Listn_Port — 透過瀏覽器外掛程式使用 SAML 或 Azure AD 服務時,驅動程式用來向身分提供者取得 SAML 回應的連接埠。

  • IdP_Response_Timeout — 透過瀏覽器外掛程式使用 SAML 或 Azure AD 服務時,驅動程式等待身分提供者傳回 SAML 回應的時間長度 (以秒為單位)。

如需其他連線字串屬性的資訊,請參閱 JDBC 驅動程式 2.1 版組態的選項