将身份提供商IdP与 Amazon Redshift Query Editor V2 和 SQL

将身份提供商 (IdP) 集成到 Amazon Redshift 查询编辑器 V2 和 SQL 客户端中,使用 AWS IAM 身份中心实现无缝单点登录

由 Maneesh Sharma Harshida Patel Karthik Ramanathan Praveen Kumar Ramakrishnan 和 Debu Panda 于 2023 年 11 月 30 日发表

关键要点

AWS IAM 身份中心 可单一管理对您所有 AWS 账户和应用的 SSO 访问。Amazon Redshift 现已与 AWS IAM 身份中心集成,支持使用第三方身份提供商如 Microsoft Entra ID、Okta 等。此集成简化了使用查询编辑器 V2 和 SQL 客户端对数据仓库的访问。您可以使用基于角色的访问控制 (RBAC) 来增强安全性。集成提供用户和组的自动管理与同步功能。

AWS IAM 身份中心允许您从一个位置管理对所有 AWS 账户和应用的单点登录SSO访问。我们高兴地宣布 Amazon Redshift 现已与 AWS IAM 身份中心集成,并支持 可信身份传播,这使您能够使用 第三方身份提供商 (IdP),如 Microsoft Entra ID (Azure AD)、Okta、Ping 和 OneLogin。该集成简化了使用 查询编辑器 V2QEv2或 Amazon QuickSight 访问数据仓库的身份验证和授权流程。

此集成使 Amazon Redshift 成为 IAM 身份中心管理的应用程序,您可以对数据仓库实施基于数据库角色的访问控制,以提高安全性。IAM 身份中心通过使用 SCIM v20 协议支持从您的首选身份提供商自动配置用户和组,确保在更新 AWS IAM 身份中心中信息的无缝同步。

在本文中,我们将为您提供有关如何将 IAM 身份中心与 Amazon Redshift 集成以管理您的身份提供商组的全面指南,以及如何利用该集成使用 Amazon Redshift 查询编辑器 V2 (QEv2) 和像 DbVisualizer 和 DBeaver 这样的 SQL 客户端查询 Redshift 表。

解决方案概述

通过将 IAM 身份中心与 Amazon Redshift 集成,您的组织可以获得以下好处:

好处描述用户简化访问用户可以连接到 Amazon Redshift,而无需管理员在设置 AWS IAM 角色和复杂的权限。精细权限控制IAM 身份中心集成允许将 IAM 身份中心组映射到 Amazon Redshift 数据库角色,以便管理员为不同的角色分配不同的权限。统一用户管理提供一个集中位置来创建用户和组,或连接到您在支持标准的身份提供商中管理的现有用户和组。集成和共享一个 IAM 身份中心实例可以与多个 Amazon Redshift 数据仓库共享,使其快速添加集群。

Amazon Query Editor V2 工作流与 IAM 身份中心和外部身份提供商:

最终用户使用 AWS 访问门户 URL 启动流程,此 URL 在 IAM 身份中心仪表板控制台的管理账户上可用。浏览器弹出窗口将引导您前往所选 IdP 登录页面,输入 IdP 凭据信息。验证成功后,您将以联盟用户身份登录 AWS 控制台,选择您的 AWS 账户并选择 Amazon Redshift 查询编辑器 V2 应用程序。联接到查询编辑器 V2 后,选择 IAM 身份中心身份验证方法。QEV2 触发浏览器流程,您需要使用 AWS IAM 身份中心凭据重新验证。由于先前已经输入的 IdP 凭据已在浏览器中缓存,因此此步骤中,IAM 身份中心的联接流程将被启动,完成该流程后,Session token 和 Access token 将以 cookies 的形式可用于 QEv2 控制台。Amazon Redshift 根据检索的 session token 获取您的授权详细信息,并提取用户的组成员信息。通过身份验证后,您将重定向回 QEV2,并以 IAM 身份中心认证的用户身份登录。

SQL 客户端工作流与 IAM 身份中心和外部身份提供商:

将身份提供商IdP与 Amazon Redshift Query Editor V2 和 SQL用户配置 SQL 客户端以使用 IAM 身份中心的发行者 URL 或开始 URL。Redshift 驱动程序根据 PKCE 向 IAM 身份中心发起基于 OAuth 20 的授权授权。在浏览器中,用户在 IdP 登录页面输入凭据如果尚未登录 IdP。Redshift 驱动程序从 IAM 身份中心获取授权代码。驱动程序调用 IAM 身份中心并传入授权代码。IAM 身份中心返回访问令牌给驱动程序。驱动程序将访问令牌转发到 Redshift 的 SQL 请求。Redshift 调用 IAM 身份中心以从访问令牌中获取用户 ID。Redshift 使用用户 ID 获取 IAM 身份中心中的组成员信息,并利用该信息授权访问请求的数据。SQL 客户端能够连接到 Amazon Redshift,并根据 IAM 身份中心返回的用户和组成员信息访问数据。

解决方案步骤

创建 Amazon Redshift 访问的 IAM 策略创建 IAM 角色设置 IAM 身份中心与 Amazon Redshift 的集成从 IAM 身份中心向 Amazon Redshift 应用程序分配用户或组

与 IAM 身份中心集成的 Amazon Redshift

51 集成新的 Amazon Redshift 提供的或 Amazon Redshift 无服务器端点52 将 IAM 身份中心应用程序与现有提供的集群或无服务器端点关联

配置 Amazon Redshift 基于角色的访问

创建权限集创建账户分配使用 Redshift 查询编辑器 V2 测试 AWS IAM 身份中心和 Amazon Redshift 的集成配置 SQL 客户端故障排除

前提条件

您需要满足以下前提条件:

拥有一个 AWS 账户。如果您还没有,可以注册。启用 IAM 身份中心。如需详细信息,请参见启用 AWS IAM 身份中心。将 IAM 身份中心与您首选的 IdP 连接并同步用户和组。按照此链接上的指导进行 IdP 设置。对于 SQL 客户端集成,请从Amazon Redshift JDBC SDK 驱动程序依赖库 21030 开始下载,并解压 Amazon Redshift JDBC JAR 压缩文件。所有先前的 Amazon Redshift 驱动版本不支持此功能。选择一个 SQL 客户端 DbVisualizer (版本 2423 及以上) 和 DBeaver。在本博文中,我们使用 DbVisualizer 和 DBeaver 进行演示,您也可以使用任何您喜欢的 SQL 客户端与 Redshift JDBC/ODBC 驱动程序连接。

指南

步骤 1:创建 Amazon Redshift 访问的 IAM 策略

要将 Amazon Redshift 集成到 IAM 身份中心中,您必须在 Amazon Redshift 集群或无服务器实例存在的账户中创建一个 IAM 策略。在本文中,我们会在存在 Redshift 集群/无服务器实例的成员账户中创建 IAM 策略。所需的特定策略权限如下:

redshiftDescribeQev2IdcApplications 检测 Redshift 查询编辑器 V2 中 IAM 身份中心身份验证能力。redshiftserverlessListNamespaces 授予列出 Amazon Redshift Serverless 中的命名空间的权限。redshiftserverlessListWorkgroups 授予列出 Amazon Redshift Serverless 中的工作组的权限。redshiftserverlessGetWorkgroup 授予获取特定工作组信息的权限。ssoDescribeApplication 在目录中创建身份提供商 (IdP) 条目所需的权限。ssoDescribeInstance 手动创建 IdP 联合角色或用户使用的权限。

按照以下步骤创建您的 IAM 策略:

在 IAM 控制台中,选择 Policies。选择 Create policy。在创建策略页面上,选择 JSON 选项卡。

对于策略,逐个输入以下 JSON 格式:

json{ Version 20121017 Statement [ { Sid VisualEditor0 Effect Allow Action [ redshiftDescribeQev2IdcApplications redshiftserverlessListNamespaces redshiftserverlessListWorkgroups redshiftserverlessGetWorkgroup ] Resource } { Sid VisualEditor1 Effect Allow Action [ ssoDescribeApplication ssoDescribeInstance ] Resource [ arnawsssoinstance/ltIAM Identity Center Instance IDgt arnawsssoltAWS Account IDgtapplication/ltIAM Identity Center Instance IDgt/ ] } ]}

每天免费2小时加速器下载

将 ltIAM Identity Center Instance IDgt 替换为您的身份中心实例 ID,将 ltAWS Account IDgt 替换为设置 IAM 身份中心的账户 ID。在本文中,对于 ltIAM Identity Center Instance IDgt 我们使用的是属于管理账户的组织实例 ID,而对于 ltAWS Account IDgt,则使用管理账户 ID。

在 Review and create 页面上,输入一个 Policy Name 和策略的描述可选,检查策略中定义的权限并确保所赋予的权限您满意。可选通过添加键值对的标签向策略附加元数据。有关在 IAM 中使用标签的更多信息,请参见标记 IAM 资源。选择 Create policy 来保存新的策略。

步骤 2:创建 IAM 角色

要将 Amazon Redshift 与 IAM 身份中心集成,您必须在集群所在的账户中创建 IAM 角色。在本文中,我们会在存在 Redshift 集群/无服务器实例的成员账户中创建 IAM 角色。Redshift 管理员使用此 IAM 角色来配置 Redshift 以与 IAM 身份中心一起使用。创建 IAM 角色的步骤如下:

在 IAM 控制台 中,选择 Roles。选择 Create role。选择 AWS service 作为受信实体,然后选择 Redshift 作为用例。在 Use case for other AWS services 下,选择 Redshift Customizable,然后选择 Next。在 Add permissions 策略页面上,选择之前创建的策略,例如 awsidcpolicy。然后选择 Next。输入角色的名称,例如 IAMIDCRedshiftRole。检查信息后选择 Create role。导航到您刚刚创建的角色,选择 Trust Relationships。选择 Edit trust policy,在 Add actions for STS 下输入 SetContext,选择 SetContext 并选择 Update policy。

下面是 Trust Relationships 的代码示例:

json{ Version 20121017 Statement [ { Effect Allow Principal { Service redshiftamazonawscom } Action [ stsAssumeRole stsSetContext ] } ]}

步骤 3:设置 IAM 身份中心与 Amazon Redshift 的集成

Amazon Redshift 集群管理员或 Amazon Redshift 无服务器管理员必须执行步骤,将 Redshift 配置为在存在 Redshift 端点/无服务器实例的账户中启用 IAM 身份中心的应用程序。在本文中,我们将在存在 Redshift 集群/无服务器实例的成员账户中创建 Amazon Redshift 应用程序。这使 Amazon Redshift 能够自动发现并连接到 IAM 身份中心,以接收登录和用户目录服务。

随后,当 Amazon Redshift 管理员创建集群或工作组时,他们可以启用新的数据仓库使用 IAM 身份中心及其身份管理功能。启用 Amazon Redshift 作为 IAM 身份中心管理的应用程序的目的是,您可以从 IAM 身份中心或集成的第三方身份提供商中控制用户和组的权限。

例如,当您的数据库用户登录到 Amazon Redshift 数据库时,系统会检查他们在 IAM 身份中心中的组,并将这些组映射到 Amazon Redshift 中的角色。以这样的方式,一个组可以映射到一个 Amazon Redshift 数据库角色,允许读取一组表。

接下来的步骤显示如何将 Amazon Redshift 设为支持 IAM 身份中心的 AWS 管理应用程序:

在 Amazon Redshift 控制台菜单中选择 IAM Identity Center connection。

选择 Create application。

在 IAM Identity Center connection 中选择 Next。

在 IAM Identity Center integration setup 部分输入:IAM Identity Center display name 输入 Amazon Redshift IAM 身份中心管理应用程序的唯一名称,该名称将在 IAM 身份中心控制台和 API 中显示。Managed application name 可以使用分配的值或输入您自己的管理 Amazon Redshift 应用程序名称。它是与 IAM 身份中心集成的管理应用程序的唯一标识符。在 Connection with thirdparty identity providers 部分:Identity Provider Namespace 指定您组织的唯一命名空间,通常是您组织名称的缩写。此内容将作为前缀添加到您在 Amazon Redshift 数据库中管理的 IAM 身份中心用户和角色名称前。在 IAM role for IAM Identity Center access 部分,选择您在步骤 2 中创建的 IAM 角色,例如 IAMIDCRedshiftRole。选择 Enable the query editor v2 application 以允许用户通过其基于 IAM 身份中心、命名空间前缀的身份访问数据库及数据库中的适当对象。如果您希望利用 AWS Lake Formation,请在 Trusted identity propagation 下选择 Enable AWS Lake Formation access grants。这将使用 AWS Lake Formation 提供微粒度访问控制。Lake Formation 用例在博文中描述:简化 Amazon Redshift 和 AWS Lake Formation 中的访问管理,适用于外部身份提供商的用户。选择 Next。在 Configure client connections that use thirdparty IdPs 部分,如果您希望将 Amazon Redshift 与第三方应用程序连接,则选择 Yes,否者选择 No。在本博文中,我们使用的是 Amazon Redshift 查询编辑器 V2,因此选择 No。

选择 Next。

在 Review and create application 部分,检查您输入的所有详细信息,然后选择 Create application。

完成这些步骤后,IAM 身份中心的属性将在 Redshift 控制台中显示。完成这些任务使 Redshift 成为一个启用了 IAM 身份中心

如何开始使用新的 AWS IoT Core 设备定位服务 官方博客

入门新 AWS IoT Core 设备位置服务关键要点新的 AWS IoT Core 设备位置功能允许 IoT 设备在不依赖 GPS 硬件的情况下检索和报告其当前位置。该功能结合云辅助全球导航卫星系统...

新课堂课程:面向高管的生成式 AI 培训与认证博客

新推出的课程:高管的生成式人工智能重点提炼随着生成式人工智能的快速发展,高管们需掌握相关基础知识。新课程“高管的生成式人工智能”正式上线,旨在帮助高管有效领导生成式AI项目。课程为期半天,涵盖生成式A...