级应用的结果集进行适当的控制,这一点可能甚至是更重要的。但这的确是一个挑战。
12.1.3 保密性
保密性是一种限制敏感信息仅对已授权的参与方可见的安全目标。当在网络中传输敏感信息时,可能的需求是该信息不能在传输过程中被窃听者看到。这通过网络加密来做到。某些组织需要磁盘上的加密,或“静止数据”的加密,其中将加密应用在数据存储的位置,降低了未保护数据被偷窃的风险。
如第10章中所学,Hadoop提供用于网络加密的能力和机制。然而,它不提供用于加密静止数据的能力。本章后面将进一步学习用于达成此目标的策略。
12.1.4 完整性
完整性意味着确保数据在传输或者静止时没有被改动。这通常使用消息摘要、哈希码或者数字签名附带功能等加密机制来实现。当配置Hadoop实现网络加密时,它会在传输中应用数据完整性。
静态数据的完整性是另外一个问题,而幸运的是,由于要确保数据复制的可靠性,Hadoop中已经内置了大量数据完整性机制。Hadoop健壮、分布式架构的一个自然的副产品就是数据完整性和可靠性。由于HDFS被设计为运行在商用硬件之上,因此为了容忍故障,它会将数据的副本放置在多个节点上。基于副本的数量,以及校验和检查与冲突检测的机制,它为保存在HDFS中数据集的完整性提供了一种健壮的机制。
然而,安全架构师们有时会表达这样的担忧,即如果Hadoop集群中的某个节点被攻破的话,恶意用户可能会修改数据,导致数据分析结果的偏差。这当然是一种可能性,但通过使用一种防御纵深的安全策略来补充Hadoop的安全机制(服务器/服务认证、完整性检查等),企业级解决方案架构师们就可以降低这种风险。
12.1.5 审计
大多数公司依赖于安全审计来提供合规性问题的保证,以及发现潜在的安全漏洞。当然可以将Hadoop配置为记录所有访问——NameNode保存本地日志,为了确保日志完整性,可以配置将审计日志写入到受保护的卷。各种组织可能有与认证和授权相关的更进一步的审计需求。
注意:
尽管关于经典安全目标的大多数描述通常都关注于“保密性”、“完整性”和“可用性”,但这里的讨论关注于认证、授权、保密性、完整性和审计,因为这些是企业级应用安全的关键方面。可用性(保证对Hadoop的访问)固然重要——从Hadoop的设计方式上就可以看出已经考虑了这一点。Hadoop集群是高可靠性的,对可用性有高度的跟踪记录,而且由企业中的其他安全机制(例如入侵检测系统)来补充,以防范拒绝服务(DoS)攻击。这在本章中没有涵盖,因为此讨论是面向企业级应用开发者的。
12.2 Hadoop安全没有为企业级应用原生地提供哪些机制
现在,你已经掌握了一些上下文和安全术语,从而为学习本章余下的内容做好了准备,但理解Hadoop没有原生提供的某些方面的企业级安全是很重要的。当然,Hadoop确实提供了某种级别的认证(Kerberos)、一定程度的授权(ACL和UNIX级别的文件访问权限),以及支持网络加密和完整性的能力。然而,Hadoop却没有提供某些方面的安全性。
12.2.1 面向数据的访问控制
除了针对HDFS上用户和组的ACL和基于POSIX的文件访问权限(读和写)之外,Hadoop并不原生地跟踪其数据的访问控制策略。如本章所述,许多组织会基于可能非常复杂的策略来限制访问。可能存在某些情况,其中Hadoop实现包含一些数据集,必须对这些数据进行保护,以禁止某些可能没有权限看到MapReduce作业和查询结果的数据分析师们访问。
以下是这方面的一些很好的示例:
● 某个健康护理组织可能有这样的访问控制需求,即内科医生只可以访问与他自己的病人相关的数据,而且是在正常的工作时间内(上午9点到下午5点)。这意味着要对病人数据进行访问控制,提供访问该数据的系统必须基于用户的角色(内科医生)、一天中的时间(正常工作时间)以及是否是属于该内科医生的病人记录来限制数据。
● 政府文档可能要使用被称为强制访问控制(MAC)的策略,基于用户的公民身份和/或安全许可证来限制访问。
● 为特定公司提供建议的商业顾问应该没有权限访问为竞争对手提供的计划和建议。这通常被称为“兴趣冲突”或者“长城”策略。
● 大学可能会从其各个部门和下属组织中收集学生数据,范围包括财政、医疗记录和校园警察。大学可能需要基于部门和角色(医疗、警察、财政)来控制对数据的访问。
在所有这些例子中,都无法简单地将Hadoop原生的安全机制用于实施这些访问控制策略。这些挑战中的一部分是结构性的,基于MapReduce算法的设计方式。导入的数据可能最初与访问控制策略相关联(在使用安全策略“标记”了数据的示例中)。然而,策略和数据之间的关联性是存在裂缝的,因为数据分布在HDFS上,而且后续会随着作业运行而与其他数据集组合。这可能会产生新的、组合的数据集,其中的访问控制策略并不完全清晰。
对于需要提供此级别访问控制的组织来说,这是一个有挑战性的问题,本章后面将会考察此问题。
12.2.2 差分隐私
在近40年中,人们已经对无意识地泄露统计数据库中的信息这一课题,以及与数据挖掘相关的安全和隐私顾虑进行了研究。2006年,微软研究院的CynthiaDwork博士将该数据科学领域定义为差分隐私。
差分隐私关注于保护多个数据集和数据库中的信息,以防止泄露。随着Hadoop和其他数据分析平台已经能够使用大量计算能力处理多个大数据集,差分隐私已经成为一个非常热门的主题,涉及严重的隐私和法律问题。这一点对于类似《健康保险携带和责任法案(HIPAA)》的法令和其他一些隐私保护数字法律来说是尤其适用的。
即使通过“匿名化”去除了隐私信息,Hadoop数据集包含的(或者与之耦合的)其他看上去无害的信息,也可能会泄露个体的身份或者其他敏感信息,导致违反隐私策略。可能存在的情况是,以某种方式组合多个Hadoop作业所产生的信息是不能对数据科学家或者Hadoop用户可见的。然而,Hadoop自身并不提供差分隐私。当然,这不仅会影响内部用户的访问控制,也会对与其他组织分享统计结果和数据集的组织产生严重的影响。
由于Hadoop是一个由许多组织使用的强大分析平台,因此可以将它用于发现你可能没有想到的信息。在将数据集发布给公众或者自己的商务伙伴之前,组织应该三思而行。组织可能也有对数据的内部控制——这取决于你的环境,要知道,某些Hadoop用户可能没有被授权访问其分析查询的某些结果。这曾是NSA的顾虑之一,NSA开发并在之后发布了Accumulo,作为Apache的开源项目,提供单元格级别的安全。
“差分隐私”问题示例
关于差分隐私的最著名案例之一发生在Netflix公司。2006年,Netflix出价100万美元,为其影片推荐系统寻求10%的改进,并发布了“匿名化”的训练数据集,数据集中包含50万订阅用户的影片浏览历史,以便参加竞赛的开发者们能够使用这些数据。此数据集含有Netflix订阅用户已观看影片的收视率,并删除了所有个人身份信息。
两位研究人员,来自Austin Texas大学的Arvind Narayanan博士和Vitaly Shmatikov博士,将Netflix的数据集与互联网电影资料库(IMDB)的review数据库连接在一起,实现了一个新的“反匿名化算法