提供 IAM 登入資料的選項 - Amazon Redshift

Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章

提供 IAM 登入資料的選項

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

  • AWS 設定檔

    做為以 JDBC 或 ODBC 設定形式提供登入資料值的替代方案,您可將值放入命名設定檔。如需更多詳細資訊,請參閱 使用組態設定檔

  • IAM 憑證

    以 JDBC 或 ODBC 設定形式提供 AccessKeyID、SecretAccessKey 和 (選用) SessionToken 的值。SessionToken 只對擁有暫時性登入資料的 IAM 角色為必填。如需更多詳細資訊,請參閱 提供 IAM 登入資料的 JDBC 和 ODBC 選項

  • 身分提供者聯合

    當您使用身分提供者聯合,讓來自身分提供者的使用者向 Amazon Redshift 進行驗證時,請指定憑證供應商外掛程式的名稱。如需更多詳細資訊,請參閱 憑證提供者外掛程式

    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 版組態的選項

如需更多詳細資訊,請參閱 步驟 5:設定 JDBC 或 ODBC 連線使用 IAM 登入資料

使用組態設定檔

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

針對具有 Amazon Redshift JDBC 或 ODBC 驅動程式之以 SAM 為基礎的憑證供應商外掛程式,您可以使用先前在憑證提供者外掛程式中所述的設定。如果 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

如需使用設定檔的相關資訊,請參閱《AWS Command Line Interface 使用者指南》中的組態和憑證檔案設定

如需為 JDBC 驅動程式使用設定檔的相關資訊,請參閱指定設定檔

如需為 ODBC 驅動程式使用設定檔的相關資訊,請參閱身分驗證方法

提供 IAM 登入資料的 JDBC 和 ODBC 選項

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

選項

說明

Iam

僅使用於 ODBC 連線字串。設為 1 以使用 IAM 身分驗證。

AccessKeyID

SecretAccessKey

SessionToken

IAM 資料庫身分驗證所設定之 IAM 角色或使用者的存取金鑰 ID 和私密存取金鑰。SessionToken 僅需用於具有暫時憑證的 IAM 角色。SessionToken 不適用於使用者。如需詳細資訊,請參閱暫時性安全登入資料
plugin_name 實作登入資料供應商之類別的完全合格名稱。Amazon Redshift JDBC 驅動程式包含以 SAML 為基礎的憑證供應商外掛程式。如果您提供 plugin_name,您也可以提供其他相關選項。如需更多詳細資訊,請參閱 憑證提供者外掛程式

Profile

包含 JDBC 連線選項值之 AWS 憑證或設定檔中的設定檔名稱。如需更多詳細資訊,請參閱 使用組態設定檔

用於建立資料庫使用者憑證的 JDBC 和 ODBC 選項

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

如果您使用身分提供者 (IdP),請洽詢 IdP 管理員,以決定這些選項的正確值。IdP 管理員也可設定您的 IdP,以提供這些選項,如此您便不用透過 JDBC 或 ODBC 選項提供。如需更多詳細資訊,請參閱 步驟 2:設定 IdP 的 SAML 聲明

注意

如果您使用 IAM 政策變數 ${redshift:DbUser},如 GetClusterCredentials 的資源政策中所述,則會以 API 操作的請求內容所擷取的值取代 DbUser 的值。Amazon Redshift 驅動程式使用連線 URL 提供的 DbUser 變數的值,而非提供作為 SAML 屬性的值。

為了協助保護此組態的安全,建議您在 IAM 政策中使用條件,配合 DbUser 來驗證 RoleSessionName 值。您可以在使用 GetClusterCredentials 的範例政策中找到如何使用 IAM 政策來設定條件的範例。

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

選項

說明
DbUser

資料庫使用者的名稱。如果資料庫中有名稱為 DbUser 的使用者,暫時性使用者登入資料與現有使用者會有相同的許可。如果資料庫中不存在 DbUser,且 AutoCreate 為 true,將建立名為 DbUser 的新使用者。您也可選擇性停用現有使用者的密碼。如需詳細資訊,請參閱 ALTER_USER

AutoCreate

如果資料庫使用者不存在,指定 true 將建立資料庫使用者,並將其命名為 DbUser 指定的名稱。預設值為 false。

DbGroups 資料庫使用者在目前工作階段中加入之一或多個現有資料庫群組名稱的逗號分隔清單。根據預設,新使用者只會加入 PUBLIC。

憑證提供者外掛程式

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

為了支援單一登入身分驗證,Amazon Redshift 提供適用於 Microsoft Azure Active Directory 的 Azure AD 外掛程式。如需如何設定此外掛程式的資訊,請參閱設定 JDBC 或 ODBC 單一登入身分驗證

多重要素驗證

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

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

外掛程式、本機伺服器、Web 瀏覽器和端點如何搭配運作,以使用 SAML 身分驗證來驗證使用者身分的 OAuth 工作流程。
  1. 使用者嘗試登入。

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

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

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

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

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

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

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

外掛程式、本機伺服器、Web 瀏覽器和端點如何搭配運作,以使用 SAML 身分驗證來驗證使用者身分的 Azure 工作流程。
  1. 使用者嘗試登入。

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

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

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

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

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

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

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

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

請參閱以下章節:

外掛程式選項

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

選項

說明
plugin_name

針對 JDBC,為實作登入資料供應商的類別名稱。請指定下列其中一項:

  • 針對 Active Directory Federation Services

    com.amazon.redshift.plugin.AdfsCredentialsProvider
  • 針對 Okta

    com.amazon.redshift.plugin.OktaCredentialsProvider
  • 針對 PingFederate

    com.amazon.redshift.plugin.PingCredentialsProvider
  • 針對 Microsoft Azure Active Directory

    com.amazon.redshift.plugin.AzureCredentialsProvider
  • 針對 SAML MFA

    com.amazon.redshift.plugin.BrowserSamlCredentialsProvider
  • 針對 Microsoft Azure Active Directory 單一登入與 MFA

    com.amazon.redshift.plugin.BrowserAzureCredentialsProvider

針對 ODBC,請指定下列其中一項:

  • 針對 Active Directory Federation Services:adfs

  • 針對 Okta:okta

  • 針對 PingFederate:ping

  • 針對 Microsoft Azure Active Directory:azure

  • 針對 SAML MFA:browser saml

  • 針對 Microsoft Azure Active Directory 單一登入與 MFA: browser azure ad

idp_host 企業身分提供商主機的名稱。該名稱不得包含任何斜線 (「/」)。針對 Okta 身分提供者,idp_host 的值應以 .okta.com 結尾。

idp_port

身分提供者使用的連接埠。預設為 443。Okta 會忽略此連接埠。

preferred_role

Amazon Resource Name (ARN) 角色,來自 SAML 聲明中 AttributeValue 屬性的 Role 元素。若要尋找偏好角色適用的值,請洽詢 IdP 管理員。如需更多詳細資訊,請參閱 步驟 2:設定 IdP 的 SAML 聲明

user

企業使用者名稱,包括網域 (如適用)。例如,在 Active Directory 中,網域名稱為必填,使用格式為網域\使用者名稱
密碼

企業使用者的密碼。我們建議不要使用此選項。請改用 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 使用。