Original URL: https://aws.amazon.com/cn/blogs/big-data/control-data-access-and-permissions-with-aws-lake-formation-and-amazon-emr/
如果建立起一套对数据湖访问的集中控制体系,结果会如何?我们能更安全、更便捷地帮助内部及外部客户共享特定数据吗?
使用 AWS Lake Formation 并将其与 Amazon EMR 相集成,大家能够轻松完成这类管理任务。
本文将从特定用例出发,回顾对现有数据湖内数据访问与权限加以控制的操作步骤。在开始之前,推荐大家参阅以下内容:
示例用例
我们假设您的企业使用 AWS 扩展了本地基础设施。由于本地数据中心内已经具备用于分析及机器学习负载的固定容量,因此您选择使用云服务执行其他计算与存储任务。AWS Direct Connect 将您的数据中心链接至最近的 AWS 区域。由于您的 Active Directory 服务器仍位于本地,因此您可以使用 Active Directory 连接器实现用户身份验证联动。为了实现成本优化与敏捷性,您还构建起一个数据湖,通过 Lake Formation 将业务数据集中至Amazon Simple Storage Service (Amazon S3)当中。
您的组织希望改善现有数据分析功能,并聘请了外部数据分析顾问。根据最低权限最佳实践,您只希望与外部顾问共享相关数据,且要求其中不涉及任何个人身份信息(PII),例如姓名、出生日期以及社保号码等。
为了避免云端数据受到未授权第三方的访问,我们需要一套安全、受控、符合审计要求且经过加密的数据解决方案。您还要求在列层级限制访问权限,确保外部顾问无法接触到 PII 数据。
此外,您还希望限制顾问对云资源的访问。他们应仅能使用特定的 AWS 身份与访问管理(AWS Identity and Access Management,简称 IAM)角色访问 EMR 集群。
下图所示,为本用例中的具体架构。
外部顾问通过兼容 SMAL 的本地目录服务与 IAM 联动,进而实现对 AWS 资源的身份验证与访问。大家可以控制来自本地身份提供方(IdP)对云资源的访问。关于更多详细信息,请参阅基于SAML 2.0的联动机制。
Lake Formation 负责管理数据访问活动。数据湖管理员将在 Lake Formation 中以列为基本层级为各主体定义数据访问权限。这里的“主体”可以是与本地目录服务联动的用户。在本用例中,主体为对应外部顾问的特定角色,负责控制他们对 EMR 集群的只读访问权限。
由于我们在 Lake Formation 中为数据制定了细粒度权限,因此外部顾问将无法触及员工的姓名、出生日期以及社保号码。相反,他们只能访问非 PII 列。这项措施被称为假名化(pseudonymization)。在这类场景中,我们无法在没有其他数据的前提下识别 PII。假名化能够带来以下好处:
保证身份验证以及用户/数据访问治理的集中化实现。
由于存在规范的身份验证来源,因此管理开销更低、安全性水平更高。
顾问使用 IAM 角色后,仅能通过 Lake Formation 访问数据以及与 EMR 集群相关联的实例配置角色。
大家无需管理指向 Amazon S3 的访问活动;所有访问都被集中在 Lake Formation 当中。如果要与更多用户共享数据湖数据,只需在 Lake Formation 进行定义即可。
在下一节中,我们将探讨如何实现这套解决方案。
创建数据湖
在开始本轮演练之前,首先需要创建一个数据湖。您可以通过策略与权限控制对该数据湖的访问活动,具体权限可以立足数据库、表或列层级进行创建。
在创建数据库时,我们需要完成以下步骤以启用 Lake Formation 中的细粒度访问控制权限。
在 Lake Formation 控制台中的 Data catalog 下,选择 Databases。
选择 Create database 。
在 Name 部分,输入您的数据库名称。
取消 Use only IAM access control for new tables in this database 勾选项。
如此一来,我们即启用了 Lake Formation 权限的细粒度访问控制。
选择 Create database 。
调整权限
在 Permissions 下,选择 Data permissions 。
选择 Grant 。
在 IAM users and roles 部分,选择哪些特定的 IAM 用户与角色可以访问数据湖。
这些账户可以与兼容 AWS 的 SAML 2.0 IdP 配合使用,借此实现对来自本地 Active Directory 访问的控制能力。
大家还可以直接定义 Active Directory 用户与组,但仅限将 Amazon EMR 与 Lake Formation 相集成的上下文之内。关于更多详细信息,请参阅Amazon EMR与AWS Lake Formation集成功能beta版:面向Apache Spark的数据库、表与列层级访问控制支持,以及Amazon EMR组件介绍。
在 Database 部分,选择您的数据库。
在 Table 部分,选择您的表。
在 Columns 部分,选择 Exclude columns 。
在 Exclude columns 部分,选择要排除的列(在本用例中,排除 first name、last name 以及 ssn 列)。
在 Table permissions 部分,选择 Select 。
这项功能允许您通过 IAM 用户或角色在列层级实现访问控制。
选择 Grant 。
Lake Formation 与 Amazon EMR 相集成
从 Amazon EMR 5.26 版本开始,大家可以启动 EMR 集群并将其与 Lake Formation 进行集成。Amazon EMR 仅能根据 Lake Formation 定义的权限访问特定列或数据。关于更多详细信息,请参阅启用SAML的单点登录与细粒度访问控制架构。
其中一项核心要求,就是配备一个专为 EMR 集群定义的外部 IdP(例如微软 Active Directory、Okta 或者 Auth0)。这样处理的好处,在于大家可以使用现有企业目录、合规性条款以及审计方案控制 Lake Formation 中的数据访问活动。关于具体操作说明,请参阅Amazon EMR与AWS Lake Formation的集成功能(beta版)。
集成完成之后,顾问即可通过 Zeppelin 或者 Apache Spark 使用来自 Amazon EMR 的数据,且保证不会涉及 PII 内容。
其他安全措施
与大多数 AWS 服务一样,Amazon EMR 与 Lake Formation 也可使用 IAM 功能。在 IAM 的支持下,我们可以定义 IAM 用户或角色,借此授权对其他 AWS 服务及数据的访问权限。
在这套安全模式之上,AWS CloudTrail 能够进一步跟踪所有 AWS API 请求。您可以通过这项跟踪功能满足治理与合规层面的要求,保证及时了解各类 AWS 资源的实际使用情况。
要保护数据,大家可以使用传输加密与静态加密两种方式。此外,您也可以针对 EMR 集群定义特定的安全配置。关于更多详细信息,请参阅加密选项。
要使用其他安全服务,您可以选择Amazon GuardDuty (一项威胁检测服务)以及 Amazon Macie(大规模数据发现与保护服务)。关于更多详细信息,请参阅AWS上的安全性、身份与合规性。
总结
数据的使用在数据格式和规模两个方面已经取得了快速的发展。对不同技术(关系数据库、NoSQL、图数据库、明文文件等)进行管理则会显著增加运营开销。随着竞争烈度的提升,数据规模也将随业务推进而飞速发展,带来更大的计算与存储资源压力。这一切,都迫使组织需求通往更高敏捷性与速度水平的道路。
此外,大家可能需要与众多内部及外部客户共享业务需求数据,这不仅令数据治理难度进一步提升,同时也给权限与访问管理带来沉重负担。
在本文中,我们解释了如何控制数据湖的访问与权限机制。指向数据的访问活动将经过控制、加密与审计,AWS 也通过这种严密的方式支持组织客户的安全发展。而这一切,都将在本地 IdP 加 AWS/其他外部资源的混合基础架构之下成为现实。
您也可以启动数据湖项目,以安全且可扩展的方式通过多种 IAM 角色实现组织数据共享。整个过程只需要几分钟(而非以往安全方案的几个月),且不会对工程设施造成任何深层影响。
作为这项工作的自然延续,大家还可以将经过整理的数据引入 AWS Machine Learning 工具所支持的各类机器学习项目。
作者介绍:
AWS 公司合作伙伴解决方案架构师。他主要关注 DevOps、机器学习方向,作为重度宠物爱好者的他还热衷于陪伴他的小狗 Bandit。
AWS 公司解决方案架构师。Pawan 喜欢与客户合作,并在存储与迁移等领域为客户提供协助。在工作之余,Pawan 喜欢观看板球比赛和与朋友们玩主机游戏。
本文转载自亚马逊 AWS 官方博客
原文链接:
使用 AWS Lake Formation 配合 Amazon EMR 控制数据访问与权限
评论