Amazon Redshift 的原生身份提供者 (IdP) 联合身份验证 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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 中的角色名称如下所示:<Namespace>:<GroupName on Azure AD>。例如,当您在 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

    请注意,对于联合身份验证的外部用户,其角色成员资格仅在该用户的会话中可用。这对创建数据库对象有影响。例如,当联合身份验证的外部用户创建任何视图或存储过程时,同一个用户无法将这些对象的权限委托给其他用户和角色。

命名空间的解释

命名空间将用户或角色映射到特定身份提供者。例如,在 Amazon IAM 中创建的用户的前缀是 iam:。此前缀可防止用户名冲突,并使支持多个身份存储成为可能。如果用户 alice@example.com 来自向 aad 命名空间注册的身份源,则当此用户登录时,会在 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 设置的按步骤过程。它详细介绍了为 Power BI 桌面或 Power BI 服务设置客户端连接的步骤。这些步骤包括应用程序注册、配置权限和配置凭证。

要了解如何使用 Power BI 桌面和 JDBC 客户端 SQL WorkBench/J 将 Amazon Redshift 原生 IdP 联合身份验证与 Azure AD 集成,请观看以下视频:

有关如何使用原生身份提供者联合身份验证通过 SQL 客户端(特别是 DBEaver 或 SQL WorkBench/J)连接到 Amazon Redshift 的说明,请参阅博客文章使用 SQL 客户端将 Amazon Redshift 原生 IdP 联合身份验证与 Microsoft Azure AD 集成