View a markdown version of this page

Azure - Amazon Redshift

Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊,請參閱部落格文章

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

Azure

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

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

步驟 1:設定 Azure 和 AWS 您的帳戶彼此信任

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

設定 Azure AD 和 AWS 您的帳戶彼此信任
  1. 建立或使用現有的 Amazon Redshift 叢集,以供 Azure AD 使用者連線。若要設定連線,則需要此叢集的特定屬性,例如叢集識別碼。如需詳細資訊,請參閱建立叢集

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

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

  4. 選擇 +New application (新增應用程式)。新增應用程式頁面隨即顯示。

  5. 在搜尋欄位中搜尋 AWS

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

  7. Manage (管理) 下方,選擇 Single sign-on (單一登入)

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

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

  10. Basic SAML Configuration (基本 SAML 組態) 中,選擇編輯圖示並選擇 Save (儲存)

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

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

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

  13. 選擇 + Add new claim (新增宣告) 來新增資料庫使用者的宣告。

    對於名稱,輸入 DbUser

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

    針對 Source (來源),選擇 Attribute (屬性)

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

  14. 選擇 + Add new claim (新增宣告) 來新增 AutoCreate 的宣告。

    對於名稱,輸入 AutoCreate

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

    針對 Source (來源),選擇 Attribute (屬性)

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

    在此,123456789012 是您的 AWS 帳戶,AzureSSO 是您建立的 IAM 角色,而 AzureADProvider 是 IAM 提供者。

    宣告名稱 Value

    唯一使用者識別碼 (名稱 ID)

    user.userprincipalname

    https://aws.amazon.com/SAML/Attributes/SessionDuration

    "900"

    https://aws.amazon.com/SAML/Attributes/Role

    arn:aws:iam::123456789012:role/AzureSSO,arn:aws:iam::123456789012:saml-provider/AzureADProvider

    https://aws.amazon.com/SAML/Attributes/RoleSessionName

    user.userprincipalname

    https://redshift.amazon.com/SAML/Attributes/AutoCreate

    “true”

    https://redshift.amazon.com/SAML/Attributes/DbGroups

    user.assignedroles

    https://redshift.amazon.com/SAML/Attributes/DbUser

    user.userprincipalname

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

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

  17. 在 IAM 主控台上建立 IAM SAML 身分提供者。您所提供的中繼資料文件,是您在設定 Azure 企業應用程式時儲存的聯合中繼資料 XML 檔案。如需詳細步驟,請參閱《IAM 使用者指南》中的建立和管理 IAM 身分提供者 (主控台)

  18. 在 IAM 主控台上建立 SAML 2.0 聯合的 IAM 角色。如需詳細步驟,請參閱《IAM 使用者指南》中的為 SAML 建立角色

  19. 建立 IAM 政策,您可將其附加至您在 IAM 主控台上為 SAML 2.0 聯合建立的 IAM 角色。如需詳細步驟,請參閱《IAM 使用者指南》中的建立 IAM 政策 (主控台)

    為您的環境修改下列政策 (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

      您所設定的 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 進行身分驗證

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

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

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

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

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

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

    2. 針對 Connection Profile (連線設定檔),輸入 Azure

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

    4. 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

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

      針對 Azure AD 單一登入組態新增其他資訊,如下所示:

      • 針對 plugin_name,輸入 com.amazon.redshift.plugin.AzureCredentialsProvider。此值會指定驅動程式使用 Azure AD 單一登入做為身分驗證方法。

      • 針對 idp_tenant,輸入 your-idp-tenant。僅用於 Microsoft Azure AD。這是您在 Azure AD 上設定的公司租用戶名稱。此值可以是租用戶名稱或租用戶唯一 ID (含連字號)。

      • 針對 client_secret,輸入 your-azure-redshift-application-client-secret。僅用於 Microsoft Azure AD。這是您在設定 Azure 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端秘密。這只適用於 com.amazon.redshift.plugin.AzureCredentialsProvider 外掛程式。

      • 針對 client_id,輸入 your-azure-redshift-application-client-id。僅用於 Microsoft Azure AD。這是您在設定 Azure 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端 ID (含連字號)。

      針對具有 MFA 的 Azure AD 單一登入組態,將其他資訊新增至連線屬性,如下所示:

      • 針對 plugin_name,輸入 com.amazon.redshift.plugin.BrowserAzureCredentialsProvider。此值會指定驅動程式使用具有 MFA 的 Azure AD 單一登入做為身分驗證方法。

      • 針對 idp_tenant,輸入 your-idp-tenant。僅用於 Microsoft Azure AD。這是您在 Azure AD 上設定的公司租用戶名稱。此值可以是租用戶名稱或租用戶唯一 ID (含連字號)。

      • 針對 client_id,輸入 your-azure-redshift-application-client-id。此選項僅用於 Microsoft Azure AD。這是您在設定具有 MFA 的 Azure AD 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端 ID (含連字號)。

      • 針對 listen_port,輸入 your-listen-port。這是本機伺服器接聽的連接埠。預設值為 7890。

      • 針對 idp_response_timeout,輸入 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_name,請輸入 AzureAD。這會指定驅動程式使用 Azure 單一登入作為身分驗證方法。

    • 如需具有 MFA 的 Azure AD 單一登入組態的 plugin_name,請輸入 BrowserAzureAD。這會指定驅動程式使用具有 MFA 的 Azure 單一登入做為身分驗證方法。

    • 針對 uid,輸入 your-azure-username。這是您用於單一登入之 Microsoft Azure 帳戶的使用者名稱,該帳戶具有您嘗試驗證之叢集的許可。僅在 plugin_nameAzureAD 的情況下使用此項目。

    • 針對 pwd,輸入 your-azure-password。僅在 plugin_nameAzureAD 的情況下使用此項目。

    • 針對 idp_tenant,輸入 your-idp-tenant。這是您在 IdP (Azure) 上設定的公司租用戶名稱。此值可以是租用戶名稱或租用戶唯一 ID (含連字號)。

    • 針對 client_secret,輸入 your-azure-redshift-application-client-secret。這是您在設定 Azure 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端秘密。

    • 針對 client_id,輸入 your-azure-redshift-application-client-id。這是您在設定 Azure 單一登入組態時所建立之 Amazon Redshift 應用程式的用戶端 ID (含連字號)。

    • 針對 listen_port,輸入 your-listen-port。這是本機伺服器接聽的連接埠。預設值為 7890。這適用於瀏覽器 Azure AD 外掛程式。

    • 針對 idp_response_timeout,輸入 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

疑難排解

若要對瀏覽器 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。