使用 AWS Lake Formation 和 AWS IAM 身份中心设置跨账户 AWS Glue

跨账户设置 AWS Glue 数据目录访问权限与 AWS Lake Formation 和 AWS IAM 身份中心的集成

关键要点

本文讨论如何通过 AWS Lake Formation 和 AWS IAM 身份中心,在跨多个 AWS 账户中设置对 AWS Glue 数据目录的访问,以支持 Amazon Redshift 和 Amazon QuickSight 的分析工作。企业通常会通过 AWS Glue 数据目录进行数据发现,用于创建细粒度的数据访问控制,并满足合规性和运营安全需求。利用信任身份传播功能,Lake Formation 能够直接向企业用户和组提供精细访问权限,简化 AWS 服务间的数据访问追踪。

大多数组织都会集中管理其员工的身份信息,使用外部身份提供商IdPs,同时由多个业务单元组成,这些单元会生成自己独特的数据集并管理这些数据集的生命周期,分布于多个 AWS 账户中。这些业务单元的使用环境各异,数据湖由 Amazon Simple Storage Service Amazon S3管理,分析工作负载则在 Amazon Redshift 上运行,这是一个快速、可扩展且完全托管的云数据仓库,能够处理和运行复杂的 SQL 分析工作负载,支持结构化和半结构化数据。

生产数据产品的业务单元希望与他人共享数据,而不必复制数据,以促进分析和提取洞察。此外,他们希望对用户访问有更严格的控制,并能够审核对数据产品的访问情况。为了解决这个问题,企业通常会在 AWS Glue 数据目录 中对数据集进行分类,以便于数据发现,并利用 AWS Lake Formation 实现细粒度的访问控制,从而符合其业务单元的合规性和安全运营模式。考虑到服务的多样性、细粒度数据共享及所涉及的角色,这些企业通常希望在使用 AWS 分析服务 时提供一个简化的企业用户身份访问体验。

AWS IAM 身份中心 使用户能够集中管理员工对 AWS 账户和应用程序的访问,既可以使用本地身份存储,也可以通过连接公司目录使用 IdPs。Amazon Redshift 和 AWS Lake Formation 已与 IAM 身份中心的新 信任身份传播 功能集成,允许使用 第三方 IdPs ,如 Microsoft Entra IDAzure AD、Okta、Ping 和 OneLogin。

通过信任身份传播,Lake Formation 允许数据管理员直接向企业用户和组提供细粒度访问权限,并简化在支持的 AWS 服务中对数据访问的端到端追踪。因为访问是基于用户的企业身份来管理的,所以最终用户无需使用数据库本地用户凭证或承担 AWS 身份与访问管理IAM角色就可以访问数据。此外,这还支持基于集体组成员身份的有效用户权限管理和组层级支持。

在本文中,我们将介绍如何在分散于不同 AWS 账户的 AWS IAM 身份中心、Amazon Redshift 和 AWS Lake Formation 之间启用信任身份传播,并设置企业身份的跨账户 S3 数据湖共享,以利用 Amazon Redshift 进行分析。之后,我们将使用 Amazon QuickSight 构建以 Redshift 表为数据源的分析洞察。

解决方案概述

本文涵盖一个案例,即一个组织在其 IdP 中集中管理企业用户,用户属于多个业务单元。他们的目标是在管理账户中通过 IAM 身份中心启用集中用户身份验证,同时将数据分析的业务单元与使用数据目录进行产品管理的业务单元分配在不同的成员账户中。这使得他们能够在组织内部通过 IAM 身份中心保持统一的用户身份验证机制,同时通过为每个业务单元使用不同 AWS 账户实现访问控制、资源与成本的隔离,并使用 Lake Formation 启用跨账户数据共享。

对于此解决方案,AWS Organizations 在中央管理账户中启用,且 IAM 身份中心配置为管理员工身份。该组织具有两个成员账户:一个账户用于通过数据目录管理 S3 数据湖,另一个账户用于在 Amazon Redshift 和 QuickSight 上运行分析工作负载,所有服务都启用信任身份传播。Amazon Redshift 将使用在中央管理账户中设置的 IAM 身份中心用户和组访问跨账户的 AWS Glue 资源,成员账户 1 将借助 QuickSight 来实现访问。在成员账户 2 中,AWS Glue 资源的权限通过 Lake Formation 管理,并通过 Lake Formation 数据共享与成员账户 1 共享。

以下图表展示了解决方案架构。

该解决方案包括以下内容:

在集中管理账户中创建权限集,并为 RedshiftMemberAccount 创建账户分配。我们将 IdP 中的用户和组与 IAM 身份中心集成。成员账户 1RedshiftMemberAccount是部署 Redshift 集群和应用的账户。成员账户 2GlueMemberAccount是数据目录中登记元数据的位置,并启用了与 IAM 身份中心的集成。我们将权限分配给两个 IAM 身份中心组以访问数据目录资源: awsssosales 对于此组应用列级过滤,以便该组用户能够选择两个列并读取所有行。awsssofinance 对于此组应用行级过滤,以便该组用户能够选择所有列,并在应用行级过滤后查看行。我们为三个 IAM 身份中心用户应用不同权限: 用户 Ethan 属于 awsssosales Ethan 可以选择两个列并读取所有行。用户 Frank 属于 awsssofinance Frank 可以选择所有列,并在应用行级过滤后查看行。用户 Brian 属于 awsssosales 和 awsssofinance Brian 继承了两个组定义的权限。在与 Amazon Redshift 相同的账户中设置 QuickSight,启用 IAM 身份中心进行身份验证。

先决条件

您需要在环境中设置以下先决条件:

一个启用 IAM 身份中心的中央管理账户,并添加了成员账户。有关更多信息,请参阅 启用 AWS IAM 身份中心。可选:将 IAM 身份中心与您的 IdP 连接并同步用户和组。有关说明,请参考 入门教程。成员账户 1RedshiftMemberAccount,此账户中存在 Redshift 集群和应用程序。有关启用 IAM 身份中心集成的 Redshift 集群设置,请参考 将身份提供者IdP与使用 AWS IAM 身份中心的 Amazon Redshift 查询编辑器 V2 集成,以实现无缝单点登录。成员账户 2GlueMemberAccount,此账户中登记了数据目录的元数据。

成员账户 2 配置

作为数据湖管理员,登录 Lake Formation 控制台。要了解有关为数据湖管理员设置权限的更多信息,请参阅 创建数据湖管理员。

在本节中,我们将逐步介绍如何设置 Lake Formation、启用 Lake Formation 权限,并向 IAM 身份中心组授予数据库和表权限。

设置 Lake Formation

按照以下步骤设置 Lake Formation。

创建 AWS Glue 资源

您可以使用现有的 AWS Glue 数据库,里面有一些表。本示例中使用的数据曲线是名为 customerdb 的数据库和名为 reviews 的表,其数据存储在 S3 存储桶 lfdatalake 中。

surfshark大陆版注册 S3 存储桶位置

完成以下步骤以注册 S3 存储桶位置:

在 Lake Formation 控制台的导航面板中,选择 管理 下的 数据湖位置。选择 注册位置。输入 Amazon S3 位置,即包含表数据的 S3 存储桶位置。在 IAM 角色 中提供用户定义的 IAM 角色。有关创建用户定义的 IAM 角色的说明,请参阅 用于注册位置的角色要求。在 权限模式 中,选择 Lake Formation。选择 注册位置。

设置跨账户版本

完成以下步骤以设置跨账户版本:

作为数据湖管理员登录到 Lake Formation 控制台。在导航面板中,选择 管理 下的 数据目录设置。在 跨账户版本设置 中,将最新版本版本 4保持为当前的跨账户版本。选择 保存。

使用 AWS Lake Formation 和 AWS IAM 身份中心设置跨账户 AWS Glue添加跨账户访问所需的权限

如果 AWS Glue 数据目录资源策略已在账户中启用,您可以选择删除该策略或添加以下所需权限,以实现跨账户授权。提供的策略使 AWS 资源访问管理器AWS RAM能够在使用 Lake Formation 进行跨账户授权时共享资源策略。有关更多信息,请参阅 先决条件。如果您的 策略 在 目录设置 下为空,请跳至下一步骤。

作为 IAM 管理员登录到 AWS Glue 控制台。在导航面板中,选择 数据目录 下的 目录设置。

在 权限 下,添加以下策略,并提供您的 AWS Glue 资源所在的账户 ID:

json{ Version 20121017 Statement [ { Effect Allow Principal { Service ramamazonawscom } Action glueShareResource Resource [ arnawsglueuseast1ltaccountidgttable// arnawsglueuseast1ltaccountidgtdatabase/ arnawsglueuseast1ltaccountidgtcatalog ] } ]}

选择 保存。

有关更多信息,请参阅 授予跨账户访问权限。

为 Lake Formation 启用 IAM 身份中心集成

要将 IAM 身份中心与 Lake Formation 组织实例集成,参阅 将 Lake Formation 与 IAM 身份中心连接。

为允许 IAM 身份中心用户和组进行跨账户共享,需将目标接收账户添加到 Lake Formation 中的 IAM 身份中心集成下的 AWS 账户和组织 ID。

作为数据湖管理员登录到 Lake Formation 控制台。在导航面板中选择 管理 下的 IAM 身份中心集成。在 AWS 账户和组织 ID 下,选择 添加。输入目标账户。选择 添加。

向数据库启用 Lake Formation 权限

对于可能共享的包含表的 Data Catalog 数据库,您可以防止新的表在此数据库中默认授予 IAMAllowedPrincipals 权限。完成以下步骤:

作为数据湖管理员登录到 Lake Formation 控制台。在导航面板的 数据目录 下,选择 数据库。选择数据库 customerdb。选择 操作,然后选择 编辑。在 新创建表的默认权限 下,取消选择 仅对该数据库中的新表使用 IAM 访问控制。选择 保存。

对于 Data Catalog 数据库,移除 IAMAllowedPrincipals。

在导航面板 数据目录 下,选择 数据库。选择数据库 customerdb。选择 操作,然后选择 查看。选择 IAMAllowedPrincipals 并选择 撤销。

对 customerdb 数据库下的表执行相同步骤。

向 IAM 身份中心组授予数据库权限

完成以下步骤以向 IAM 身份中心组授予数据库权限:

在 Lake Formation 控制台的 数据目录 下,选择 数据库。选择数据库 customerdb。选择 操作,然后选择 授予。选择 IAM 身份中心。选择 添加,并选择 开始。搜索并选择您的 IAM 身份中心组名称,然后选择 分配。

选择 命名的数据目录资源。在 数据库 下选择 customerdb。在 数据库权限 下,对于 数据库权限 选择 描述。选择 授予。

向 IAM 身份中心组授予表权限

在以下部分中,我们将向我们的两个 IAM 身份中心组授予不同权限。

列过滤器

我们首先向组 awsssosales 添加权限。该组将有权访问 customerdb 数据库,仅能够选择两个列并读取所有行。

在 Lake Formation 控制台的 数据目录 下,选择 数据库。选择数据库 customerdb。选择 操作,然后选择 授予。选择 IAM 身份中心。选择 添加,然后选择 开始。搜索并选择 awsssosales 然后选择 分配。

选择 命名的数据目录资源。在 数据库 下选择 customerdb。在 表 下选择 reviews。在 表权限 下,选择
SK电信通过在Amazon Bedrock中微调Anthropic的Claude模型来改进电信特定的
< 上一篇
使用自定义查询定制适用于特定业务文档的 Amazon Textract 机器学习博客
下一篇 >

评论