Hadoop数据安全和哨兵

像许多软件项目一样,安全性通常是事后的想法。 早期的Apache Hadoop使用模型基于在专用数据中心内处理大量公共数据(爬网网页)的计算机集群。 鉴于所收集的数据已经公开,因此保护数据及其结果的需要是实施过程中不必要的方面。

但是随着Hadoop的发展,使用它的使用模型也随之增长。 如今,不仅正在处理私有数据集,而且还将Hadoop应用于多租户场景,在该场景中,各种用户(每个人对原始数据和处理后的数据都有不同的需求)正在处理各种数据集。 Hadoop也越来越多地应用于敏感数据集,其中必须对数据进行加密以避免泄漏。 因此,现在将安全性视为Hadoop集群的组成部分。 在本文中,我将探讨Hadoop在安全性方面正在进行的一些有趣的工作。 我研究数据安全性,外围安全性和数据访问安全性。

大数据,隐私和数据漏洞

大数据带来更大的责任。 随着数据的增长以及使用该数据的应用程序和框架的增长,出现了必须解决的新漏洞。 与大数据有关的隐私问题最著名的例子之一发生在2006年。作为改进其电影推荐服务的竞赛的一部分,Netflix发布了一个大数据集供研究人员用于搜索更准确的算法。 数据集由Netflix内部数据组成,匿名后将其删除以删除可以直接识别客户的信息。 不幸的是,研究人员能够根据Netflix数据中的匿名评论和Internet电影数据库中的公开评论,从Netflix数据库中的用户ID识别用户。

这种情况说明,通过将信息与其他公共资源相关联,甚至可以将匿名数据追溯到真实用户。 Netflix的回应是从数据集中排除某些信息,但包括其他信息,例如用户的邮政编码,年龄和性别,但是这种方法也存在缺陷。 卡内基梅隆大学(Carnegie Mellon University)识别出,利用这些信息,可以在87%的时间内通过邮政编码,年龄和性别识别出一个人。

这种情况说明了大数据的一种危险。 即使尝试匿名化数据,仍然可以通过外部关联泄漏敏感或私人信息。 当数据集有必要的监管要求时(例如《健康保险可移植性和责任法案》 [HIPAA]),必须做更多的工作以避免可能产生的更严重的法律后果。

让我们从问题的描述开始,然后深入研究Cloudera的解决方案Sentry

Hadoop生态系统中的安全性

如今,Hadoop在文件系统级别支持强大的安全性。 回想一下,Hadoop分布式文件系统(HDFS)是在另一个本机文件系统(例如第三个可扩展文件系统[ext3])中实现的。 Hadoop的访问控制通过使用遵循UNIX®权限模型的基于文件的权限来实现。 尽管此模型在HDFS内提供文件级权限,但它缺少更多细粒度的访问控制。

例如,考虑一下HDFS中的一个文件,其中包含一组用户的电影评论。 此数据包含用户ID,邮政编码,性别,年龄,电影标题和评论。 在Hadoop中,访问是一种全有或全无的模型。 如果可以使用权限模型访问文件,则可以访问文件中的所有字段。 需要的是更细粒度的访问模型。 如果授予文件中所有数据更高的安全访问权限,则可以为数据的各个字段(例如,除用户ID和邮政编码以外的所有数据)提供较低的安全访问权限。 较低的安全性访问将泄漏用户信息的可能性降到最低,并且基于角色的各个字段的访问使得可以限制文件内的访问,而不是全部文件访问。

考虑到Hadoop实施中的数据安全性,总体问题将变得更加困难。 Hadoop及其底层文件系统是具有许多联系点的复杂分布式系统。 鉴于其复杂性和规模,将安全性应用到此系统本身就是一个挑战。 任何安全性实现都必须与整个体系结构集成以确保适当的安全性覆盖。

授权框架和RBAC

Sentry支持先前为基于角色的访问定义的模型,称为基于角色的访问控制 (RBAC),用于基于关系数据库形式的数据(数据库,表,视图等)。 RBAC模型提供了安全的企业大数据环境所需的多种功能。 第一个是安全授权 ,它可以对已认证的用户执行访问权限数据。 可以将用户置于角色下,然后赋予其数据访问权限。 此行为允许模型扩展以允许使用模板将用户分类为角色,而不是管理员必须为每个用户分配详细的特权。 此功能还简化了权限管理,减轻了管理员的负担,同时最大程度地减少了潜在的错误和意外访问。

此外,可以为用户配置特权管理,以便在数据库或架构级别将任务分发给多个管理员。 可以在数据库中控制对数据和元数据的细粒度访问控制。 例如,特定角色可以允许select数据,而另一个角色可以允许insert数据(在服务器,数据库和表范围内)。 以我的Netflix为例,这意味着对于不太严格的安全级别,可以定义角色以限制对个人身份信息的可见性。

最后,Sentry通过使用已集成到Hadoop中的现有且经过验证的Kerberos身份验证协议来实现身份验证。

使用HDFS,Hive和Impala的哨兵

图1展示了Sentry的基本体系结构。 正如您将很快发现的那样,它是为可扩展性而设计的,以支持各种基于Hadoop的应用程序,并为各种形式的数据提供程序提供了可移植性。

图1. Sentry的基本架构
该图显示了哨兵的基本架构

如今,Cloudera已实现了对许多重要的开源结构化查询语言查询引擎的支持,包括Apache Hive(通过基于HiveServer2节俭的远程过程调用接口)和Cloudera Impala。 通过为该特定应用程序实现的一组绑定来保护每个应用程序。 这些绑定与策略引擎一起使用,以评估和验证预定义的安全策略,并在批准访问后通过策略抽象来获得对基础数据的访问。 如今,提供了基于文件的抽象,该抽象集成了对HDFS的支持或对安全策略对本地文件系统的访问。

那么,这对Hive和Impala意味着什么? Sentry允许细粒度的授权,它具有对服务器,数据库,表和视图定义安全控制的能力,包括为视图和表指定选择特权,在表上插入特权以及在服务器上转换特权的能力。 每个数据库或模式可以具有单独的授权策略。 Sentry还为Hive的元存储体系结构提供支持。

为了支持更大的可扩展性,Sentry可以保护新应用程序(例如Apache Pig)(通过一组Pig绑定),并允许访问新的抽象来访问安全策略(例如数据库)。 全部实现为可插拔接口。

Sentry现已作为Cloudera CDH 4.3版的一部分提供,可与Hive和Impala 1.1版一起使用。 您也可以作为附件从Cloudera网站单独下载它。 Sentry是根据Apache 2许可发布的。

Hadoop内部安全性的其他方面

Sentry提供了基于角色的授权框架,但这并不是Hadoop唯一的安全创新。 让我们看看为保护和控制对大数据的访问而正在进行的其他一些工作。

犀牛计划

Rhino项目是Intel的开源项目,旨在通过其他保护机制来增强Hadoop。 目标是填补代表Hadoop堆栈内部不安全性的空白,并在Hadoop生态系统内提供多组件安全性。 为此,英特尔有几个开发项目,涉及与安全性相关的各种主题,并侧重于加密功能。

在Rhino下正在执行的各种工作中,一些最有趣的涵盖了新的加密功能,用于通过多种使用模型对文件进行加密和解密。 例如,为密码编解码器添加通用抽象层可实现一个应用程序编程接口(API),通过该应用程序编程接口可以在框架内注册和使用多个密码编解码器。 为了支持此功能,还在设计一个关键的分发和管理框架。

Hadoop加密文件系统(称为Hadoop CFS )也正在建设中,该系统将为HDFS中的文件提供低级加密服务。 在此级别上,任何Hadoop用户都可以透明地利用新的数据安全性(从MapReduce应用程序到Hive,Apache HBase和Pig)。

其他正在建设的服务包括快照和磁盘上的提交日志的透明加密以及新的Pig功能,以支持可感知加密的加载和存储功能。

Apache Knox网关

Apache Knox网关为Hadoop提供了外围安全解决方案。 在Sentry提供对数据的细粒度访问控制的地方,Knox Gateway提供了对Hadoop服务的受控访问。 Knox网关的目标是为Hadoop群集提供单点安全访问。 该解决方案被实现为网关(或网关的小型集群),该网关通过具有表示状态传输(REST)的API公开对Hadoop集群的访问。 网关在用户和Hadoop群集之间提供防火墙(请参见图2),并且可以管理对运行不同Hadoop版本的群集的访问。

图2. Apache Knox网关的外围安全性
该图显示了Apache Knox网关的外围安全性

Knox网关是Sentry的补充安全解决方案,提供了外部访问安全级别。 作为非军事区中的网关,Knox网关提供对由网络防火墙隔离的一个或多个Hadoop群集的受控访问。

委托令牌

在Apache Knox网关和Sentry提供外围和数据访问安全性的地方,缺少的一个要素是来自MapReduce任务的HDFS数据访问。 Oozie使用的一种解决方案依赖于委托令牌的概念。 委托令牌是一种两方身份验证协议,使用户可以使用Namenode (使用Kerberos)对自己进行身份验证; 在收到委派令牌后,用户可以将令牌提供给JobTracker以便这些用户获得的Hadoop作业可以依靠令牌来安全访问HDFS中的数据。

Oozie是用于管理Hadoop作业的工作流调度程序系统,在将Oozie作业提交到Hadoop时会使用委托令牌。 根据定义,经过身份验证的用户向Oozie提供了一份工作,从而导致JobTracker请求委托令牌。 作为作业提交的一部分,为将来的Hadoop工作提供的委托令牌访问HDFS。 作业的所有结果MapReduce任务都使用关联的委托令牌来完全保护所得的工作。

委派令牌依赖于一种比Kerberos使用的三方身份验证更简单,更高效的两方身份验证。 这种差异最大程度地减少了Kerberos流量,并提高了可伸缩性,并将Kerberos资产上的负载最小化。

更进一步

由Cloudera为Apache Incubator贡献的Sentry,在可扩展身份验证框架方向上迈出了重要一步。 随着Hadoop集群的增长及其多租户的增加,Sentry将为保护敏感数据提供基础,并最大程度地减少以前可能发生的泄漏的可能性。 对于必须遵守严格的数据法规(例如HIPAA或Sarbanes-Oxely Act [SOX])的那些医疗保健,财务或政府部署,Sentry是Hadoop生态系统的一个受欢迎的补充。 尽管Sentry不能解决Hadoop等复杂系统所带来的所有问题,但这是朝着正确方向迈出的一步。 结合其他Hadoop安全项目(例如Knox安全网关和Rhino),Hadoop越来越靠近具有企业功能的安全平台。


翻译自: https://www.ibm.com/developerworks/security/library/se-hadoop/index.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值