通过 AWS Lake Formation 查询数据 - Amazon Redshift

通过 AWS Lake Formation 查询数据

使用 AWS Lake Formation 可以更轻松地集中管理和保护您的数据湖,并可用于提供数据访问。通过对 AWS IAM Identity Center 和 Redshift 进行配置,将身份传播到 Lake Formation,这样管理员就可以根据组织的身份提供者(IdP)组,实现对 Amazon S3 数据湖精细的访问控制。这些组通过 AWS IAM Identity Center 进行管理。此部分介绍如何配置几个应用场景,用于从数据湖中进行查询和从数据共享中进行查询,以演示如何将 AWS IAM Identity Center 与 Redshift 结合使用,来连接到由 Lake Formation 管理的资源。

使用 AWS IAM Identity Center 和 Redshift 连接来查询数据湖

这些步骤涵盖的应用场景是,您使用 AWS IAM Identity Center 连接到 Redshift,以便查询 Lake Formation 管理的数据湖。

先决条件

此过程有多个先决条件步骤:

  1. AWS IAM Identity Center 必须设置为支持 Redshift 的身份验证和身份管理。您可以从控制台启用 AWS IAM Identity Center 并选择身份提供者(IdP)来源。之后,将您的一组 IdP 用户与 AWS IAM Identity Center 同步。您还必须按照本文档前面详述的步骤,在 AWS IAM Identity Center 与 Redshift 之间建立连接。

  2. 创建新的 Amazon Redshift 集群,并在配置步骤中启用通过 AWS IAM Identity Center 进行身份管理。

  3. 为 Lake Formation 创建托管 AWS IAM Identity Center 应用程序并对其进行配置。此配置应在设置了 AWS IAM Identity Center 与 Redshift 之间的连接之后进行。步骤如下:

    1. 在 AWS CLI 中,使用 modify-redshift-idc-application 命令启用 Lake Formation 服务与 AWS IAM Identity Center 托管的 Redshift 应用程序的集成。此调用包括 service-integrations 参数,该参数设置为启用对 Lake Formation 进行授权的配置字符串值。

    2. 使用 create-lake-formation-identity-center-configuration 命令配置 Lake Formation。这将创建一个适用于 Lake Formation 的 AWS IAM Identity Center 应用程序,该应用程序在 AWS IAM Identity Center 门户中可见。管理员必须设置 ––cli-input-json 参数,其值是 JSON 文件的路径,该文件使用所有 AWS CLI API 调用的标准格式。您必须包括以下各项的值:

      • CatalogId – Lake Formation 目录 ID。

      • InstanceArn – AWS IAM Identity Center 实例 ARN 值。

管理员完成先决条件配置后,数据库管理员可以创建用于查询数据湖的外部架构。

  1. 管理员创建外部架构 – Redshift 数据库管理员使用以下 SQL 语句连接到数据库并创建外部架构:

    CREATE EXTERNAL SCHEMA if not exists my_external_schema from DATA CATALOG database 'my_lf_integrated_db' catalog_id '12345678901234';

    请注意,在这种情况下不需要指定 IAM 角色,因为访问权限是通过 AWS IAM Identity Center 管理的。

  2. 管理员授予权限 – 管理员向 AWS IAM Identity Center 组授予使用权限,这会授予对 Redshift 资源的权限。此步骤通过运行如下所示的 SQL 语句完成:

    GRANT USAGE ON SCHEMA "my_external_schema" to "MYCO:sales";

    随后,管理员根据组织的要求,使用 AWS CLI 授予 Lake Formation 在对象上的权限:

    aws lakeformation grant-permissions ...
  3. 用户运行查询 – 举例说明,此时销售人员组中的 AWS IAM Identity Center 用户,可以通过查询编辑器 v2 登录到 Redshift 数据库。然后,他们可以运行访问外部架构中的表的查询,如以下示例:

    SELECT * from my_external_schema.table1;

使用 AWS IAM Identity Center 和 Redshift 连接来连接到数据共享

通过 AWS IAM Identity Center 管理访问权限时,您可以从不同的 Redshift 数据仓库访问数据共享。为此,您需要运行查询来设置外部数据库。完成这些步骤的要求是,假定您已在 Redshift 和 AWS IAM Identity Center 之间建立连接,并且您已经创建了 AWS Lake Formation 应用程序,如前面的过程所述。

  1. 创建外部数据库 – 管理员创建外部数据库用于数据共享,并通过其 ARN 进行引用。以下是演示如何操作的示例:

    CREATE DATABASE "redshift_external_db" FROM ARN 'arn:aws:glue:us-east-1:123456789012:database/redshift_external_db-iad' WITH NO DATA CATALOG SCHEMA;

    在本使用场景中,您将 AWS IAM Identity Center 与 Redshift 用于身份管理,但不包括 IAM 角色。

  2. 管理员设置权限 – 创建数据库后,管理员向 AWS IAM Identity Center 组授予使用权限。这将授予对 Redshift 资源的权限:

    GRANT USAGE ON DATABASE "my_external_db" to "MYCO:sales";

    管理员还使用 AWS CLI 授予 Lake Formation 在对象上的权限:

    aws lakeformation grant-permissions ...
  3. 用户运行查询 – 销售组中的用户可以基于分配的权限查询数据库中的表:

    select * from redshift_external_db.public.employees;

有关授予数据湖权限和授予数据共享权限的更多信息,请参阅 Granting permissions to users and groups。有关向架构或数据库授予使用权限的更多信息,请参阅 GRANT