通过 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 管理的数据湖。
先决条件
此过程有多个先决条件步骤:
-
AWS IAM Identity Center 必须设置为支持 Redshift 的身份验证和身份管理。您可以从控制台启用 AWS IAM Identity Center 并选择身份提供者(IdP)来源。之后,将您的一组 IdP 用户与 AWS IAM Identity Center 同步。您还必须按照本文档前面详述的步骤,在 AWS IAM Identity Center 与 Redshift 之间建立连接。
-
创建新的 Amazon Redshift 集群,并在配置步骤中启用通过 AWS IAM Identity Center 进行身份管理。
-
为 Lake Formation 创建托管 AWS IAM Identity Center 应用程序并对其进行配置。此配置应在设置了 AWS IAM Identity Center 与 Redshift 之间的连接之后进行。步骤如下:
-
在 AWS CLI 中,使用
modify-redshift-idc-application
命令启用 Lake Formation 服务与 AWS IAM Identity Center 托管的 Redshift 应用程序的集成。此调用包括service-integrations
参数,该参数设置为启用对 Lake Formation 进行授权的配置字符串值。 -
使用
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 值。
-
-
管理员完成先决条件配置后,数据库管理员可以创建用于查询数据湖的外部架构。
-
管理员创建外部架构 – 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 管理的。
-
管理员授予权限 – 管理员向 AWS IAM Identity Center 组授予使用权限,这会授予对 Redshift 资源的权限。此步骤通过运行如下所示的 SQL 语句完成:
GRANT USAGE ON SCHEMA "my_external_schema" to "MYCO:sales";
随后,管理员根据组织的要求,使用 AWS CLI 授予 Lake Formation 在对象上的权限:
aws lakeformation grant-permissions ...
-
用户运行查询 – 举例说明,此时销售人员组中的 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 应用程序,如前面的过程所述。
-
创建外部数据库 – 管理员创建外部数据库用于数据共享,并通过其 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 角色。
-
管理员设置权限 – 创建数据库后,管理员向 AWS IAM Identity Center 组授予使用权限。这将授予对 Redshift 资源的权限:
GRANT USAGE ON DATABASE "my_external_db" to "MYCO:sales";
管理员还使用 AWS CLI 授予 Lake Formation 在对象上的权限:
aws lakeformation grant-permissions ...
-
用户运行查询 – 销售组中的用户可以基于分配的权限查询数据库中的表:
select * from redshift_external_db.public.employees;
有关授予数据湖权限和授予数据共享权限的更多信息,请参阅 Granting permissions to users and groups。有关向架构或数据库授予使用权限的更多信息,请参阅 GRANT。