设置 AWS IAM Identity Center 与 Amazon Redshift 的集成
您的 Amazon Redshift 集群管理员或 Amazon Redshift Serverless 管理员必须执行多个步骤,以将 Redshift 配置为启用了 AWS IAM Identity Center 的应用程序。这样,Redshift 便可以自动发现并连接到 AWS IAM Identity Center 来获取登录和用户目录服务。在此之后,当 Redshift 管理员创建集群或工作组时,他们可以允许新的数据仓库使用 AWS IAM Identity Center 来管理数据库访问。
启用 Redshift 作为 AWS IAM Identity Center 托管应用程序的意义在于,您可以从 AWS IAM Identity Center 中或与之集成的第三方身份提供者控制用户和组的权限。当数据库用户(例如分析师或数据科学家)登录 Redshift 数据库时,服务会在 AWS IAM Identity Center 中检查他们所属的组,这些组与 Redshift 中的角色名称相匹配。通过这种方式,举例而言,定义了 Redshift 数据库角色名称的组可以访问一组表以便进行销售分析。以下部分将介绍如何完成此设置。
先决条件
将 AWS IAM Identity Center 与 Amazon Redshift 集成的先决条件如下所示:
-
账户配置 – 如果您计划使用跨账户应用场景,或者如果您在具有相同 AWS IAM Identity Center 实例的不同账户中使用 Redshift 集群,则必须在 AWS Organizations 管理账户中配置 AWS IAM Identity Center。这包括配置您的身份源。有关更多信息,请参阅《AWS IAM Identity Center 用户指南》中的入门、员工身份和支持的身份提供者。您必须确保已在 AWS IAM Identity Center 中创建用户或组,或者已从您的身份源同步用户和组,然后才能在 Redshift 中将他们指定到 Redshift 中的数据。
注意
您可以选择使用 AWS IAM Identity Center 的账户实例,前提是 Redshift 和 AWS IAM Identity Center 位于同一个账户中。在创建和配置 Redshift 集群或工作组时,您可以使用小组件创建此实例。
-
配置可信令牌发布者 – 在某些情况下,您可能需要使用可信令牌发布者,这是可以发布和验证信任令牌的实体。在执行此操作之前,需要先执行预备步骤,然后配置 AWS IAM Identity Center 集成的 Redshift 管理员才能选择可信令牌发布者,并添加必要的属性以完成配置。这些步骤可能包括在 AWS IAM Identity Center 控制台中,将外部身份提供者配置为可信令牌发布者并添加其属性。要完成这些步骤,请参阅 Using applications with a trusted token issuer。
注意
并非所有外部连接都需要设置可信令牌发布者。使用 Amazon Redshift 查询编辑器 v2 连接到您的 Redshift 数据库时,不需要配置可信令牌发布者。但可能需要对第三方应用程序进行配置,例如通过您的身份提供者进行身份验证的控制面板或自定义应用程序。
-
配置 IAM 角色 – 后面的部分提到了必须配置的权限。您必须按照 IAM 最佳实践添加权限。后面的步骤将会详细介绍具体权限。
有关更多信息,请参阅 Getting Started with AWS IAM Identity Center。
配置您的身份提供者以使用 AWS IAM Identity Center
控制用户和组身份管理的第一步是连接到 AWS IAM Identity Center 并配置您的身份提供者。您可以使用 AWS IAM Identity Center 本身作为身份提供者,也可以连接第三方身份存储,例如 Okta。有关设置与身份提供者的连接和进行配置的更多信息,请参阅《AWS IAM Identity Center 用户指南》中的连接到外部身份提供者。请确保在此过程结束时,您已将一小批用户和组添加到 AWS IAM Identity Center 以用于测试目的。
管理权限
Redshift/AWS IAM Identity Center 应用程序生命周期管理所需的权限
您必须创建一个 IAM 身份供 Redshift 管理员用来配置 Redshift,以便与 AWS IAM Identity Center 结合使用。常见的做法是,创建一个具有相应权限的 IAM 角色,并根据需要将其分配给其他身份。该角色必须具有执行以下操作的权限。
创建 Redshift/AWS IAM Identity Center 应用程序
-
sso:PutApplicationAssignmentConfiguration
– 用于安全设置。 -
sso:CreateApplication
– 用于创建 AWS IAM Identity Center 应用程序。 -
sso:PutApplicationAuthenticationMethod
– 授予 Redshift 身份验证访问权限。 -
sso:PutApplicationGrant
– 用于更改可信令牌发布者信息。 -
sso:PutApplicationAccessScope
– 用于 Redshift AWS IAM Identity Center 应用程序设置。这包括用于 AWS Lake Formation 和用于 Amazon S3 Access Grants。 -
redshift:CreateRedshiftIdcApplication
– 用于创建 Redshift AWS IAM Identity Center 应用程序。
描述 Redshift/AWS IAM Identity Center 应用程序
-
sso:GetApplicationGrant
– 用于列出可信令牌发布者信息。 -
sso:ListApplicationAccessScopes
– 用于 Redshift AWS IAM Identity Center 应用程序设置以列出下游集成,例如用于 AWS Lake Formation 和 S3 Access Grants。 -
redshift:DescribeRedshiftIdcApplications
– 用于描述现有 AWS IAM Identity Center 应用程序。
更改 Redshift/AWS IAM Identity Center 应用程序
-
redshift:ModifyRedshiftIdcApplication
– 用于更改现有的 Redshift 应用程序。 -
sso:UpdateApplication
– 用于更新 AWS IAM Identity Center 应用程序。 -
sso:GetApplicationGrant
– 获取可信令牌颁发者信息。 -
sso:ListApplicationAccessScopes
– 用于 Redshift AWS IAM Identity Center 应用程序设置。 -
sso:DeleteApplicationGrant
– 删除可信令牌颁发者信息。 -
sso:PutApplicationGrant
– 用于更改可信令牌发布者信息。 -
sso:PutApplicationAccessScope
– 用于 Redshift AWS IAM Identity Center 应用程序设置。这包括用于 AWS Lake Formation 和用于 Amazon S3 Access Grants。 -
sso:DeleteApplicationAccessScope
– 用于删除 Redshift AWS IAM Identity Center 应用程序设置。这包括用于 AWS Lake Formation 和用于 Amazon S3 Access Grants。
删除 Redshift/AWS IAM Identity Center 应用程序
-
sso:DeleteApplication
– 用于删除 AWS IAM Identity Center 应用程序。 -
redshift:DeleteRedshiftIdcApplication
– 提供删除现有 Redshift AWS IAM Identity Center 应用程序的功能。
Redshift/查询编辑器 v2 应用程序生命周期管理所需的权限
您必须创建一个 IAM 身份供 Redshift 管理员用来配置 Redshift,以便与 AWS IAM Identity Center 结合使用。常见的做法是,创建一个具有相应权限的 IAM 角色,并根据需要将其分配给其他身份。该角色必须具有执行以下操作的权限。
创建查询编辑器 v2 应用程序
-
redshift:CreateQev2IdcApplication
– 用于创建 QEV2 应用程序。 -
sso:CreateApplication
– 提供创建 AWS IAM Identity Center 应用程序的功能。 -
sso:PutApplicationAuthenticationMethod
– 授予 Redshift 身份验证访问权限。 -
sso:PutApplicationGrant
– 用于更改可信令牌发布者信息。 -
sso:PutApplicationAccessScope
– 用于 Redshift AWS IAM Identity Center 应用程序设置。这包括查询编辑器 v2。 -
sso:PutApplicationAssignmentConfiguration
– 用于安全设置。
描述查询编辑器 v2 应用程序
-
redshift:DescribeQev2IdcApplications
– 用于描述 AWS IAM Identity Center QEV2 应用程序。
更改查询编辑器 v2 应用程序
-
redshift:ModifyQev2IdcApplication
– 用于更改 AWS IAM Identity Center QEV2 应用程序。 -
sso:UpdateApplication
– 用于更改 AWS IAM Identity Center QEV2 应用程序。
删除查询编辑器 v2 应用程序
-
redshift:DeleteQev2IdcApplication
– 用于删除 QEV2 应用程序。 -
sso:DeleteApplication
– 用于删除 QEV2 应用程序。
注意
在 Amazon Redshift 开发工具包中,以下 API 不可用:
-
CreateQev2IdcApplication
-
DescribeQev2IdcApplications
-
ModifyQev2IdcApplication
-
DeleteQev2IdcApplication
这些操作专门用于在 AWS 控制台中执行 AWS IAM Identity Center 与 Redshift QEV2 的集成。有关更多信息,请参阅 Amazon Redshift 定义的操作。
数据库管理员在控制台中连接新资源所需的权限
在创建过程中,需要这些权限才能连接新预置的集群或 Amazon Redshift Serverless 工作组。如果您具有这些权限,则控制台中会显示一个选项,供您选择连接到 AWS IAM Identity Center 托管的 Redshift 应用程序。
-
redshift:DescribeRedshiftIdcApplications
-
sso:ListApplicationAccessScopes
-
sso:GetApplicationAccessScope
-
sso:GetApplicationGrant
作为最佳实践,我们建议将权限策略附加到 IAM 角色,然后根据需要将其分配给用户和组。有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management。
使用 AWS IAM Identity Center 将 Redshift 设置为 AWS 托管应用程序
Redshift 管理员必须完成以下步骤,使 Redshift 成为 AWS IAM Identity Center 托管应用程序,然后 AWS IAM Identity Center 才能管理 Amazon Redshift 预置集群或 Amazon Redshift Serverless 工作组的身份:
-
在 Amazon Redshift 或 Amazon Redshift Serverless 控制台菜单中选择 AWS IAM Identity Center 集成,然后选择连接到 AWS IAM Identity Center。在其中,您可以逐步完成一系列选择来填充 AWS IAM Identity Center 集成的属性。
-
为 Redshift 的 AWS Identity Center 托管应用程序选择显示名称和唯一名称。
-
为您的组织指定命名空间。这通常是组织名称的缩写。它已作为前缀添加到 Redshift 数据库中 AWS IAM Identity Center 管理的用户和角色。
-
选择要使用的 IAM 角色。此 IAM 角色应与用于 Redshift 的其他角色分开,建议不要将该角色其用于其他目的。所需的特定策略权限如下所示:
-
sso:DescribeApplication
– 需要在目录中创建身份提供者 (IdP) 条目。 -
sso:DescribeInstance
– 用于手动创建 IdP 联合身份验证角色或用户。
-
-
配置客户端连接和可信令牌发布者。配置可信令牌发布者,通过设置与外部身份提供者的关系来协调可信身份的传播。例如,通过身份传播,用户可以登录一个应用程序并访问另一个应用程序中的特定数据。这样用户便可以更无缝地从不同位置收集数据。在此步骤中,您可以在控制台中为每个可信令牌发布者设置属性。这些属性包括名称和受众群体声明(简写为 aud claim),您可能需要从工具或服务的配置属性中获取这些信息。您可能还需要从第三方工具的 JSON Web 令牌 (JWT, JSON Web Token) 提供应用程序名称。
注意
每个第三方工具或服务要求的
aud claim
可能会有所不同,具体取决于令牌类型,这些可以是身份提供者发布的访问令牌,也可以是 ID 令牌等其他类型。每个供应商都可能不同。在实施可信身份传播并与 Redshift 集成时,您需要为第三方工具发送到 AWS 的令牌类型提供正确的 aud 值。请查看您的工具或服务供应商的建议。有关可信身份传播的详细信息,请参阅可信身份传播的工作原理。另请参阅本文档附带的 AWS IAM Identity Center 测试版文档。
Redshift 管理员完成步骤并保存配置后,AWS IAM Identity Center 属性将显示在 Redshift 控制台中。您也可以查询系统视图 SVV_IDENTITY_PROVIDERS 来验证应用程序的属性。这些属性包括应用程序名称和命名空间。您可以使用命名空间作为与应用程序关联的 Redshift 数据库对象的前缀。完成这些任务后,Redshift 便成为支持 AWS IAM Identity Center 的应用程序。控制台中的属性包括集成状态。集成完成后,它会显示已启用。完成此流程后,可以在每个新集群上启用 AWS IAM Identity Center 集成。
完成配置后,您可以在 Redshift 中使用 AWS IAM Identity Center 的用户和组,方法是选择用户或组选项卡,然后选择分配。
为 Amazon Redshift 集群或 Amazon Redshift Serverless 工作组启用 AWS IAM Identity Center 集成
您的数据库管理员配置新的 Redshift 资源,使其与 AWS IAM Identity Center 配合使用,从而简化登录和数据访问。此过程包括在创建预置集群或无服务器工作组的步骤中。任何有权创建 Redshift 资源的人员都可以执行这些 AWS IAM Identity Center 集成任务。当您创建预置集群时,请首先在 Amazon Redshift 控制台中选择创建集群。以下步骤显示如何为数据库启用 AWS IAM Identity Center 管理。(其中并未包括创建集群的所有步骤。)
-
在创建集群步骤中,在 IAM Identity Center 集成部分中,选择为 <您的集群名称> 启用。
-
在启用集成时,流程中有一个步骤。您可以在控制台中选择启用 IAM Identity Center 集成来完成此步骤。
-
对于新的集群或工作组,使用 SQL 命令在 Redshift 中创建数据库角色。命令如下:
CREATE ROLE <idcnamespace:rolename>;
命名空间和角色名称如下:
-
IAM Identity Center 命名空间前缀 – 这是您在设置 AWS IAM Identity Center 与 Redshift 之间的连接时,定义的命名空间。
-
角色名称 – 此 Redshift 数据库角色必须与 AWS IAM Identity Center 中的组名匹配。
Redshift 连接到 AWS IAM Identity Center,然后提取创建数据库角色并将其映射到 AWS IAM Identity Center 组所需的信息。
-
请注意,创建新的数据仓库时,为 AWS IAM Identity Center 集成指定的 IAM 角色将自动附加到预置集群或 Amazon Redshift Serverless 工作组。完成所需集群元数据的输入和资源创建后,您可以在属性中查看 AWS IAM Identity Center 集成的状态。如果您在 AWS IAM Identity Center 中的组名有空格,则在创建匹配角色时需要在 SQL 中使用引号。
启用 Redshift 数据库并创建角色后,就可以使用 Amazon Redshift 查询编辑器 v2 或 Amazon QuickSight 连接到数据库。详细信息将在后面的部分中进一步说明。
使用 API 设置默认 RedshiftIdcApplication
由您的身份管理员完成设置。使用 API,您可以创建并填充 RedshiftIdcApplication
,它代表 AWS IAM Identity Center 中的 Redshift 应用程序。
-
首先,您可以创建用户,并将这些用户添加到 AWS IAM Identity Center 的组中。您可以在 AWS 控制台中为 AWS IAM Identity Center 执行此操作。
-
调用
create-redshift-idc-application
以创建 AWS IAM Identity Center 应用程序,使其与 Redshift 的使用兼容。您可以通过填充所需的值来创建应用程序。显示名称是在 AWS IAM Identity Center 控制面板上显示的名称。IAM 角色 ARN 是拥有 AWS IAM Identity Center 权限的 ARN,同样也可由 Redshift 代入。aws redshift create-redshift-idc-application ––idc-instance-arn 'arn:aws:sso:::instance/ssoins-1234a01a1b12345d' ––identity-namespace 'MYCO' ––idc-display-name 'TEST-NEW-APPLICATION' ––iam-role-arn 'arn:aws:redshift:us-east-1:012345678901:role/TestRedshiftRole' ––redshift-idc-application-name 'myredshiftidcapplication'
以下示例显示了对
create-redshift-idc-application
的调用返回的示例RedshiftIdcApplication
响应。"RedshiftIdcApplication": { "IdcInstanceArn": "arn:aws:sso:::instance/ssoins-1234a01a1b12345d", "RedshiftIdcApplicationName": "test-application-1", "RedshiftIdcApplicationArn": "arn:aws:redshift:us-east-1:012345678901:redshiftidcapplication:12aaa111-3ab2-3ab1-8e90-b2d72aea588b", "IdentityNamespace": "MYCO", "IdcDisplayName": "Redshift-Idc-Application", "IamRoleArn": "arn:aws:redshift:us-east-1:012345678901:role/TestRedshiftRole", "IdcManagedApplicationArn": "arn:aws:sso::012345678901:application/ssoins-1234a01a1b12345d/apl-12345678910", "IdcOnboardStatus": "arn:aws:redshift:us-east-1:123461817589:redshiftidcapplication", "RedshiftIdcApplicationArn": "Completed", "AuthorizedTokenIssuerList": [ "TrustedTokenIssuerArn": ..., "AuthorizedAudiencesList": [...]... ]}
-
您可以使用
create-application-assignment
,将特定组或个人用户分配给 AWS IAM Identity Center 中的托管应用程序。采用这种做法,您可以指定通过 AWS IAM Identity Center 管理的组。如果数据库管理员在 Redshift 中创建数据库角色,则 AWS IAM Identity Center 中的组名会映射到 Redshift 中的角色名称。数据库中的角色控制权限。有关更多信息,请参阅Assign user access to applications in the AWS IAM Identity Center console。 -
启用应用程序后,调用
create-cluster
并附上 AWS IAM Identity Center 中的 Redshift 托管应用程序 ARN。通过这样做,可以将集群与 AWS IAM Identity Center 中的托管应用程序关联起来。
将 AWS IAM Identity Center 应用程序与现有集群或工作组关联
如果您要为现有的集群或工作组启用 AWS IAM Identity Center 集成,可以通过运行 SQL 命令来实现。您也可以运行 SQL 命令来更改集成的设置。有关更多信息,请参阅 ALTER IDENTITY PROVIDER。
还可以删除现有身份提供者。以下示例演示如何对附加到身份提供者的用户和角色执行级联删除。
DROP IDENTITY PROVIDER <provider_name> [ CASCADE ]
设置用户权限
管理员根据用户的身份属性和组成员资格,在其身份提供者内部或直接在 AWS IAM Identity Center 中配置对各种资源的权限。例如,身份提供者管理员可以将数据库工程师添加到适合其角色的组中。此组名映射到 Redshift 数据库角色名称。该角色提供或限制对 Redshift 中特定表或视图的访问权限。