Amazon Redshift 的原生身分提供者 (IdP) 聯合 - Amazon Redshift

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

Amazon Redshift 的原生身分提供者 (IdP) 聯合

使用原生身分提供者聯合可以更輕鬆地管理 Amazon Redshift 的身分和許可,因為它可以運用您現有的身分提供者來簡化身分驗證和管理許可。它會透過將身分中繼資料從您的身分提供者共用至 Redshift 來達成此目的。對於此功能的第一個迭代,支援的身分提供者是 Microsoft Azure Active Directory (Azure AD)

若要設定 Amazon Redshift 以便能夠從第三方身分提供者進行身分驗證,請向 Amazon Redshift 註冊身分提供者。這樣做可讓 Redshift 驗證身分提供者所定義的使用者和角色。因此,您就不必在第三方身分提供者和 Amazon Redshift 中執行精細的身分管理,因為身分資訊會共用。

如需有關使用從身分提供者 (IdP) 群組傳輸而來之工作階段角色的資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 PG_GET_SESSION_ROLES

在 Amazon Redshift 上設定身分提供者

本節說明用來設定身分提供者和 Amazon Redshift 以便為原生身分提供者聯合建立通訊的步驟。您需要身分提供者的作用中帳戶。在設定 Amazon Redshift 之前,您必須向身分提供者將 Redshift 註冊為應用程式,並授予管理員同意。

在 Amazon Redshift 中完成以下步驟:

  1. 執行 SQL 陳述式以註冊識別提供者,包括 Azure 應用程式中繼資料的描述。若要在 Amazon Redshift 中建立身分提供者,請在取代 issuerclient_idclient_secretaudience 參數值後執行下列命令。這些參數是 Microsoft Azure AD 的特有參數。請將身分提供者名稱取代為您選擇的名稱,並以唯一名稱取代命名空間,以包含您身分提供者目錄中的使用者和角色。

    CREATE IDENTITY PROVIDER oauth_standard TYPE azure NAMESPACE 'aad' PARAMETERS '{ "issuer":"https://sts.windows.net/2sdfdsf-d475-420d-b5ac-667adad7c702/", "client_id":"<client_id>", "client_secret":"BUAH~ewrqewrqwerUUY^%tHe1oNZShoiU7", "audience":["https://analysis.windows.net/powerbi/connector/AmazonRedshift"] }'

    azure 類型表示提供者具體來說有利於與 Microsoft Azure AD 進行通訊。這是目前唯一支援的第三方身分提供者。

    • issuer — 收到字符時要信任的發行者 ID。發行者會附加 tenant_id 的唯一識別碼。

    • client_id — 向身分提供者註冊之應用程式的唯一公共識別碼。這可以稱為應用程式 ID。

    • client_secret — 只有身分提供者和已註冊的應用程式才知道的機密識別碼或密碼。

    • audience — 指派給 Azure 中應用程式的應用程式 ID。

    您可以在建立身分提供者時設定參數以指定憑證、私有金鑰和私有金鑰密碼,而不是使用共用用戶端機密。

    CREATE IDENTITY PROVIDER example_idp TYPE azure NAMESPACE 'example_aad' PARAMETERS '{"issuer":"https://sts.windows.net/2sdfdsf-d475-420d-b5ac-667adad7c702/", "client_id":"<client_id>", "audience":["https://analysis.windows.net/powerbi/connector/AmazonRedshift"], "client_x5t":"<certificate thumbprint>", "client_pk_base64":"<private key in base64 encoding>", "client_pk_password":"test_password"}';

    私有金鑰密碼 client_pk_password 是選擇性的。

  2. 選擇性:在 Amazon Redshift 中執行 SQL 命令以預先建立使用者和角色。這有助於事先授予許可。在 Amazon Redshift 中的角色名稱如下所示:: < GroupName 在 Azure AD <Namespace>>. 例如,當您在 Microsoft Azure AD 中建立名為 rsgroup 的群組和名為 aad 的命名空間時,角色名稱會是 aad:rsgroup。Amazon Redshift 中的使用者和角色名稱,這些名稱是根據身分提供者命名空間中的這些使用者和群組成員資格定義的。

    角色和使用者的映射包括驗證其 external_id 值,以確保它是最新的。外部 ID 會映射至身分提供者中群組或使用者的識別碼。例如,角色的外部 ID 會映射至對應的 Azure AD 群組 ID。同樣地,每個使用者的外部 ID 會映射至身分提供者中的 ID。

    create role "aad:rsgroup";
  3. 根據您的要求向角色授予相關許可。例如:

    GRANT SELECT on all tables in schema public to role "aad:rsgroup";
  4. 您也可以向特定使用者授予許可。

    GRANT SELECT on table foo to aad:alice@example.com

    請注意,聯合的外部使用者的角色成員資格只能在該使用者的工作階段中使用。這會對建立資料庫物件造成影響。例如,當聯合的外部使用者建立任何檢視或預存程序時,同一使用者便無法將這些物件的許可委派給其他使用者和角色。

命名空間的解釋

命名空間會將使用者或角色映射至特定身分提供者。例如, AWS IAM 中建立的使用者前置詞為iam:。此前置詞可防止使用者名稱發生衝突,並可實現對於多個身分存放區的支援。如果使用 aad 命名空間註冊之身分來源的使用者 alice@example.com 登入,則系統會在 Redshift 中建立使用者 aad:alice@example.com (如果該使用者尚未存在)。請注意,使用者和角色命名空間的功能與 Amazon Redshift 叢集命名空間 (這是與叢集相關聯的唯一識別碼) 的功能不同。

使用原生身分提供者 (IdP) 聯合時的登入運作方式

若要完成身分提供者和 Amazon Redshift 之間的初步設定,請執行幾個步驟:首先,向身分提供者將 Amazon Redshift 註冊為第三方應用程式,以請求必要的 API 許可。然後,在身分提供者中建立使用者和群組。最後,使用會設定身分提供者專屬身分驗證參數的 SQL 陳述式向 Amazon Redshift 註冊身分提供者。在向 Redshift 註冊身分提供者時,指派命名空間以確保使用者和角色會正確分組。

透過向 Amazon Redshift 註冊的身分提供者,可以在 Redshift 與身分提供者之間設定通訊。然後,用戶端可以傳遞字符並以身分提供者實體的身分向 Redshift 進行驗證。Amazon Redshift 會使用 IdP 群組成員資格資訊以映射至 Redshift 角色。如果使用者先前不存在於 Redshift 中,系統會建立該使用者。系統會建立映射至身分提供者群組的角色 (如果它們不存在)。Amazon Redshift 管理員在角色上授予許可,使用者可以執行查詢和執行其他資料庫任務。

下列步驟概述使用者登入時,原生身分提供者聯合的運作方式:

  1. 當使用者從用戶端使用原生 IdP 選項登入時,身分提供者字符會從用戶端傳送至驅動程式。

  2. 使用者會進行身分驗證。如果該使用者還未存在於 Amazon Redshift 中,系統便會建立新使用者。Redshift 會將使用者的身分提供者群組映射至 Redshift 角色。

  3. 系統會根據使用者的 Redshift 角色指派許可。這些許可會由管理員授予給使用者和角色。

  4. 使用者可以查詢 Redshift。

使用桌面用戶端工具連線到 Amazon Redshift

如需如何使用原生身分提供者聯合透過 Power BI 連線到 Amazon Redshift 的指示,請參閱部落格文章整合 Amazon Redshift 原生 IdP 聯合與 Microsoft Azure Active Directory (AD) 和 Power BI。它描述了使用 Azure AD 的 Amazon Redshift 原生 IdP 安裝程序的 step-by-step 實現。其內容會詳細說明用來為 Power BI 桌面版或 Power BI 服務設定用戶端連線的步驟。這些步驟包括註冊應用程式、設定許可和設定憑證。

若要了解如何使用 Power BI 桌面版和 JDBC 用戶端 SQL Workbench/J 來整合 Amazon Redshift 原生 IdP 聯合,請觀看以下影片:

如需如何使用原生身分提供者聯合透過 SQL 用戶端 (具體來說是 DBeaver 或 SQL Workbench/J) 連線至 Amazon Redshift 的指示,請參閱部落格文章使用 SQL 用戶端將 Amazon Redshift 原生 IdP 聯合與 Microsoft Azure AD 進行整合