亚马逊AWS官方博客
使用 AWS Lake Formation 配合 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权限的细粒度访问控制。
调整权限
这些账户可以与兼容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用户或角色在列层级实现访问控制。
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工具所支持的各类机器学习项目。