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 您的帳戶彼此信任
-
建立或使用現有的 Amazon Redshift 叢集,以供 Azure AD 使用者連線。若要設定連線,則需要此叢集的特定屬性,例如叢集識別碼。如需詳細資訊,請參閱建立叢集。
-
在 Microsoft Azure 入口網站 AWS 上設定用於 的 Azure Active Directory、群組和使用者。
-
在 Microsoft Azure 入口網站上將 Amazon Redshift 新增為企業應用程式,以用於 AWS 主控台的單一登入和 Amazon Redshift 的聯合登入。選擇 Enterprise application (企業應用程式)。
-
選擇 +New application (新增應用程式)。新增應用程式頁面隨即顯示。
-
在搜尋欄位中搜尋
AWS。 -
選擇 Amazon Web Services (AWS),然後選擇新增。此操作會建立 AWS 應用程式。
-
在 Manage (管理) 下方,選擇 Single sign-on (單一登入)。
-
選擇 SAML。Amazon Web Services (AWS) | 以 SAML 為基礎的登入頁面隨即顯示。
-
選擇 Yes (是),繼續進行「使用 SAML 頁面設定單一登入」。此頁面會顯示預先設定的單一登入相關屬性清單。
-
在 Basic SAML Configuration (基本 SAML 組態) 中,選擇編輯圖示並選擇 Save (儲存)。
-
設定超過一個應用程式時,請提供識別碼值。例如,輸入
。請注意,從第二個應用程式開始,請使用此格式搭配 # 符號來指定唯一的 SPN 值。https://signin.aws.amazon.com/saml#2 -
在 User Attributes and Claims (使用者屬性和宣告) 區段中選擇編輯圖示。
根據預設,唯一使用者標識符 (UID)、角色、RoleSessionName 和 SessionDuration 宣告都是預先設定的。
-
選擇 + Add new claim (新增宣告) 來新增資料庫使用者的宣告。
對於名稱,輸入
DbUser。針對 Namespace (命名空間),輸入
https://redshift.amazon.com/SAML/Attributes。針對 Source (來源),選擇 Attribute (屬性)。
針對 Source attribute (來源屬性),選擇 user.userprincipalname。然後選擇 Save (儲存)。
-
選擇 + Add new claim (新增宣告) 來新增 AutoCreate 的宣告。
對於名稱,輸入
AutoCreate。針對 Namespace (命名空間),輸入
https://redshift.amazon.com/SAML/Attributes。針對 Source (來源),選擇 Attribute (屬性)。
針對 Source attribute (來源屬性),選擇 “true”。然後選擇 Save (儲存)。
在此,
是您的 AWS 帳戶,123456789012是您建立的 IAM 角色,而AzureSSO是 IAM 提供者。AzureADProvider宣告名稱 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/AzureADProviderhttps://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
-
在 App Registration (應用程式註冊) >
> Authentication (身分驗證) 下方,新增 Mobile And Desktop Application (行動和桌面應用程式)。將 URL 指定為 http://localhost/redshift。your-application-name -
在 SAML Signing Certificate (SAML 簽署憑證) 區段中,選擇 Download (下載) 以下載並儲存聯合中繼資料 XML 檔案,以便在建立 IAM SAML 身分提供者時使用。此檔案用於建立單一登入聯合身分。
-
在 IAM 主控台上建立 IAM SAML 身分提供者。您所提供的中繼資料文件,是您在設定 Azure 企業應用程式時儲存的聯合中繼資料 XML 檔案。如需詳細步驟,請參閱《IAM 使用者指南》中的建立和管理 IAM 身分提供者 (主控台)。
-
在 IAM 主控台上建立 SAML 2.0 聯合的 IAM 角色。如需詳細步驟,請參閱《IAM 使用者指南》中的為 SAML 建立角色。
建立 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": "*" } ] }此政策會授與許可,如下所示:
第一個區段會授與
GetClusterCredentialsAPI 操作的許可,以取得所指定叢集的暫時性登入資料。在此範例中,資源是,其具有資料庫cluster-identifier、位於帳戶dev、並位於 AWS 區域123456789012。us-west-1${redshift:DbUser}子句只允許符合 Azure AD 中指定DbUser值的使用者連線。條件子句會強制只有特定使用者會取得臨時登入資料。這些是依據貴公司電子郵件網域中的電子郵件地址所識別的 IAM 帳戶中,具備角色唯一 ID
所指定角色的使用者。如需唯一 ID 的相關資訊,請參閱《IAM 使用者指南》中的唯一 ID。AROAJ2UCCR6DPCEXAMPLE您所設定的 IdP (在此案例中為 Azure AD) 會決定條件子句的撰寫方式。如果您的員工電子郵件是
johndoe@example.com,請先將${redshift:DbUser}設定為符合員工使用者名稱johndoe的超級欄位。然後將 AWS SAMLRoleSessionName欄位設定為符合員工電子郵件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 進行身分驗證
疑難排解
若要對瀏覽器 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。