仅供参考:HDP2.5中的动态列屏蔽和行级过滤


随着世界各地的企业将越来越多的敏感数据带入Hadoop数据湖,在不牺牲强大安全原则的情况下平衡数据访问民主化的需求变得至关重要。根据Securosis最近的一份研究报告,“Hadoop(大部分)已经达到了与旧的关系平台同等的安全性,这在20年的发展历程中是一个很好的开端。”尽管取得了这些进步,但数据匿名化和数据安全继续给需要从监管、竞争或隐私角度保护敏感信息的企业带来有趣的挑战。

霍顿工程继续投资于为我们的霍顿工程数据平台客户提供无缝和强大的数据安全功能的功能,以减轻他们的安全管理负担,同时为他们提供有效的数据访问。数据湖需要新的模式来访问和管理海量数据。数据屏蔽和过滤功能为整个组织的消费者提供了一种管理数千个单独数据视图的可行方法。与将数据不灵活地映射到用户组相比,这种方法提供了一种呈现定制数据视图的灵活方式。

在这个由两部分组成的博客中,我们将回顾Apache Ranger中的两个新的数据保护功能——存储在Apache Hive中的数据的动态列屏蔽和行级过滤。这些特性已经作为我们最新的HDP 2.5平台版本的一部分进行了介绍。在第一个博客中,我们将回顾基本原理、使用场景和背景,而在第2部分中,我们将介绍这些新特性的技术实现。

动态数据屏蔽

奥利佛·文德尔·霍马斯:“没有戴任何我们意识到的面具,我们对每个朋友都有一张特殊的脸”

数据屏蔽技术旨在保护数据的同时保持其有用性。虽然数据是现代数据驱动型企业的血液,但企业间数据访问的普遍性和规模可能带来严重风险:信用卡号、个人身份信息(PII),如电子邮件地址、社会安全号码、国家身份号码、医疗保健信息和传统的知识产权都是攻击者的目标。随着企业通过从其他业务应用程序中获取数据并将其集中在Hadoop平台中来增长和扩展Hadoop数据湖,敏感数据集正以前所未有的速度出现和扩展。此外,对这种数据湖的数据访问的民主化大大增加了企业内部的攻击面。

为了降低泄露此类数据的风险,必须通过授权策略消除不必要的访问,同时根据用户访问此类数据的环境,提供适当匿名的敏感数据版本。动态数据屏蔽技术通过在运行时(即在访问或使用时)用非敏感假名或代理替换敏感信息来提供这一精确的数据安全层,但这样做的方式是,代理的数据看起来和行为都像原始数据。这意味着此类非敏感代理数据可以在业务流程中使用,而不会影响支持应用程序或底层数据存储。动态数据屏蔽作为数据引导器,在敏感信息被实现此类业务流程的Hadoop应用程序访问时,为敏感信息提供保护。

通过Apache Ranger进行的动态数据屏蔽使安全管理员能够确保只有授权用户才能看到他们被允许看到的数据,而对于其他用户或组,相同的数据被屏蔽或匿名化以保护敏感内容。动态数据屏蔽过程不会物理地改变数据,也不会复制数据。原始敏感数据也不会离开数据存储,而是在呈现给用户时被混淆。HDP 2.5中包含的Apache Ranger 0.6引入了一种称为“屏蔽策略”的新型授权策略,可用于定义哪些特定数据字段被屏蔽,以及如何匿名化或假名化特定数据的规则是什么。例如,当向客户服务人员显示信用卡号码时,安全管理员可以选择屏蔽信用卡号码,使得只有最后四位数字以XXXX-XXXX-XXXX-0123的形式呈现。敏感数据也是如此,如社会安全号码或电子邮件地址,这些数据根据数据屏蔽规则被屏蔽为不同的格式。

行级过滤

"没有两个人以同样的方式阅读同一本书,有着同样的观点!"–埃德蒙·威尔逊

随着企业数据被整合到数据湖中,具有不同使用环境、使用模式和不同敏感度级别的数据的混合越来越多。安全管理员面临着越来越多的挑战,他们需要提供一种合理的策略,来提供对这种混合使用环境中相关数据的访问,这种环境适合特定用户的特定使用环境。这意味着他们不仅需要提供对列的细粒度访问,还需要根据外部法规、内部控制策略以及隐私考虑,限制和划分数据库中允许特定用户查看和使用的行集。

行级安全性使安全管理员能够根据用户属性(如他们在特定组中的成员资格或他们查询数据的运行时上下文)精确定义用户可以访问数据库表中的哪些行。这一功能增强了HDP的可靠性和健壮性,为对Apache Hive表的数据访问提供了更高的安全性。行级安全性通过将访问限制移动到Hive层来减少安全系统的表面积。现在,每当从Hive表中访问数据时,Hive都将可靠且高效地应用这些限制,而不考虑访问层。行级安全性简化了行级数据分段的创作和管理,并提供了对特定筛选器将对哪些行进行操作的细粒度控制。行级过滤简化了运行在Hive上的应用程序的安全性,因为它引入了行级分段的无缝后台执行,而不必将此逻辑添加到查询的谓词中。

行级过滤具有跨行业的数据保护应用。下表列出了一些行级筛选的示例应用场景。

医疗保健医院可以创建一个安全策略,允许医生只查看自己患者的数据行,并允许保险索赔管理员只查看其特定站点的特定行。金融服务银行可以根据员工的业务部门、区域设置或员工的角色创建策略来限制对财务数据行的访问(例如:只有财务部门的员工才允许查看客户发票、付款和应计数据;只有欧洲人力资源员工可以查看欧洲员工数据)。信息技术多租户应用程序可以创建每个租户数据的逻辑分离,这样每个租户只能看到自己的数据行。

HDP2.5附带的Apache Ranger 0.6引入了一种称为“行过滤策略”的新型授权策略。此类策略作为后台查询过滤条件运行,将显示在配置单元查询输出中的配置单元表行集缩小到基于策略的相关授权集。实际上,这些策略过滤条件始终处于打开状态,并在访问时进行评估,以自动消除安全管理员手动添加这些过滤谓词或创建多个视图以在Apache Hive中实施行级安全性的需要。

用例示例

假设一家医疗保险公司健康公司在美国和欧盟之外运营。在HealthFul的数据湖中,所有地区的所有顾客的数据混合在一个蜂巢表中。这些数据包括许多敏感方面,如客户的国民身份证(美国人的社会保险号码,或德国人的德国人身份证)、信用卡号码、医疗记录号码(MRN)和保险单号码。由于该公司经营的商业环境,他们受到欧盟隐私条例以及HIPAA的约束。欧盟隐私法规定,欧盟个人数据只能由欧盟人员访问。HIPAA要求对敏感的医疗和PII信息进行适当的加密和匿名化。下图说明了这种情况以及如何使用Apache Ranger的功能来提供数据安全性:

Screen Shot 2016-09-07 at 4.25.47 PM

健康可以在Apache Ranger中设置策略,为通过Ranger的屏蔽策略为其客户的健康策略提供服务的美国客户支持人员动态屏蔽相关配置单元列中的敏感内容。该公司还可以利用Apache Ranger中Hive表的行过滤功能对行进行分段,这样美国支持团队只能查看美国客户的记录,而欧盟人员只能查看欧盟客户的记录。

在本博客的第2部分,我们将详细介绍如何在Apache Ranger中为Hive数据实现行过滤和动态列屏蔽安全策略,以及如何通过示例场景设置和验证这些策略。