先決條件 - Amazon Redshift

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

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

先決條件

Amazon Redshift 聯合許可設定的 IAM 政策要求

Amazon Redshift 聯合許可可讓您透過直接由 Redshift 倉儲管理的許可,集中管理分析工作負載的資料存取。

若要啟用 Amazon Redshift 聯合許可,除了建立 Redshift 佈建叢集和無伺服器命名空間所需的標準許可之外,還需要特定的 IAM 許可。

對於 Redshift 佈建的倉儲,以啟用 Redshift 聯合許可:

  • redshift:ModifyLakehouseConfiguration

  • redshift:RegisterNamespace

若要讓 Redshift Serverless 倉儲啟用 Redshift 聯合許可:

  • redshift-serverless:UpdateLakehouseConfiguration

  • redshift:RegisterNamespace

若要 AWS Glue Data Catalog 整合以建立具有 Redshift 聯合許可的目錄:

  • glue:CreateCatalog

  • glue:GetCatalog

對於將 Lake Formation 資源註冊為一次性註冊,以從具有聯合許可的遠端倉儲啟用 Redshift 許可聯合:

  • lakeformation:RegisterResource

  • lakeformation:RegisterResourceWithPrivilegedAccess

具有聯合許可的 Redshift 倉儲的 IAM Identity Center 應用程式組態

Amazon Redshift 支援身分中心身分傳播,以在 Redshift 執行個體 AWS Lake Formation 和 AWS Glue 服務之間無縫傳遞使用者身分。此功能需要設定專用 IdC 應用程式。

所需的 IAM 許可

若要建立和管理用於身分中心身分傳播的身分中心應用程式,請確定您的 IAM 許可包含下列許可:

對於 Amazon Redshift IdC 應用程式管理:

  • redshift:CreateRedshiftIdcApplication

  • redshift:ModifyRedshiftIdcApplication

  • redshift:DescribeRedshiftIdcApplications

對於 Lake Formation IdC 應用程式管理:

  • lakeformation:CreateLakeFormationIdentityCenterConfiguration

  • lakeformation:DescribeLakeFormationIdentityCenterConfiguration

  • lakeformation:UpdateLakeFormationIdentityCenterConfiguration

建立對應的 IdC 應用程式和組態

若要為您的分析工作負載建立身分傳播,請建立 Lakehouse 類型的 Amazon Redshift IdC 應用程式。它會管理許可,而不需要明確的使用者指派。連結至此應用程式的 Redshift 倉儲需要 CONNECT 權限,IdC 使用者才能驗證連線。

您只能建立一個 Lakehouse 類型的 Amazon Redshift IdC 應用程式 AWS 帳戶。此應用程式會在與 Lake Formation AWS Glue 和服務整合的所有 Redshift 倉儲中處理身分傳播。應用程式只能與向 註冊的 Redshift 倉儲搭配使用 AWS Glue Data Catalog。

準備 Redshift 擔任並由 IdC 身分傳播使用的 IAM 角色

Redshift Lakehouse IdC 應用程式建立需要您帳戶中具有特定 IAM 許可的 IAM 角色。您在 Redshift IdC 應用程式中使用的 IAM 角色應具有下列信任關係,以允許 Redshift 擔任該角色並設定 IdC 身分傳播的內容。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "Service": [ "redshift-serverless.amazonaws.com", "redshift.amazonaws.com" ] }, "Action": [ "sts:AssumeRole", "sts:SetContext" ] } ] }

以及低於 IdC IAM 角色支援 IdC 身分傳播的許可。

  • AmazonRedshiftFederatedAuthorization – 此政策可讓 Amazon Redshift 透過聯合許可查詢 AWS Glue Data Catalog 資料庫。

  • AWSIDC 設定內容政策

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:SetContext" ], "Resource": "*" } ] }
  • 使用 將 Redshift 設定為 AWS 受管應用程式 AWS IAM Identity Center

  • AWSIDC 身分中心 SSO IAM 政策:

    • sso:DescribeApplication— 在目錄中建立身分提供者 (IdP) 項目時需要。

    • sso:DescribeInstance— 用於手動建立 IdP 聯合角色或使用者。

      { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "sso:DescribeApplication", "sso:DescribeInstance" ], "Resource": [ "arn:aws:sso:::instance/<IAM Identity Center Instance ID>", "arn:aws:sso::<AWS-account-id>:application/<IAM Identity Center Instance ID>/*" ] }

建立新的 Lakehouse 類型 Redshift IdC 應用程式

CLI

透過在create-redshift-idc-application請求中指定 Lakehouse 應用程式類型來建立 Lakehouse IdC 應用程式,無需在 Identity Center 中明確指派使用者,同時啟用 IdC 使用者身分驗證CONNECT的權限要求:

aws redshift create-redshift-idc-application \ --idc-instance-arn <your_idc_instance_arn> \ --idc-display-name '<name_of_idc_application_display_on_idc_console>' \ --iam-role-arn <idc_carrier_role_arn> \ --application-type Lakehouse \ --redshift-idc-application-name '<name_of_idc_display_on_redshift_console>' \ --service-integrations '[ { "LakeFormation":[ { "LakeFormationQuery":{"Authorization": "Enabled"} } ] }, { "Redshift":[ { "Connect" : { "Authorization": "Enabled" } } ] } ]'

此組態可在 Redshift 和 Lake Formation 之間啟用受信任的身分傳播,允許使用者使用其 Identity Center 憑證跨服務存取資料,而不需要額外的許可指派。

Console
  1. 登入 AWS 管理主控台 ,並在 https://console.aws.amazon.com/redshiftv2/:// 開啟 Amazon Redshift 主控台。

  2. 導覽至 IAM Identity Center 連線頁面,然後選取建立應用程式

  3. 設定您的一般 idc 應用程式設定。

  4. 選取使用 AWS IAM Identity Center (建議) 設定 Amazon Redshift 聯合許可來設定應用程式類型。

  5. Lake Formation 和 Redshift 連線身分傳播整合預設為啟用。

  6. 完成剩餘的叢集設定,然後選擇建立應用程式

修改現有的 Redshift IdC 應用程式

如果您的現有 Redshift IdC 應用程式未啟用所需的服務整合,您可以更新它以支援服務與叢集/命名空間之間的身分傳播。

CLI

使用 modify-redshift-idc-application命令來啟用LakeFormation:query授權和Redshift:Connect授權。這些整合對於跨服務和跨叢集 IdC 身分傳播至關重要:

aws redshift modify-redshift-idc-application \ --redshift-idc-application-arn '<arn_of_the_target_redshift_idc_application>' \ --service-integrations '[ { "LakeFormation":[ { "LakeFormationQuery":{"Authorization": "Enabled"} } ] }, { "Redshift":[ { "Connect" : { "Authorization": "Enabled" } } ] } ]'
Console
  1. 登入 AWS 管理主控台 ,並在 https://console.aws.amazon.com/redshiftv2/:// 開啟 Amazon Redshift 主控台。

  2. 導覽至 IAM Identity Center 連線頁面,然後選擇您要編輯的現有 IDC 應用程式。

  3. 選擇身分傳播整合以啟用和設定其他設定,然後選擇儲存變更

建立 Lake Formation 身分中心組態

如果尚未建立專用 IdC 應用程式,則您的 Lake Formation 服務需要該應用程式。您也必須啟用組態Redshift:Connect的授權,才能正常運作。

CLI

使用 create-lake-formation-identity-center-configuration命令來啟用Redshift:Connect授權。這些整合對於 Lake Formation 將 IdC 身分傳播到 Redshift 叢集和 Redshift Serverless 命名空間至關重要

aws lakeformation create-lake-formation-identity-center-configuration \ --instance-arn <your_idc_instance_arn> \ --service-integrations '[{ "Redshift": [{ "RedshiftConnect": { "Authorization": "ENABLED" } }] }]'
Console
  1. 登入 AWS 管理主控台,並在 https://https://console.aws.amazon.com/lakeformation/ 開啟 Lake Formation 主控台。

  2. 在左側導覽窗格中,選取 IAM Identity Center 整合

  3. 在 IAM Identity Center 整合頁面上,您可以為 Amazon Redshift Connect 啟用受信任的身分傳播。Lake Formation 根據有效許可將身分傳播到下游,以便授權的應用程式可以代表使用者存取資料。

更新 Lake Formation 身分中心組態

如果您已設定未啟用必要服務整合的 Lake Formation IdC 應用程式,您可以更新它以支援服務與叢集/命名空間之間的身分傳播。

CLI

使用 update-lake-formation-identity-center-configuration命令來啟用Redshift:Connect授權。這些整合對於跨服務和跨叢集 IdC 身分傳播至關重要:

aws lakeformation update-lake-formation-identity-center-configuration \ --service-integrations '[{ "Redshift": [{ "RedshiftConnect": { "Authorization": "ENABLED" } }] }]'
Console
  1. 登入 AWS 管理主控台,並在 https://https://console.aws.amazon.com/lakeformation/ 開啟 Lake Formation 主控台。

  2. 在左側導覽窗格中,選取 IAM Identity Center 整合

  3. 在 IAM Identity Center 整合頁面上,您可以為 Amazon Redshift Connect 啟用受信任的身分傳播。Lake Formation 根據有效許可將身分傳播到下游,以便授權的應用程式可以代表使用者存取資料。

Lake Formation 先決條件

客戶需要 Lake Formation CREATE_CATALOG許可,才能使用 AWS Glue Data Catalog Amazon Redshift 聯合許可啟用 。

  1. 如果帳戶屬於現有的 Lake Formation 客戶,Lake Formation 管理員必須明確授予 CREATE_CATALOG 許可給每個叢集建立者。使用下列範例 CLI 命令:

    aws lakeformation grant-permissions \ --cli-input-json \ '{ "Principal": { "DataLakePrincipalIdentifier": "<PrincipalArn>" }, "Resource": { "Catalog": {} }, "Permissions": [ "CREATE_CATALOG" ] }'
  2. 如果帳戶從未使用 Lake Formation,請確認 Lake Formation 主控台的管理角色和任務頁面中的目錄建立者設定為 IAMAllowedPrincipals。如果未設定,請遵循建立資料湖管理員來設定 Data Lake 管理員。或者,如果您只搭配 Amazon Redshift 聯合許可使用 ,則可以建立 AWS Glue Data Catalog 具有最低必要政策的 Data Lake 管理員。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "lakeformation:PutDataLakeSettings", "lakeformation:GrantPermissions", "lakeformation:GetDataLakeSettings", "lakeformation:BatchGrantPermissions", "lakeformation:ListPermissions" ], "Resource": [ "*" ] } ] }
  3. 讓 DataLake Admin 授予 IAMAllowedPrincipals 建立目錄的許可。您可以透過管理角色和任務頁面中目錄建立者的授予按鈕授予存取權。

Connect 權限

作為 Amazon Redshift 聯合許可的一部分,Amazon Redshift 引入了 CONNECT 權限,以管理聯合身分使用者對 AWS IAM Identity Center Amazon Redshift 工作群組或叢集的存取。此功能可在工作群組或叢集上啟用 Amazon Redshift 聯合許可時使用。

此權限可讓管理員透過啟用 Amazon Redshift 聯合許可的每個 Amazon Redshift 工作群組 (Amazon Redshift) 或叢集 (Amazon Redshift) 的精細許可來控制使用者存取。Amazon Redshift 管理員可以指定哪些 AWS IAM Identity Center 聯合身分使用者或群組可以直接連線至 Amazon Redshift 工作群組或叢集 (Amazon Redshift),為每個工作群組或叢集 AWS IAM Identity Center 的使用者存取權提供精細的控制。

語法

GRANT CONNECT [ON WORKGROUP] TO [USER] <prefix>:<username> | ROLE <prefix>:<rolename> | PUBLIC;
CONNECT 【在 WORKGROUP 上】

准許連線至工作群組。CONNECT 許可僅適用於身分 AWS IAM Identity Center (使用者和角色)。

TO <prefix>:<username>

指出接收許可的 AWS IAM Identity Center 聯合身分使用者。

TO ROLE <prefix>:<rolename>

指出接收許可的 AWS IAM Identity Center 聯合群組。

PUBLIC

將 CONNECT AWS IAM Identity Center 許可授予所有聯合身分使用者,包括稍後建立的使用者。