精华内容
下载资源
问答
  • 使用插件在网页翻译上去除论文中的换行符翻译论文时的问题该插件信息:下载和更新链接插件名可使用的功能:可使用的网页翻译页面:如何使用本插件:注意事项:已知Bug:声明: 本方案与现有搜索到的方案不同,搜索到...


    本方案与现有搜索到的方案不同,搜索到的方案大部分是要运行Python文件,利用Python获得去除后的文本,然后再粘贴至网页翻译页面的翻译框中。个人感觉这样就比较麻烦了。本方案可以直接粘贴原文至翻译框,点击按钮即可去除换行,并提供复制按钮,可以方便复制翻译后的文本。

    翻译论文时的问题

    对于像我这样英文水平有限的人来说,在翻译英文论文的时候,一般需要从PDF中复制出来,但结果往往像下面这样。由于复制时,存在换行,导致翻译就断节了,很是烦扰,手动去除换行又太麻烦了,于是想到了使用插件去除换行的办法,给网页上添加了“除换行”的按钮:

    存在换行符时的翻译
    点击“除换行”的按钮,去除换行后的效果:
    使用插件一键去除换行

    该插件信息:

    本插件是本人编写的一个谷歌浏览器插件,可在谷歌浏览器内使用(以及使用谷歌浏览器内核,并支持插件的浏览器,如QQ浏览器,360浏览器等)。添加成功之后的效果就如上图所示(若没有出现,请刷新试一下)。

    该插件不仅能够去除换行,也有其他可能用到的功能,请见下方描述。

    已上传 Chrome 网上应用店(但选择了非公开发布方式,即不能搜索找到,但可以通过链接进入)
    目前已有二百余位小伙伴安装了本插件,感谢大家的信任和厚爱。

    下载和更新链接

    Github地址: https://github.com/And-ZJ/TranslateHelper
    Chrome地址:网上应用店安装地址

    为方便下载安装,上传部分版本到CSDN上,CSDN可能要资源积分,而上面两种方式均为免费获取该插件。

    CSDN上的版本0.8.4(已上传待审核)
    图标是蓝色的,里面有字“助”。
    (之前的版本在新的谷歌翻译网页上已失效)

    如果链接失效请及时告知。

    下文信息可能不是最新,最新描述请见上述Github地址。

    插件名

    翻译助手 TranslateHelper

    用途

    在常见的网页翻译网页的页面上,提供如下方便实用小功能:

    1. 点击“格式化”按钮,可自动去除待翻译文本中的换行符(还可勾选不同的细化功能选项)。
    2. 可设置“格式化”按钮的键盘快捷键。
    3. 点击“复制”按钮,一键复制翻译结果。
    4. 翻译网页上按下 backspace 键,焦点将回到原文输入框。
    5. 按下 tab 键,输入框的发音按钮自动获取焦点,此时再按下 enter 键,即可发音。此处只针对原文输入框。
    6. 同时按下 shift 和 backspace 键(应先按 shift 键),可直接清空原文输入框内容。

    可使用的网页翻译页面

    1. 百度翻译:https://fanyi.baidu.com/
    2. 谷歌翻译:https://translate.google.cn/、https://translate.google.com.hk/、https://translate.google.com
    3. 有道翻译:http://fanyi.youdao.com/
    4. 必应翻译:https://cn.bing.com/translator/
    5. 搜狗翻译:https://translate.sogou.com/、https://fanyi.sogou.com/

    如何在线安装

    可能只有Chrome浏览器能直接从应用商店安装。
    步骤如下:

    1. 进入 Chrome网上应用店安装地址
    2. 点击“添加至Chrome”。
    3. 在弹出的“要添加‘翻译助手’吗?”的对话框中,选择“添加拓展程序”。
    4. 等待片刻安装完成。

    如何在线更新

    似乎会自动更新应用店的新版本。
    如果在 Chrome 网上应用店 存在新版本,而没有自动更新时,
    若想要手动更新,则其步骤如下:

    1. 单击浏览器右上角“三点”选项按钮(通常在关闭浏览器的“×”按钮的下方)
    2. 选择“更多工具”–>“拓展程序”
    3. 勾选页面右上方“开发者模式”。
    4. 点击新出现的“更新”按钮,等待出现左下角出现“拓展程序已更新”提示即可。
    5. 取消选中“开发者模式”。

    如何本地安装

    本安装方法,可能不适合最新版浏览器,但设置起来大同小异,请耐心设置。

    1. 首先,在 Github 上下载本插件。请点击页面上的“Clone or download”按钮后,再点击“Download ZIP”。下载到本地后,请解压,并最好存放到您常用的软件安装位置,以免误删除。

    针对谷歌浏览器的安装方法:

    1. 单击浏览器右上角“三点”选项按钮(通常在关闭浏览器“×”按钮的下方)
    2. 选择“更多工具”–>“拓展程序”
    3. 勾选页面右上方“开发者模式”
    4. 点击“加载已解压的拓展程序”
    5. 选择本文件夹所在目录(或者是选中 manifest.json 文件)
    6. 此时本插件已可以在上述页面(已打开的页面需要刷新)使用

    针对QQ浏览器的设置方法(相关翻译页面需运行在极速模式下)

    1. 打开QQ浏览器,进入“设置”,左侧选择“我的应用”图标。
    2. 上方选择“管理我的应用”。
    3. 右侧勾中“开发者模式”。
    4. 左侧选择“加载已解压的拓展程序”,弹出文件夹选择框。
    5. 选择本插件所在的文件夹,点击“确定”即可.

    其他可使用 Chrome 插件的浏览器设置类似(显然不支持 Microsoft Edge 或 IE 类浏览器)。

    如何本地更新

    若需要使用已发布到 Github 上的新版本,则需要手动更新,该插件不支持由Github自动更新。
    更新步骤如下:

    1. 按卸载插件的步骤,卸载本插件,并删除掉之前的本地旧版本代码。
    2. 按本地安装的步骤,下载并安装最新版本插件即可。

    如何卸载插件

    如果您不需要使用本插件了,以Chrome浏览器为例,卸载步骤如下:

    1. 鼠标右键点击该插件图标。
    2. 在弹出菜单中,选择“从Chrome中移除…”,然后点击“删除”即可。
    3. 如果是本地安装,则建议您再删除本地的代码。

    如何对本插件进行个性化功能设置

    本插件会在浏览器右上角显示一个蓝色背景、内有文字“助”的图标,如下所示。(老版本是白色背景,内有文字“翻译助手”)
    插件图标

    当鼠标移到插件图标上方时,停顿一会儿,便会提示插件名字,即“翻译助手”。

    通过鼠标左键点击本插件图标,可直接对“格式化”功能进行快速设置。

    通过鼠标右键点击本插件图标,在弹出菜单中,点击“选项”按钮,可进行更多详细的功能设置。
    具体可设置内容请参考截图。

    请注意以下事项:

    1. 一般更改设置并保存后,对于已打开的网页翻译界面,需要刷新后才能应用新的设置。
    2. 默认的配置是只打开了“格式化”、“格式化的快捷键”和“复制翻译结果”这三个功能,其他功能需在“选项”设置中勾选。
    3. “格式化”功能的默认配置是旧版本经典的“除换行”功能,也可以通过提供的细化功能设置,实现一些其他妙用。

    部分截图展示

    下面是部分截图,可能与最新版本或实际效果间存在些许差异。

    在谷歌翻译网页上的样子

    在谷歌翻译网页上的样子

    鼠标左键点击出现的设置

    鼠标左键点击出现的设置

    鼠标右键点击出现的选项设置

    鼠标右键点击出现的选项设置

    声明

    1. 本插件开源,仅限学习交流,例如学习插件的简易开发。
    2. 如使用本插件进行不当行为,本人不承担责任。
    3. 如对上述网站构成侵权,请立即使用下方联系方式进行联系删除。
    4. 本插件不采集任何个人或团体的公共或隐私信息,也不使用除Chrome以外的网络。
    5. 从 Chrome 网上应用店 可免费获取本插件内容。
    6. 如需联系作者(例如:不能使用或出错了),可给下方的邮箱发邮件。

    本插件网络使用问题详述

    1. 本插件完全可以离线运行(但是翻译网页估计不能离线运行),运行时不需要从网络下载任何代码文件,也不会在联网时,向第三方网络传递消息。

    2. 所谓第三方网络,是指除Chrome提供的API之外,可能实现网络通信的个人或企业网络。

    3. 本插件仅利用Chrome提供的同步API接口,将您对本插件的更改设置保存并自动同步到多设备上,方便您的使用。例如您在某台计算机上对本插件设置进行了更改,那么,在另一台计算机的同账号下会自动同步该设置。

    4. 该Chrome同步API接口可能会在联网之后,自动向其服务器传递消息,但作者不知晓、也不能控制此API在何时向何处发送本插件所期望其保存的内容。

    5. 本插件仅期望通过该同步API接口保存和读取,您对本插件所进行的个性化功能设置。例如,保存是否选中“格式化”功能的标记。

    6. 本插件不会向同步API接口或第三方网络发送,任何与您访问的网页或本地计算机文件等公共或隐私信息有关的内容。

    7. 此外,当您在新的Chrome浏览器上登录了您的账号,该账号可能会自动下载并安装本插件,此为Chrome自动同步您的插件,就像自动同步您的书签一样,是一种方便用户使用的自动同步功能。此过程本插件是无法控制的,故不是本插件的“流氓”行为,如果您需要进行控制,似乎可以在您账户的同步选项中进行控制。

    8. 代码完全开源,您随时可以检查。

    注意事项

    1. 本地安装启用开发者模式后,每次打开谷歌浏览器,可能会提示:
      “请停用以开发者模式运行的拓展程序”等内容。
      这是正常现象,不是本插件有任何危害计算机或浏览器或网页的问题。
      您可以点击“x”按钮,不理会此消息。
      也可以在需要时去“拓展程序”中,启用本插件,而在不需要使用时,停止本插件。
      若从 Chrome 网上应用店 安装本插件,则并不需要启动开发者模式,也不会有此提示。

    已知 Bug

    1. 谷歌翻译界面有时候存在无法出现“格式化”按钮的情况,暂不清楚原因。
      出现场景1:设置谷歌翻译界面为主页后,初次启动浏览器容易发生。
      出现场景2:由于网络原因谷歌翻译页面加载时间过长时,偶尔出现。
      一般刷新下就可以。
      如果刷新无效,可右键点击本插件图标,选择“选项”,选择不同的“嵌入模式”。
      若上述方法不能解决问题,可联系作者,或查看Github页面是否已更新版本。

    不完善之处

    1. 使用复制功能时,若翻译结果中存在多行,则复制结果里会多出换行。
      此复制功能采用 clipboard.js 实现,该库的原生功能会造成此效果,暂没有解决。
    2. 若输入文本含有中文,目前仅在单空格两侧都是中文时,才会删除空格,不会影响英文单词间的空格。
      但同时也注意到,如果中文和符号中间隔了空格的情况,并未处理。
    3. 如果原文含有 tab,tab 目前默认处理成4空格,如需保留tab,请在设置中关闭此选项。
    4. 抽了点时间,进行了大改,代码有点丑陋也没有经过充分测试,可能存在问题。

    使用到的其他库

    1. jquery
    2. clipboard
    3. jquery.hotkeys
    4. bootstrap

    也许有遗漏,在此全部感谢。

    联系作者

    Github:And-ZJ

    CSDN:And_ZJ

    Email:ZJ.Cosmos@gmail.com

    其他贡献者

    特此感谢各位对本插件的建议。

    @liyangorg

    同时,也感谢其他小伙伴对本插件的关注和信任。

    还想了解更多?

    请点击访问 该插件的Github地址

    展开全文
  • ● 考察用于构建企业级安全解决方案方法    第10章讨论了Hadoop安全性以及Hadoop中用于提供安全控制的机制。当构建企业级安全解决方案(它可能会围绕着与Hadoop数据集交互的许多应用程序和企业级服务)时,保证...

     本章内容提要

    ●    理解企业级应用的安全顾虑

    ●    理解Hadoop尚未为企业级应用提供的安全机制

    ●    考察用于构建企业级安全解决方案的方法

     

           第10章讨论了Hadoop安全性以及Hadoop中用于提供安全控制的机制。当构建企业级安全解决方案(它可能会围绕着与Hadoop数据集交互的许多应用程序和企业级服务)时,保证Hadoop自身的安全仅仅是安全解决方案的一个方面。各种组织努力对数据采用一致的安全机制,而数据是从采用了不同安全策略的异构数据源中提取的。当这些组织从多个源获取数据,接着提取、转换并将数据加载到Hadoop时,随着结果数据集被导入到企业级应用中,安全挑战甚至变得更加复杂。例如,当从Hadoop作业中产生的数据集代表着多个数据集的组合时,应该如何对初始数据集实施访问控制策略?

    更为复杂的是,许多组织发现Hadoop提供的安全级别不能满足它们的安全规章需求,而且它们必须补充Hadoop的安全模型。例如,为了满足其规章要求,一些组织需要加密静止的数据——这是Hadoop原本不提供的功能。还有,其他一些组织要求Hadoop查询为进行分析查询的数据科学家提供某个粒度级别的、基于属性的访问控制。尽管这当然包含在Hadoop安全未来的路线图中(如第10章中的讨论),但当前对这些功能的需求远远超过了Hadoop自身的支持能力。

    鉴于这些挑战,必须使用一种整体的(而非以Hadoop为中心的)安全方案来开发企业级解决方案。当然,可以使用Hadoop中的原生安全机制来满足部分安全需求,但在许多组织中,你会发现Hadoop的安全机制并不能解决所有问题。必须为使用Hadoop的企业级应用策划、设计和补充其他安全机制,请查看企业级“蓝图”。

    如第10章中的讨论,Hadoop在设计和开发时没有考虑安全性,而且在很长的一段时间里,Hadoop实现都几乎没有安全性。社区早期所采用的一个假设是Hadoop集群将由相互协作的、可信的机器组成,并由在可信环境中的可信用户使用。从较早的时间起,Hadoop社区采用了一种新的安全架构,使用了新的安全控制(如第10章中的讨论),但许多需要显式访问控制限制、保密规则、隐私保护和遵从法规的组织仍然不能使用Hadoop生态系统中的基础工具来满足其安全需求。由于想要使用Hadoop的功能,因此这些组织不得不将安全方案构建到其他工具中,或者设计不同方式的Hadoop使用方案。

    本章是为那些想要使用Hadoop,但却必须满足安全性要求的企业级应用开发者而编写的。重要的是要理解大多数企业级应用都需要遵从组织的安全需求。这可能包含了与身份和访问管理基础设施、其他网络基础设施的相互结合,也可能意味着要应用尚未与“新来的”Hadoop集成的其他安全控制。本章给出了用于满足这些需求的方法论和可能的解决方案。

    本章最开始简要地概述开发使用Hadoop的企业级应用时可能遇到的安全顾虑。接着讨论Hadoop安全尚未提供的机制,并给出了一系列用于构建使用Hadoop的企业级安全解决方案的方法,并包括一些实际示例。最后,本章简要地涵盖了可以在Hadoop发行版中使用的另外一个工具所提供的安全性——该工具是ApacheAccumulo,它是一个高度安全的数据存储和检索系统,由美国国家安全局(NSA)最初构建在Hadoop之上,用于细粒度访问控制的目的。

    12.1  企业级应用的安全顾虑

    当构建Hadoop解决方案时,考虑保证Hadoop自身的安全(如第10章中的讨论)并不是唯一重要的事情,理解安全策略的蓝图和以数据为中心的视角也很重要。

    正如在图12-1中看到的那样,必须要理解Hadoop数据生命周期。当构建Hadoop解决方案时,会存在一个过程,即从信息源获取数据集、将数据集加载到Hadoop集群、运行查询和分析,以及使用结果集。随着数据的流动,安全架构师的目标就是确保在整个数据生命周期中实施了全部的访问策略。

    不考虑涉及的工具,数据从各式各样的数据源提取出来、转换成某种常用格式并加载到Hadoop集群的HDFS上,这通常被称为提取(Extract)、转换(Transform)和加载(Load)过程(ETL过程)。数据分析师接着运行一系列MapReduce作业,并执行产生结果集的查询,而结果集通常又反过来用于企业级应用。

    这里面临的挑战是多方面的。你必须能够在数据穿越整个生命周期的过程中保护它,以遵从原始的安全策略。由于数据要经过提取、加载并与集群机器上的其他数据集相组合,而且其他应用程序还会使用结果集,因此这可能会是一个挑战。

    图12-1  Hadoop数据生命周期中的安全顾虑

         图12-1很好地概括了本章所考察的一些顾虑。要构建涉及Hadoop的企业级安全解决方案,架构师们必须理解信息安全基础,以及如何应用它们。这里需要对用于Hadoop解决方案的大量安全目标进行一些解释,而且理解最佳实践取决于对安全顾虑和相关术语的理解。此讨论的目的不是给出一个详尽的清单或者解释每一个安全顾虑,而是提供一个对应于安全目标的简要信息安全词汇表,这些都是企业架构师需要了解的。每个目标中都有术语的定义,因而可以理解它们为什么在Hadoop上下文中很重要。

    12.1.1  认证

         认证意味着验证某个主体的身份。主体可能是某个系统中的用户、应用程序、任务或者其他“执行者”。如第10章的讨论,可以将Hadoop配置为使用Kerberos来认证用户、服务和Hadoop集群中的服务器。认证可以为用户和服务所声称的身份提供一定程度的保证,并且阻止用户、任务和服务被恶意系统冒充。

         还应该提到的一点是,并非每个组织都有用于在Hadoop之外进行认证的企业级Kerberos部署。企业级应用可能需要将其他身份和访问管理基础设施进一步集成到自身的解决方案中。

    12.1.2  授权

    授权意味着确定某个主体有权限做什么。主体的身份在认证中验证之后,系统必须确定主体的授权凭据,并将它们与既定的授权策略相比较来提供对被请求资源的访问。如第10章中的讨论,Hadoop当前提供某个级别的访问控制,通过使用访问控制列表(ACL)来表达对Hadoop某些方面的访问控制策略,并使用类似UNIX的文件访问权限来表达所有者和组用户的访问权限。

    除了Hadoop提供的机制之外,大多数企业组织还有用于授权的额外控制。例如,一个组织可能有以下所列举的一个或多个机制:

    ●    轻量级目录访问协议(LDAP)目录或活动目录(AD)实例——用于为主体保存组、角色和访问权限。

    ●    属性服务——将属性用作主体的授权凭据。

    ●    安全令牌服务(STS)——用于发放与主体授权凭据相关的令牌,以及用于发放事务中的授权决策。

    ●    策略服务——使用一些标准,例如可扩展访问控制标记语言(XACML)和安全断言标记语言(SAML),来表达资源的访问控制策略,并为主体提供访问控制决策。

    使用Hadoop的企业级解决方案可能需要基于自己组织的企业级访问控制策略来控制对数据集的访问,这通常意味着要使用其他机制来补充Hadoop原生的授权控制。

    需要记住的是,在整个数据生命周期中保持一致性的授权很重要。如果原始数据源有对数据的访问控制策略,那么对你来说很重要的一点就是为对这些数据运行查询的数据科学家们提供相同的访问控制。对所有后续导入到企业级应用的结果集进行适当的控制,这一点可能甚至是更重要的。但这的确是一个挑战。

    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数据库连接在一起,实现了一个新的“反匿名化算法”。他们发表了研究论文,阐述了可以从数学上辨别出Netflix发布的数据集中大部分用户的身份。基于用户在IMDB中仅少数几部影片的收视率,研究人员展示了他们的算法能够识别出Netflix数据集中相同的个体,并获取了Netflix订阅用户在2005年以前完整的影片浏览历史,导致了与订阅用户宗教信仰、性取向和政治倾向相关的潜在的隐私泄露。其结果是,一位Netflix订阅用户起诉了Netflix,声称其发布数据的行为违反了《视频保护隐私权法案(VPPA)》,并“暴露”了她是女同性恋。Netflix于2010年花费900万美元平息了这场诉讼。

    与此同时,AOL发布了一个“匿名化”的搜索引擎日志数据集,用于研究目的,而纽约时报的一位记者交叉引用该数据集和通信录列表,能够识别出用户的身份。这暴露了AOL用户三个月内的搜索历史——其中一些是非常令人尴尬的。其结果是AOL的首席技术官(CTO)辞职、两名AOL员工被解雇以及一场针对公司的集体诉讼。

    还有不胜枚举的其他例子——MIT的一位研究人员在将一个“匿名化”的州保险数据库与公开可用的州选举注册记录一起分析时,发现能够从该数据集中识别出其州长的医疗记录。

    这些例子演示了手头的问题,以及一起使用数据集中的信息会如何潜在地违反隐私法律、规章,并绕过对用户的访问控制。通过使用这些相同的方法,你的内部Hadoop用户也许能够绕过安全限制,如果没有设置适当的控制的话。

    12.2.3  加密静止的数据

    由于针对保存在磁盘上和终端用户设备上信息的保密性存在很多威胁,因此许多有敏感信息的组织都有要求加密静止数据的策略。此种策略的多数原因与恶意软件的威胁、数据的敏感性或保密性、或者法律规章相关。例如,HIPPA具有与加密电子保护的健康信息(EPHI)中静止数据相关的指导意见,并且其他保护个人可识别信息(PII)的法律也在发挥作用。

    一些组织正在推动加密HDFS上的静止数据,Hadoop并不原生地提供该功能。然而,可以将第三方库和其他产品与Hadoop一起使用来满足这些需求,而且Rhino项目(如第10章中的讨论)也正在致力于解决Hadoop中的这个问题。

    12.2.4  企业级安全集成

    大多数公司在企业内部都有各式各样的安全基础设施,包括用于认证的公钥基础设施(PKI)组件、活动目录实例、安全令牌服务、属性服务和用于认证用户的策略服务器,提供授权凭据,并做出和实施访问控制决策。Hadoop的原生安全机制并不总能让你与各个组织的安全基础设施“适配”或集成。当安全需求指定要将企业级应用与组织的安全基础设施集成时,安全架构师的工作就是设计一个解决方案,能够在使用Hadoop的同时,使用其他工具与安全基础设施相集成。

    12.3  保证使用Hadoop的企业级应用安全的方法

    近来,大量的项目、Hadoop插件和专门的Hadoop发行版已经承诺了要增强Hadoop的安全性。Hortonworks的Knox Gateway、Intel的安全增强型Hadoop发行版和诸如Rhino等开源项目已经发布,并实现了帮助企业级应用开发者满足安全需求的承诺。无论如何,重要的是要记住每个企业级应用都是不同的,而且每个部署中的安全需求也将是不同的。

    在讨论细节之前,重要的是要理解一些一般的基础知识和指南,用于为使用Hadoop的企业级应用提供安全保证。当大量的项目都只关注于特定的安全机制,而不是遵从某些适用于任何项目的、常识性的指导方针时,它们在运行过程中都会出现问题。

    基于客户的任务和需求,每个项目的企业安全策略都可能不同,但却都遵从这些常识规则:

    ●    确定安全需求——理解安全需求很关键。对于认证、访问控制、审计、加密、完整性和隐私的需求将由组织自身来决定。需要问的一些问题可能会围绕着Hadoop MapReduce作业结果数据集的安全性,以及Hadoop运行时自身的安全性(为进行查询和运行作业的应用程序/用户提供访问控制)。与适当的决策制定者会晤来理解哪些是需要的,以便可以做相应的准备。

    ●    从一开始就设计安全性——这些类型项目最大的问题之一就是到最后才尝试改进安全性,这样的实践导致了短暂且脆弱的架构,通常会注定项目的失败。如果项目中有本章所讨论的安全需求,但却认为可以只关注数据分析而后续再尝试考虑保证解决方案安全性的话,那么会有极大的失败风险。应该关注于开发可以与有关当局进行讨论的初始总体安全架构,以获得概念上的认可。

    ●    不要使用不需要的安全性——如果没有要达到本章所讨论的某些目标的安全需求,那么就不要做任何事!不要实现那些不需要的东西来增加复杂性和性能开销。

    ●    使用“防御纵深”方案——永远不要假设使用个别安全方案或机制就能够阻止或预防攻击或违反安全策略。防御纵深策略包含多层防御。

    ●    牢记蓝图——了解数据的生命周期(如前面图12-1中所示)。理解提供安全性可能意味着访问控制,以及在整个数据生命周期(从原始数据源中的数据,到加载到Hadoop集群中的数据,再到结果数据集)中保持和实施策略。

    接下来的几小节会深入到满足某些安全需求的具体细节中,并补充Hadoop原生提供的安全机制。讨论关注于三个主要方案,在与Hadoop原生机制结合的同时,它们提供了企业级安全的构成组件。在接下来的这些小节中,讨论将聚焦于Apache Accumulo。

    12.3.1  使用Accumulo进行访问控制保护

    Apache Accumulo是一个稀疏的、分布式的、有序的以及多维度的键/值存储,提供单元格级别的细粒度访问控制属性。它于2008年由NSA开发,基于Google BigTable的设计,于2011年发布到Apache开源社区,并且现在是顶级Apache项目。它是构建在Hadoop和Zookeeper之上的、高度可扩展的NoSQL数据库。开发它的部分原因是为了解决大数据安全问题。

    Accumulo扩展了BigTable的数据模型,但添加了一个元素,以提供单元格级别的、强制的基于属性的访问控制(ABAC)。可以使用可见性控制来标记所有导入到Accumulo中的数据,当数据分析师查询数据时,基于访问控制策略中的可见性控制,他们将仅能看到你期望他们看到的内容。Accumulo的API为你提供的能力包括编写认证用户的客户端,以及与企业级属性服务相集成,并拉取用户的授权凭证以提供某个级别的访问控制。Accumulo还提供将用户和授权信息保存在其自身中的能力。

    如图12-2中所示,Accumulo是一个键/值存储,它的键是一个5元组。Accumulo中的键由行ID、列族、列限定符、列可见性和时间戳构成。此5个元素的键与一个值相关联。

    图12-2  Accumulo数据模型

    该5元组键提供原子性、本地性、唯一性、访问控制和版本化。重要的是要注意键中的时间戳维度包含了基于不同的时间和日期,提供相同数据多个版本的能力。大体来说,Accumulo的数据模型多数借用了BigTable数据模型,但添加了可见性元素来提供面向数据的安全——它将仅返回那些运行查询的用户/应用程序的凭据满足可见性标签的单元格。

    Accumulo和HBase中数据级安全性的差异

    HBase和Accumulo是类似的——它们都是在Hadoop之上运行BigTable实现的Apache项目。HBase和Accumulo中的安全性提供类似的数据级安全,但方式不同。如第10章中的讨论,HBase可以对数据提供以逐个表或逐个列为基础的访问控制。当前,它还不支持Accumulo可以做到的单元格安全性,但Rhino项目的Intel发行版正在实施这方面的工作,使得HBase不久后可能会支持基于单元格的安全。

    HBase可以与Hadoop的安全模型轻易地集成(使用Kerberos),而且此方案与Hadoop生态系统的其余部分一致。而另一方面,Accumulo是一个较新的顶层Apache项目,包含一个内部访问控制数据库,而且它实现安全性的方式与Hadoop生态系统中其他工具不同。

    HBase和Accumulo都很流行。基于其单元格级别的访问控制安全特性,Accumulo在高安全环境中是最流行的,并承诺提供与强制访问控制(MAC)和差异性安全相关的解决方案。

     

    大多数较熟悉关系型数据库的开发者通常习惯于看到类似于表12-1的表,它是一个二维的模型。

    表12-1  关系数据模型中的示例数据

    名    字

    大    学

    出生所在州

    签 名 短 语

    Billy

    UCLA

    West Virginia

    “Brutal”

    Jeff

    UVA

    New Jersey

    “C’Mon Man”

     

    在Accumulo的结构中,相同的数据看上去会类似于表12-2,其中使用了较细的粒度来保存数据,包括可见性和能够跟踪数据随时间变化的时间戳。

    表12-2  Accumulo数据模型中的数据

    行ID

    限  定  符

    可  见  性

    时  间  戳

    Billy

    School

    University

    Public

    20130503

    UCLA

    Billy

    BirthRecord

    State of Birth

    Admin

    20120503

    West Virginia

    Billy

    Greeting

    Signature Phrase

    Public

    20120503

    “Brutal”

    Jeff

    School

    University

    Public

    20120503

    UVA

    Jeff

    BirthRecord

    State of Birth

    Admin

    20120503

    New Jersey

    Jeff

    Greeting

    Signature Phrase

    Public

    20120503

    “C’Mon Man”

    注意在表12-2中,可见性被标记了安全标签。可以使用与/或布尔逻辑将这些标签添加到记录中。例如,可以给出类似于表12-3的授权策略,其中可以创建授权凭据并与用户关联,将访问限定为表中的每个单元格。

    表12-3  安全策略示例及其安全标签语法

    访问某条记录的策略示例

    安全标签语法

    必须是共和党人而且是美国公民

    Republican & USCitizen

    必须是警察,或者必须是美国公民且在武装部队中

    Police Officer | (USCitizen & ArmedForces)

    必须是项目管理者而且必须在FGM或White Oak组织中

    ProjectManager & (FGM | White Oak)

    超过17岁或者父母同意

    Over17 | parentalConsent

     

    在Accumulo的安全模型中,用户向可信的客户端(作为开发人员,可以编写这样的客户端)进行认证,而客户端要负责认证用户并向Accumulo传递适当的授权凭据。你的可选方案为与自己的认证和授权系统相集成,或者使用Accumulo的内部认证/授权组件——可以在其中保存用户和他们的授权凭据。本小节为每种方案都提供了一个示例。

    一个简单的示例

    让我们考虑一个大学数据库的示例,其中某大学从各个部门和下属组织收集了关于其学生的数据。在此示例中,有来自校园医疗中心、财政中心、大学管理处、体育设施和校园警察的数据。你收集了各种各样的信息,而且整个组织可以查询这些信息。你的需求是保护某些信息,例如如下所述:

    ●    学生医疗检查记录应该只对医护人员和大学管理处可见。

    ●    田径学院学生体育相关的记录应该只对他们的教练可见,有时也可对医护人员可见。

    ●    购买记录、评分以及诸如社会安全号码等敏感信息应该只对大学管理处可见。

    ●    学生在校园警察处的记录应该只对校园警察或者大学管理处可见。

    对于本例,让我们将一些样例数据加载到Accumulo数据库中,如表12-4所示。在这个简单的例子中,有一位名叫Kirk Rest的学生,你有关于他的各种信息,这些信息均是从大学中的大量数据源收集而来的。

    表12-4  大学数据示例中的键/值

    行ID

    限  定  符

    可  见  性

    时  间  戳

    Kirk Rest

    SSN

    999999999

    ADMIN

    20050612

     

    Kirk Rest

    Phone

    804-555-0005

    ADMIN

    20050612

     

     

    (续表)  

    行ID

    限  定  符

    可  见  性

    时  间  戳

    Kirk Rest

    Address

    111 Carson Ave, Richmond VA

    ADMIN

    20050612

     

    Kirk Rest

    Weight

    170

    MEDICAL | COACH

    20110711

     

    Kirk Rest

    Running Test

    10K

    COACH

    20110812

    56

    Kirk Rest

    Running Test

    10K

    COACH

    20110517

    58

    Kirk Rest

    Running Test

    5K

    COACH

    20110716

    24

    Kirk Rest

    Running Test

    5K

    COACH

    20110612

    27

    Kirk Rest

    Payment

    Semester Payment

    ADMIN

    20111223

    1000

    Kirk Rest

    Medical Test Report

    Cholesterol

    MEDICAL

    20111222

    200

    Kirk Rest

    Medical Test Report

    Biopsy

    MEDICAL

    20111012

    Negative

    Kirk Rest

    Grade

    Organic Chem

    ADMIN

    20111201

    A

    Kirk Rest

    Grade

    Calculus 1

    ADMIN

    20111201

    B

    Kirk Rest

    Grade

    Radical Presbyterianism

    ADMIN

    20100612

    D

    Kirk Rest

    Police Charge

    Curfew Violation

    ADMIN | POLICE

    20071103

    Pending Hearing

    Kirk Rest

    Police Charge

    DUI Arrest

    ADMIN | POLICE

    20091104

    Guilty

     

    假定将此信息加载到已经安装在测试Hadoop实例上的Accumulo存储中。为此,应该使用Accumulo shell,它是一个简单的客户端,可以用于创建和修改表,以及创建用户并为这些用户分配授权凭据。由于本章关注的是安全,而非Accumulo的更多细节,因此这里不讨论加载数据的详情。

    注意:

    由于不同版本的Accumulo需要与不同版本的Hadoop和Zookeeper一起工作,因此这有时是对安装的一个挑战!上手Accumulo的一种简单方法是使用已经配置好的虚拟机(VM)。Sqrrl公司的网站上提供一个独立的亚马逊机器实例(AMI),用于Apache Accumulo的快速入门,并且该公司还提供一个在Oracle VirtualBox上预先配置好的VM。更多详情请参见位于http://www.sqrrl.com/的网站,以及位于http://blog.sqrrl.com/post/40578606670/ quick-accumulo-install/的VM。

    Accumulo针对快速获取键对应的值做了优化。为此,开发的Accumulo客户端(在这种情况下,客户端就是Accumulo shell)要创建一个对值进行迭代的扫描器。正如在代码清单12-1中所看到的那样,scan命令允许你在创建的新表——universitydata——中对值进行迭代(以root身份运行,而root对表中的所有内容均有访问权限)。

    代码清单12-1:查看数据

    <span style="font-family:Microsoft YaHei;font-size:14px;">root@accumulo universitydata> scan
     
    Kirk Rest Address:111Carson Ave, Richmond VA [ADMIN]
    Kirk RestGrade:Calculus 1 [ADMIN] B
    Kirk RestGrade:Organic Chem [ADMIN] A
    Kirk RestGrade:Radical Presbyterianism [ADMIN] D
    Kirk Rest MedicalTest Report:Cholesterol [MEDICAL] 200
    Kirk Rest NedicalTest Report:Biopsy [MEDICAL] Negative
    Kirk RestPayment:Semester Payment [ADMIN] 1000
    Kirk RestPhone:8045550005 [ADMIN]
    Kirk Rest PoliceCharge:Curfew Violation [ADMIN|POLICE] Pending Hearing
    Kirk Rest PoliceCharge:DUI Arrest [ADMIN|POLICE] Guilty
    Kirk Rest RunningTest:10K [COACH] 56
    Kirk Rest RunningTest:5K [COACH] 27
    Kirk RestSSN:99999999 [ADMIN]
    Kirk Rest Weight:170 [MEDICAL|COACH]</span>


    为演示单元格可见性的示例,需要创建下列用户:

    ●    医生(drhouse),为其分配MEDICAL角色

    ●    管理员(denyseAccountant),为其分配ADMIN角色

    ●    教练(coachTark),为其分配COACH角色

    ●    警察局长(chiefDoug),为其分配POLICE角色

    如代码清单12-2所示,使用shell来为所有这些能够读取表的用户分配访问权限(授予他们每个人Table.READ权限),并使用setauths命令为他们分配用于可见性的适当角色。

    代码清单12-2:分配访问权限和用户视图

    <span style="font-family:Microsoft YaHei;font-size:14px;">root@accumulo universitydata> grantTable.READ -t universitydata -u drhouse
    root@accumulouniversitydata> setauths -s MEDICAL -user drhouse
     
    root@accumulouniversitydata> grant Table.READ -t universitydata -u
    denyseAccountant
    root@accumulouniversitydata> setauths -s ADMIN -user denyseAccountant
     
    root@accumulo universitydata> grant Table.READ -t universitydata -ucoachTark
    root@accumulouniversitydata> setauths -s COACH -user coachTark
     
    root@accumulo universitydata> grant Table.READ -t universitydata -uchiefDoug
    root@accumulo universitydata>setauths -s POLICE -user chiefDoug</span>


    最后,为展示Accumulo现在将保护对表的访问,以每个用户的身份登录并使用Accumulo shell。对universitydata表进行扫描(或迭代)。代码清单12-3展示了如何以用户coachTark、drHouse、denyseAccountant和chiefDoug的身份登录,并对表进行迭代,而且表基于每个用户的权限提供了访问控制。

    代码清单12-3:演示用户的角色和可见性

    <span style="font-family:Microsoft YaHei;font-size:14px;">root@accumulo universitydata> user coachTark
    Enter password foruser coachTark: *********
     
    coachTark@accumulouniversitydata> scan
    Kirk Rest RunningTest:10K [COACH] 56
    Kirk Rest RunningTest:5K [COACH] 27
    Kirk Rest Weight:170[MEDICAL|COACH]
     
    root@accumulouniversitydata> user drhouse
     
    Enter password foruser drhouse: *******
    drhouse@accumulouniversitydata> scan
     
    Kirk Rest MedicalTest Report:Cholesterol [MEDICAL] 200
    Kirk Rest NedicalTest Report:Biopsy [MEDICAL] Negative
    Kirk Rest Weight:170[MEDICAL|COACH]
     
    drhouse@accumulouniversitydata> user denyseAccountant
     
    Enter password foruser denyseAccountant: ******
    denyseAccountant@accumulouniversitydata> scan
     
    Kirk Rest Address:111Carson [ADMIN]
    Kirk RestGrade:Calculus 1 [ADMIN] B
    Kirk Rest Grade:OrganicChem [ADMIN] A
    Kirk RestGrade:Radical Presbyterianism [ADMIN] D
    Kirk RestPayment:Semester Payment [ADMIN] 1000
    Kirk RestPhone:8045550005 [ADMIN]
    Kirk Rest PoliceCharge:Curfew Violation [ADMIN|POLICE] Pending Hearing
    Kirk Rest PoliceCharge:DUI Arrest [ADMIN|POLICE] Guilty
    Kirk RestSSN:999999999 [ADMIN]
     
    denyseAccountant@accumulouniversitydata> user chiefDoug
    Enter password foruser chiefDoug: *********
    chiefDoug@accumulouniversitydata> scan
     
    Kirk Rest PoliceCharge:Curfew Violation [ADMIN|POLICE] Pending Hearing
    Kirk Rest Police Charge:DUI Arrest[ADMIN|POLICE] Guilty</span>


    正如从代码清单12-3中看到的那样,Accumulo能够基于每个用户的授权控制来限制访问,你已经通过使用Accumuloshell演示了这一点。现在,让我们用Java构建一个Accumulo客户端,该客户端将为本例演示相同级别的访问控制,并与企业中的身份和访问管理基础设施相集成。

    当涉及与企业基础设施集成时,Accumulo有一个灵活的模型。如前面提到的,Accumulo客户端的职责是认证用户和获取用户的授权凭据,并将其展示给Accumulo以供处理之用。只要使用企业属性存储中的相同属性或角色标记了Accumulo表中的数据可见性,它就可以优雅地工作。如果没有标记的话,那么很可能需要对从客户端属性存储中获取的属性进行一些处理,以确保它们是完全相同的角色。

    为了演示这一点,让我们浏览一个如何编写简单客户端的示例,该客户端通过自选的认证机制来认证用户,并从自选的属性服务或LDAP目录拉取授权凭据。

    代码清单12-4展示了一个编写连接到Accumulo的Java类的示例。为了连接,必须使用Connector类建立一个Accumulo连接。为此,必须首先通过初始化ZookeeperInstance类,连接到跟踪Accumulo的Zookeeper实例,而ZookeeperInstance类将会返回一个连接器。

    代码清单12-4:Accumulo客户端代码示例

    <span style="font-family:Microsoft YaHei;font-size:14px;">import java.util.Collection;
    importjava.util.Collections;
    importjava.util.Map.Entry;
     
    import org.apache.accumulo.core.client.Connector;
    importorg.apache.accumulo.core.client.ZooKeeperInstance;
     
    importorg.apache.accumulo.core.client.Scanner;
    importorg.apache.accumulo.core.data.Key;
    importorg.apache.accumulo.core.data.Range;
    importorg.apache.accumulo.core.data.Value;
    importorg.apache.accumulo.core.security.Authorizations;
     
    public classQueryExample
    {
    public static void main(String[] args)throws Exception
    {
    //Simple Example of the name of youraccumulo instance & zookeeper
    ZooKeeperInstanceinst = new ZooKeeperInstance("accumulo", "localhost");
     
    //Obviously this is just an example
    Connector connector =inst.getConnector("root", "secret");
     
    //Scan in the username and password forthis simple example
     
    java.util.Scanner in = newjava.util.Scanner(System.in);
    System.out.println("Username:");
    String username = in.nextLine();
    System.out.println("Password:");
    String password = in.nextLine();
     
    Authorizations auths = null;
     
    try
    {
    //An example of how you can interactwith other systems (LDAP,etc)
     
    CustomAuthenticator authenticator = newCustomAuthenticator();
    authenticator.authenticate(username,password);
     
    //Retrieve credentials from externalsystem
    auths =authenticator.getAuthorizationInfo(username);
    }
    catch (ExceptionauthenticationException)
    {
    System.out.println("AuthenticationFailure.");
    System.exit(-1);
    }
     
    // Search our university data example& print out everything
     
    Scanner scanner =connector.createScanner("universitydata", auths);
    for (Entry<Key,Value> entry :scanner) {
    System.out.println( entry.getKey().toString());
    }
    }
    }</span>


    一旦建立了连接,就要认证用户。在这种情况下,对于这样一个简单的示例,从命令行抓取用户信息,并将其传递给一个叫做CustomAuthenticator的外部类,编写此类仅是为了展示可以使用Accumulo之外的另一种认证和授权机制。在该类中,将从命令行中扫描到的用户名和密码传入该类的authenticate()方法。如果用户认证成功,那么接着从外部存储拉取用户的授权凭据,并返回Accumulo期望的org.apache.accumulo.core.security. Authorizations类中的值。最后,如之前示例中所示,创建一个扫描器对相同表中的值进行迭代,并简单地打印结果。

    代码清单12-5展示了命令行中的结果。在此示例中,设置了一个外部的LDAP目录,其中包含一个叫做joeUser的用户,其角色为ADMIN。

    代码清单12-5:Accumulo客户端的结果

    <span style="font-family:Microsoft YaHei;font-size:14px;">Script started on Fri 03 May 2013 12:45:09 AM EDT
    $ java QueryExample
    13/05/03 00:45:16INFO zookeeper.ZooKeeper:
    Clientenvironment:zookeeper.version=3.4.3--1,
    built on 03/20/2012 16:15 GMT
    13/05/03 00:45:16INFO zookeeper.ZooKeeper:
    Client environment:host.name=ubuntu
    13/05/03 00:45:16INFO zookeeper.ZooKeeper:
    Clientenvironment:java.version=1.6.0_27
    13/05/03 00:45:16INFO zookeeper.ZooKeeper:
    Client environment:java.vendor=SunMicrosystems Inc.
    13/05/03 00:45:16INFO zookeeper.ZooKeeper:
    Clientenvironment:java.home=/usr/lib/jvm/java-6-openjdk-amd64/jre
    13/05/03 00:45:16INFO zookeeper.ZooKeeper:
    Client environment:java.class.path=.
    13/05/03 00:45:16 INFO zookeeper.ZooKeeper:
    Clientenvironment:java.library.path=/usr/lib/jvm/java-6-openjdkamd64/
    jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdkamd64/
    jre/lib/amd64:/usr/lib/jvm/java-6-openjdkamd64/
    jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib/x86_64-linuxgnu/
    jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linuxgnu:/
    usr/lib/jni:/lib:/usr/lib
    13/05/03 00:45:16 INFO zookeeper.ZooKeeper:
    Client environment:java.io.tmpdir=/tmp
    13/05/03 00:45:16 INFO zookeeper.ZooKeeper:
    Client environment:java.compiler=<NA>
    13/05/03 00:45:16 INFO zookeeper.ZooKeeper:Client environment:os.name=Linux
    13/05/03 00:45:16 INFO zookeeper.ZooKeeper:Client environment:os.arch=amd64
    13/05/03 00:45:16 INFO zookeeper.ZooKeeper:
    Client environment:os.version=3.2.0-29-generic
    13/05/03 00:45:16 INFO zookeeper.ZooKeeper:
    Client environment:user.name=accumulo
    13/05/03 00:45:16 INFO zookeeper.ZooKeeper:
    Client environment:user.home=/usr/lib/accumulo
    13/05/03 00:45:16 INFO zookeeper.ZooKeeper:
    Client environment:user.dir=/usr/lib/accumulo/classes
    13/05/03 00:45:16 INFO zookeeper.ZooKeeper:Initiating client connection,
    connectString=localhost sessionTimeout=30000
    watcher=org.apache.accumulo.core.zookeeper
    .ZooSession$AccumuloWatcher@6791d8c1
    13/05/03 00:45:16 INFO zookeeper.ClientCnxn:
    Opening socket connection to server /127.0.0.1:2181
    13/05/03 00:45:16 INFOclient.ZooKeeperSaslClient:
    Client will not SASL-authenticate because the defaultJAAS
    configuration section 'Client' could not be found. If youare not
    using SASL, you may ignore this. On the other hand,
    if you expected SASL to work, please fix your JAASconfiguration.
    13/05/03 00:45:16 INFO zookeeper.ClientCnxn:
    Socket connection established tolocalhost/127.0.0.1:2181,
    initiating session
    13/05/03 00:45:16 INFO zookeeper.ClientCnxn:
    Session establishment complete on serverlocalhost/127.0.0.1:2181,
    sessionid = 0x13e6757677611f1, negotiated timeout = 30000
    Username:
    joeAdmin
    Password:
    ******
    Kirk Rest Address:111 Carson [ADMIN] 20050612false
    Kirk Rest Grade:Calculus 1 [ADMIN] 20111201false
    Kirk Rest Grade:Organic Chem [ADMIN] 20111201false
    Kirk Rest Grade:Radical Presbyterianism[ADMIN] 20100612 false
    Kirk Rest Payment:Semester Payment [ADMIN]20111223 false
    Kirk Rest Phone:804 [ADMIN] 20050612 false
    Kirk Rest Police Charge:Curfew Violation[ADMIN|POLICE] 20071103 false
    Kirk Rest Police Charge:DUI Arrest[ADMIN|POLICE] 20091104 false
    Kirk Rest SSN:99 [ADMIN] 20050612 false</span>


    在此示例中进行认证的用户——joeAdmin,与之前示例中的用户不同,该用户并没有保存在Accumulo中。如这里所示,可以编写一个Java客户端来认证用户,从企业存储拉取授权凭据,并查询Accumulo。

    还有更多关于Apache Accumulo的内容,比此小节中所涵盖的要多得多。然而,重要的是要意识到对于为了数据安全而使用Accumulo的组织来说,Accumulo仅是企业安全解决方案的一个方面。企业级安全需要防御纵深,并且必须覆盖整个数据生命周期的安全——而不是仅当数据在Hadoop中保存时。

    12.3.2  加密静止数据

    Hadoop中静止数据的加密是许多不同项目(一些开源项目和一些商业项目)都在为之努力的一个主题。Hadoop并不原生支持此功能。当前,大量公司正在使用不同的Hadoop发行版来保护敏感数据,这些发行版不仅保护敏感信息,而且遵从法律(例如HIPAA)和其他安全法规。许多组织想要使用静止数据的加密来防止恶意用户尝试获取对DataNode的未授权访问。

    当前的一些解决方案包括Gazzang zNcrypt,它为Cloudera CDH发行版提供数据安全性。Intel的Hadoop发行版于2013年初发布,已经在使用Intel公司的Xeon处理器时对加密静止数据进行了优化。看上去每天都有新的解决方案出现——但到目前为止,所有这些方案都受专利保护,或者要求使用某个特定的Hadoop发行版。如第10章中提到的,Rhino项目(由Intel贡献给Apache)包含了一些改进,包括分布式密钥管理和实现静止数据加密的能力。Hadoop开发者社区目前正在针对将其加入到未来的某个Hadoop发行版而进行审查。

    无论将何种机制用于实现加密Hadoop中的静止数据,非常重要的一点是也要理解此功能的意外效果。如果需要一个加密静止数据的解决方案,那么要记住加密将会对性能产生影响。如果认为MapReduce作业可能比现在所期望的更慢,那么要想象一下加密静止数据将会对性能产生什么影响。Intel的Hadoop发行版在使用特定Intel处理器的机器上对加密和解密进行了优化。正是由于Intel的发行版在开发时考虑了自己的硬件加速器,因而对企业架构师来说,还有很重要的一点是要评估加密应用程序的静止数据所带来的成本——如果确实需要此功能,那么请为性能做相应的准备。

    目前来说,除非迫切需要加密静止数据,否则在此时,可能会有一些原因让你选择避免这样做。首先,由于分布式数据和密钥管理的挑战,这是一个非常复杂的功能领域。第二,Rhino项目在该领域带来的提升可能即将到来,而在此之前,你可能还是会被锁定到某个特定的发行版或提供商。最后,如前文所提到的,会存在与加密静止数据相关的性能损失。如果数据如此敏感,以致于正在探讨加密静止数据可能性的话,那么下一小节可能是一个潜在的解决方案。

    12.3.3  网络隔离和分隔方案

    如前面提到的,有保密和敏感数据的组织传统上将隔离Hadoop集群网络作为一种满足安全需求的方案。这些组织通常基于用户的授权级别控制对各个集群的访问,将物理安全作为一种保护机制。其他一些组织则使用一种限制较少的方案,即分隔网络,但允许可信的服务器和工作站在网络之间进行一些传输。

    此种方案仍然是非常可行的选项,这有许多原因:

    ●    安全集成的复杂性——如果安全策略非常严格而且数据非常敏感,以至于必须将大量非原生的安全控制集成到Hadoop集群中,那么请考虑使用网络隔离——将它与其他网络分隔开来,并限制仅有授权的用户能够访问。如果这样做,那么只需要考虑Hadoop结果数据集的可见性,而不需要考虑Hadoop运行时安全。这将最小化整体风险,而且最有可能降低成本。

    ●    性能——人们常说,“安全是性能的敌人”。在某个解决方案中实施的安全机制越多,它通常就会变得越慢。对于保证Hadoop安全来说,情况就是这样的,尤其是如果正在考虑使用第三方工具来加密和解密HDFS上的静止数据的话。许多人将会选择网络隔离方案来简单地避免性能损失。

    ●    数据的敏感程度不同——组织中的某些数据可能只能对某些人群可见。如果是这种情况,那么Hadoop作业的结果集也将是敏感的。尽管Hadoop中的某些工具(例如HBase和Accumulo)可以提供某种列级别(HBase)和单元格级别(Accumulo)的访问过滤方式,但Hadoop中的其他工具则不提供该级别的安全性。如果正在运行构建结果集的JavaMapReduce应用程序,而且正在使用各种各样的不同工具,那么明智之举就是考虑基于用户的可见性来分隔集群。

    ●    不断演进的Hadoop安全范畴——大量的Hadoop新产品、发布版本和发行版正在提供新的安全特性。如第10章中提到的,Hadoop安全性增强可能即将在未来一年中到来。这些即将到来的变化将会影响使用Hadoop的企业级应用程序,而在了解这些变化产生的影响之前,很多组织正在选择网络隔离模型。

    ●    集成之前的数据安全审核——由于网络隔离方案不支持其他网络中的企业级应用程序对数据的实时访问,因此它允许在企业级应用程序使用数据材料之前,对其进行审核和过滤,以最小化潜在的保密性风险和隐私泄露(这当然是一柄“双刃剑”,因为网络隔离通常是实时Hadoop的一个阻碍,而且需要一个发布供企业级应用程序使用的数据集的处理过程)。

    网络隔离能够以很多方式实现企业级应用程序安全。图12-3展示了一种做到这一点的方法。某个组织创建了“数据分析”网络,使用物理的“气隙”将其从组织的企业网络中分离,以阻止在两个网络之间传输任何数据。具有适当访问控制权限的数据科学家在数据分析网络中的Hadoop集群上执行查询和MapReduce操作,而且对该网络的访问由物理安全和/或对用于执行查询的客户端机器的认证来控制。

    图12-3  使用导入/导出工作流的“气隙”网络隔离

    为了支持使用这些数据集结果的企业级应用程序,必须开发和应用一个重要的工作流处理过程:

    (1) 首先,必须从企业网络适当的数据库和应用程序中抽取待分析的所有数据,将其写入媒介,并带入到隔离的网络中。

    (2) 一旦准备好了分析所用的数据而且已经将其加载到了集群中,那么就可以运行HadoopMapReduce作业,直到生成待审查的结果。

    (3) 对于结果来说,必须使用由外部企业级应用程序控制的授权策略来标记结果,或者对结果进行过滤,以便删除敏感的、保密的或者受隐私保护的数据。

    (4) 一旦过滤或使用访问控制策略标记了此数据集,就可以将该数据集写入到媒介并导入到企业级应用程序。

    对于许多组织来说,这是一个繁琐的过程,因为涉及两个网络的物理隔离,而且需要一个工作流——从原始网络中导出数据,将其导入到数据分析网络,并进行分析、过滤,然后准备结果数据集并加载到企业级应用中。然而,当数据尤其敏感时,许多组织还是采取这个方案。

    鉴于引入的复杂性,一些组织开始转向一个类似的模型,即一种将流量限定为从企业网络中的可信主机到数据分析网络的方案,如图12-4所示。在这种情况下,ETL过程可以通过网络完成,省去了前面所述处理过程的第(1)步。

    图12-4  使用单向传输的网络隔离

        将Apache Accumulo主要用于对数据进行访问控制的一些组织,会对可以发布到企业网络中的结果数据集执行数据过滤——例如,创建“企业网络用户”,他们的凭据与网络中的最低授权等级相同。基于此用户对待发布数据进行的过滤通常使得结果集更易于在内部发布,而不必担心不经意的信息泄露。

        可以以其他无数种方式使用网络隔离——这些只是其中的一部分。其他一些方案包括基于所使用数据的类型隔离Hadoop集群,而某些限制较少的方案包括允许与企业网络中的机器互联,使用ACL来限制只有可信主机能够访问。

         企业级安全解决方案的每个部分都将取决于组织自身的安全需求——没有任何两个组织是完全相同的。无论如何,本章提供的示例和指南应该能够在构建企业级安全解决方案时帮到你。

    12.4  小结

        本章给出了企业级的安全视图,关注于数据生命周期中的安全策略和以数据为中心的视角。重要的是安全架构师们要理解这个蓝图,同时能够解决Hadoop和补充安全工具所能提供的不同方面的企业级安全。

        本章以开发使用Hadoop的企业级应用中对安全顾虑的简要概述作为开始。你学习了Hadoop自身无法解决的一些安全挑战——包括面向数据的安全、差分隐私和静止数据的加密。查看了大量用于构建使用Hadoop的企业级安全解决方案的方法,并浏览了一些指南和示例。学习了如何将ApacheAccumulo用于单元格级别的安全,并深入考察了静止数据的加密以及当前可用的一些方案。还学习了一些关于网络隔离的方案,许多对暴露敏感数据有顾虑的组织都在使用这种方案。

    对于Hadoop来说,安全当然是一个不断演进的话题,而且是Hadoop在未来几年中将持续增长的领域。第13章关注于Hadoop在一些其他方面即将到来的改进,并讨论当今新兴的、且会在未来继续增长的趋势。

     《Hadoop高级编程——构建与实现大数据解决方案》试读电子书免费提供,有需要的留下邮箱,一有空即发送给大家。 别忘啦顶哦!

    微信:qinghuashuyou  
    更多最新图书请点击查看哦
    互动网预售:http://product.china-pub.com/3803988
    京东:http://item.jd.com/11513015.htm

    展开全文
  • 该专题涵盖:无线知识,解决方案和成功案例、用户调查、产品对比、无线网络学术论文、相关下载、厂商名录等内容。为用户了解无线网络提供了便利,为企业选择无线网络方案以及相关产品提供了参考,得到了网友的好评。...

     该专题涵盖:无线知识,解决方案和成功案例、用户调查、产品对比、无线网络学术论文、相关下载、厂商名录等内容。为用户了解无线网络提供了便利,为企业选择无线网络方案以及相关产品提供了参考,得到了网友的好评。

    网页链接:http://bbs.csai.cn/xch/from.asp?id=60&wh=桃之小妖

    觉得对您有帮助请留言哦~~谢谢各位了~~!!!

    展开全文
  • 企业级应用的安全考量 认证 授权 机密性 完整性 审计 对于企业应用, Hadoop安全机制不提供什么?...保护使用Hadoop的企业应用的方法 利用Accumulo的访问控制保护 加密静态数据 网络隔离和分离方法 总结

    一、前言:

      非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,春节期间,项目进度有所延迟,不过元宵节以后大家已经步入正轨, 目前第12章 为Hadoop应用构建企业级的安全解决方案已经翻译完成,在此对:译者:杨有鹏 不莱梅狗  78280847 表示感谢。

    二、意见征集:

      本章节由《Hadoop专业解决方案群:313702010》翻译小组完成,为小组校验稿,已经通过小组内部校验通过,特此面向网络征集意见,如果对本章节内容有任何异议,请在评论中加以说明,说明时,请标明行号,也可以以修订的方式,发送给我。非常感谢。

    三、原书说明

      英文原书《Wrox.Professional.Hadoop.Solutions》第12章,请参照英文原文。

    四、翻译原稿

    本章内容:

    ➤理解企业级应用的安全关注考量

    ➤理解Hadoop未为企业级应用提供的安全措施

    ➤学习构建企业级安全应用解决方案的方法

    本书的第10章节讨论了Hadoop安全以及Hadoop内部的安全控制机制。在构建企业安全解决方案(这类方案会包括很多与Hadoop数据相关的应用以及企业服务)的时候,保证Hadoop自身的安全只是其中一个方面。组织机构正努力利用不同安全策略来为从异构数据源提取的数据提供一致的安全机制。当组织机构从外部不同的数据源中提取数据,并且进行转换,装载到Hadoop中时候,在这些数据要被导入到企业应用的时候过程中,安全方面的挑战就变的更加复杂。例如,Hadoop 工作组合多个数据集并产生新的组合数据集,对于原始数据集你采用何种安全访问控制策略。

    要命的是,许多企业发现Hadoop自身提供的安全级别并不能满足他们所有的需求,他们必须要补充Hadoop的安全模型。例如,一些机构被要求加密静态数据以满足他们的需求,这样的功能,是Hadoop不具备的。另外,数据科学家进行分析查询的时候,一些企业需要为Hadoop 查询提供细粒度的基于属性的访问控制。虽然这些需求目前已经在Hadoop路线图上面,或者会出现未来的Hadoop 安全策略中(如第10章所述)。这类的功能大大超出了Hadoop 本身能够提供的功能。

    因为这些挑战,企业级的解决方案必然要按照一个整体的安全方式去开发,而不是以Hadoop为中心。当然,你可以使用Hadoop自身的安全机制去满足你的一部分安全需求,但是在许多企业中,你会发现Hadoop的安全机制并不能满足所有的需求。使用Hadoop的企业级的应用必须要结合企业大局,集成其他的安全机制来计划,设计,以及实施。

    在第10章的讨论中,Hadoop的设计和开发是没有考虑安全的,而且在很长一段时间内,几乎没有为Hadoop定制的安全机制。早期社区内的设想是,Hadoop集群会在可信赖环境中由可信赖用户使用的协同,可信赖的机器组成。在之后,Hadoop社区采用了一个新的安全架构,该架构包括了新的安全控制(如第10章讨论),但是对于那些有很强的访问控制限制,保密制度,隐私要求,以及合规要求的企业或者组织来说,仍然不能利用Hadoop生态系统中基本的工具来满足他们的需求。他们想要利用Hadoop的功能,那么他们就必须要把安全也构建到其他工具中,或者另外设计一套使用Hadoop的安全解决方案。

    本章是为想要利用Hadoop,却同样要回应安全问题的企业级应用的开发者而写的。企业级应用需要支持一个企业的安全要求,理解这一点很重要。这可能需要集成身份访问管理基础设施、以及其他的网络基础设施,这同样意味着要采用其他的独立于Hadoop的安全控制。本章提供了满足这些需求的一种方法论以及一些可能的解决方案。

    本章首先会介绍开发基于Hadoop的企业级应用的安全考量的简要概述。然后,会讨论Hadoop安全不提供的功能,以及一系列构建集成Hadoop企业安全解决方案的方法,包括现实的例子。最后,本章会简要的涉及一下另外一种安全工具Apache Accumulo,你能够将之应用到Hadoop分布式集群中,Apache Accumulo是一种高级安全存储和检索系统,它由美国国家安全局(NSA)为了精细审计而在Hadoop基础上面构建的。

     

    企业级应用的安全考量

    在构建Hadoop解决方案的时候,不仅是考虑Hadoop自身的安全性(如第10章所讨论的那样)很重要,另外要理解全局安全策略以及以数据为中心,这两点也很重要。

    如图12-1所示,你需要理解Hadoop数据的生命周期。在构建Hadoop解决方案的时候,数据的生命周期包括:从信息源提取数据,装载数据到Hadoop Cluster中,运行查询,以及分析,到最终利用结果数据。当数据到达的时候,安全框架的目标就是确保整个数据的生命周期中所有的安全策略都能被强制执行。

     

     

    不管使用到的工具,数据可以从很多数据源中提取数据,转换为通用的数据格式,然后被装载到Hadoop集群中的HDFS上面去,这个过程通常会被称为:抽取,转换以及装载的过程(ETL)。数据分析师可以接着运行一些列的MapReduce 工作,以及执行能够产生解决集的查询,这也就是企业级应用所典型的利用Hadoop的方式。

    这里的挑战是多方面的,你必须能够在数据生命周期之间的迁移过程中,保证数据的安全性,要坚持最初的安全策略。数据被抽取、装载、和集群中其他机器上面的数据组合、以及产生最终会被其他应用使用的结果集,整个过程都是一个挑战。

    图12-1给出关于安全考量点的一个很好的一览,这些安全考量会在本章中被检测。要建立牵涉Hadoop的安全的企业级应用,架构师们需要理解信息安全的基础,以及他们是如何被应用的。利用Hadoop的解决方案中很多安全目标需要解释,要明白最优方法依赖于理解这些安全考量以及相关术语的含义。这里的讨论没有提供一份详尽的安全考量点的清单或者是关于每一个安全考量的详细解释,只是提供了作为企业架构师需要知道的为了达到安全目标的简略的信息安全词汇列表。对于每一个术语定义的目标,你会学习在Hadoop环境中,认识到为什么是重要的。

    认证

    认证就是识别一个主体的身份。一个主体可以是一个用户,一个应用,一个任务,或者系统中其他的角色。就如第10章中所讨论的那样,Hadoop可以被配置使用Kerberos来认证用户,服务,以及Hadoop集群中服务器。认证确保了用户和服务正如他们的所表明的身份那样是可靠的用户和服务,阻止了来自于其他恶意系统的模仿的用户、服务、任务。

    需要提及的是,并不是所有的企业在Hadoop系统之外都部署了一套企业级的Kerberos系统来作为认证系统。企业级的应用可能需要把其他的身份访问管理基础设施集成进入他们的应用。

    授权

    授权就是决定一个主体能够拥有什么样的权限,在主体通过了认证之后,系统必须确定主体的特许凭证,并且需要将主体的特许凭证和一个授权策略做比较,以给主体提供对请求的资源的访问许可。如第10章所述,目前Hadoop提供一种访问控制级别,这种访问控制利用访问控制列表(ACLs)来表述访问控制策略,非常类似于UNIX的用户-组的用户权限。

    除了Hadoop自身提供的授权机制,大多数企业机构都采用了另外的授权机制。例如,一个企业机构可能拥有以下一种,或者多种授权机制:
        ➤轻量级目录访问控制(简称OLAP)目录、或者活动目录(AD)实例,这两种方式都保存了主体的组、角色以及权限。

    ➤属性服务,这种方式使用属性作为主体的特许凭证

    ➤安全令牌服务(Security Token Services简称STS),这种授权机制是分配与主体的特许凭证对应的令牌,并分配授权决策事务。

    ➤策略服务(Policy Services),该机制是用可扩展访问控制标记语言(eXtensibleAccess Control Markup Language 简称XACML),或者安全断言标记语言(Security Assertion Markup Language简称SAML)来表述对资源访问控制策略,并为主体提供访问控制决策。

    使用Hadoop的企业应用需要根据他们自身组织的访问控制策略来控制对数据的访问,也就是说要利用其它的机制来补充Hadoop自身的授权控制。

    需要记住的是,在数据的整个生命周期中实施授权控制的一致性是很重要的。如果你的初始数据源自身就拥有对于他们的数据的访问控制策略,为查询数据的数据科学家提供同样的访问控制策略很重要。同样,对于之后产生的需要被导入到企业应用中的结果集来说,采用恰当合适的访问控制更加重要。这确实是一个挑战。

    机密性

    机密性就是限制敏感数据,用户只能看到被授权了的允许看到的部分数据。当敏感数据在网络上传输的时候,这就需要在数据传输过程中,数据不能被偷听者读取。这可以用过网络加密来实现。一些企业需要磁盘加密,或者是静态数据加密,静态数据加密就是数据只在被存储地方被加密,减少了未受保护数据的被盗窃的风险。

    在第10章中,我们学习到Hadoop提供了网络加密的功能和机制。然而,Hadoop没有提供对静态数据的加密功能。在本章的后面的章节,你可以学习到达到静态数据加密这一目标的集中策略。

    完整性

    完整性确保了数据在传输过程中或者是落地之后(成为静态数据)不能够被更改。完整性可以通过加密完成,该加密可以利用信息摘要,哈希码,或者是数字签名的副影响。当Hadoop被配置成采用网络加密的时候,Hadoop会在传输过程中保证数据的完整性。

    静态数据就是另外一种情况,幸运的是,Hadoop保证了静态数据的完整性,他通过采用副本形式保证数据可靠性。数据的完整性以及可靠性是Hadoop系统的健壮性,以及他的分布式架构的一个有意的附加影响。由于HDFS被设计成运行在标准化商用硬件上面,用在不同节点上面拷贝数据的方式来达到容错的目的,正是由于数据副本的数目,校验和检查机制,冲突检测机制,Hadoop为保存在HDFS上面的数据提供了一套保证数据完整性的健壮的机制。

    然而,安全架构师有时会提议一种担心,这就是如果Hadoop当中的一个节点缺乏抵抗能力,一个恶意的用户可能会修改数据,那么这就会歪解数据分析的结果,这种情况完全可能发生,但是使用Hadoop的安全机制(服务器/服务 认证,数据完整性确认等等),配合深度防御策略,企业级解决方案架构师能够减少这个风险。

    审计

    大多数的公司都会采用安全审计来保证合规事项的保密性,以及识别潜在的安全缺口。Hadoop当然可以被配置成记录所有的访问日志-NameNode上面保存一份本地日志,一个审计日志记录器可以被配置将访问信息写入一个特定的安全卷上面以保证日志的完整性。企业当然也可以在授权和认证方面拥有更多的需求。

    注意:尽管关于经典安全目标的大多数的描述都关注机密性,完整性,以及可使用性,这里的描述却关注认证、授权、机密性、完整性以及审计,这是由于这些都是企业应用的安全的关键方面。可使用性(确保能够访问Hadoop)当然也是很重要的,这点在Hadoop设计的时候就已经被关注了。Hadoop是高度可靠的,对于可使用性,Hadoop包含一条重要的跟踪记录,Hadoop同时能够部署你企业内部的其他的安全机制(比如入侵检测系统),来保护系统避免受到Dos攻击。这些都不会在本章讨论,因为这个讨论主要面向于企业应用的开发者。

     

     

     

     

    对于企业应用, Hadoop安全机制不提供什么?

    在本章剩余的部分中的内容以及安全术语中,重要的一点是你需要理解企业安全的某些方面,而这些方面Hadoop自身也不能够提供。当然Hadoop提供了一定级别的认证(Kerberos)、一定程度的授权(ACLs 以及 UNIX级别的文件权限)、以及支持网络加密和完整性的能力。然而,仅仅靠Hadoop,还有很多安全方面不能提供。

    面向数据的访问控制

    除了在HDFS上面的针对用户和组的ACLs(访问控制列表)以及基于POSIX的文件读写权限,Hadoop自身不会跟踪数据的访问控制策略。正如你在本章学到那样,很多企业机构都会根据不同的策略来限制对数据的访问,而这些策略通常又非常复杂。可能会出现一些情况,Hadoop系统中数据集中的一部分数据不能被数据分析师访问,这些数据分析师可能不能访问MapReduce工作的结果集以及查询的结果。

    下面介绍了一些好的例子:

    ➤一个卫生保健机构可能要求医师只能访问和他的相关病人的数据,并且只能在正常的工作时间(早上9点以及下午5点)访问数据。这就意味着需要对病人的数据提供访问控制,需要一个系统,该系统能够基于角色(医师),以及时间(比如正常的工作时间)来限制数据访问权限,同时还要判断该数据是否属于这个医师的病人。

    ➤一份政府文件可能要根据一个用户的国籍,以及/或者一个安全检查的要求,该安全检查通常被称为强制访问控制。

    ➤某公司的金融咨询师不能访问该公司竞争方的计划以及建议。这种情况被称为“利益冲突”或者是“中国长城”策略。

    ➤一个大学可以搜集各个部门或者子机构的学生信息,可能涉及金融,医疗记录,校园警察。大学可能需要根据部门或者角色(医疗、警察、金融策略)来控制数据的访问。

     

    这里面的每一个例子当中,Hadoop自身的安全机制不能够轻易的实行这些访问控制策略。一些挑战可能是架构方面的,这需要根据MapReduce的算法。导入的数据可能在开始的时候和访问控制策略关联好(比如在数据用安全策略标记的例子当中)。然而,当数据分布在HDFS上面或者和其他数据集连接的时候,这就可能会导致数据和安全策略之间产生裂缝。这可能导致新合成数据上面的访问控制策略就会不那么清晰。

    对于需要这种级别的访问控制的机构来说这就是一个问题,本章的后面的内容中会检验该问题。

    差异性隐私

    对于无意泄露的信息的研究工作已经开展了将近40年,包括统计学数据库,到与数据挖掘有关的安全以及隐私关注。在数据科学当中,微软研究院的Cynthia Dwork博士使用差异性隐私(differential privacy)来定义这一领域。

    差异性隐私关注于保护来自不同数据集或者数据库的信息,避免其被泄露。由于Hadoop以及其他数据分析平台能够利用大量计算资源来处理众多不同的大数据集,包含了重要的隐私和法律含义的差异性隐私就变成了热门话题。在诸如美国健康保险携带和责任法案(Health Insurance Portability and Accountability Act 简称HIPAA)等隐私保护数字法当中,差异化隐私显得尤为重要。

    即使一个Hadoop数据集的隐私保密信息已经被略去,而该数据集可能只包含(或者配合)其他看起来并不有害的信息,这些看似无害的信息仍然可能被用来泄露个人的身份或者其他敏感信息,这就导致了违背隐私策略。可能会合成来自多个不同的Hadoop工作中提取的数据信息,这样,数据分析师或者Hadoop用户就不能看到这部分公开的信息。然而,Hadoop自身是不提供这种差异性隐私的保护功能的。当然,Hadoop包含了为内部用户提供了访问控制隐含式,对和其他组织共享统计信息以及数据的组织也提供了非常重要的隐含式。

    因为被众多组织采用的Hadoop是强大的分析平台,它可以被用来发现你可能不能发现的信息。组织机构需要在向公众或者合作方发布数据之前都需要再三思考。根据你的实际环境,对你的数据可能会有一些内部的控制,要明白,一些Hadoop用户在他们的分析查询当中可能不允许看到某些结果。这也是NSA所关注的一点,NSA开发并发布了Accumulo,Accumulo项目是属于Apache的开源项目,他提供单元级别(cell-level)的安全。

    差异性隐私问题举例

        最为广泛关注一个差异性隐私的例子发生在Netflix。在2006年,Netflix开展了一个奖金为1百万美元的比赛,来给它的电影推荐系统提高10%。为了给参加比赛的开发者在比赛当中有数据可用,Netflix发布了一些的被处理过的匿名训练数据集,其中包含了一百万订阅者的电影浏览历史信息。该数据集中有Netflix用户观看电影的排名,但是没有个人身份信息。

        两个研究者,来自于奥斯汀的德克萨斯州大学的Arvind Narayanan博士以及Vitaly Shmatikov将Netflix的数据集和互联网电影数据库(Internet Movie Database,简称IMDB)评论数据,利用新的反匿名话算法(de-anonymization algorithm)。他们发表了一份研究报告,该报告表示他们能够在数学上识别Netflix数据集中的很多用户。基于一个用户的某些电影在IMDB中排名信息,研究者表示他们的算法能够识别在Netflix数据集中相同的用户,从而能够找到Netflix用户在2005之前的所有电影浏览历史,这就导致能够获取用户的有关宗教信仰,性别以及政治主张等潜在的信息。结果,一个Netflix用户起诉Netflix发布的有关他们的数据违反了视频隐私保护法案(Video Privacy Protection Act 简称VPPA),并暴露了她是一个同性恋。为解决这场官司,2010年Netflix支付了9百万美元。

    就在同时,出于研究目的,AOL发布了一些“匿名的”搜索引擎日志。一个纽约时报记者利用电话薄对照这个数据集就能够识别一个用户。这份数据集当中包含了AOL用户的三个月的搜索历史,其中一些信息相当令人相当尴尬。该事件直接导致了AOL的CTO的辞职,以及两个AOL雇员被结果,以及一起针对该公司的集体诉讼。

    还有其他无数需要注意的例子。比如,MIT的一个研究者能够从一个匿名的州保险数据库中结合公开可用的州选举登记记录识别她主管的医疗记录。

    这些例子证明安全问题迫在眉睫,例子显示出数据集是如何能够被组合使用,从而违反隐私法律,法规,以及绕过用户的访问控制限制。通过使用这些相同的原理,如果你并没有进行恰当的控制,内部的Hadoop用户可能能够绕过安全限制。

    加密静态数据

    由于对存储在磁盘或者终端用户设备上面信息的机密性有太多的威胁,许多拥有敏感信息的的组织机构都需要对静态数据进行加密。这种需求的原因与来自恶意软件的威胁有关、也与数据敏感度和机密性有关,或者是与法律条例有关。例如,HIPAA就包含了对静态加密数据的指导条例,这些静态加密数据与电子受保护的健康信息(ElectronicProtected Health Information简称EPHI)或者其他受法律保护的个人身份信息(Personally Identifiable Information简称PII)。

    一些组织机构正在努力对存储于HDFS上面的静态数据进行加密,而这种加密是Hadoop自身并不提供的。然而,第三方库以及其他的产品能够配合Hadoop一起来满足这些需求,Rhino项目(在第10章讨论那样)正致力于解决Hadoop当中的这个问题。

     

    企业安全集成

    大多数的企业在他们内部都有各式各样的安全基础设施,包括进行身份认证的公钥基础设施(Public  Key Infrastructure 简称PKI)组件、活动目录(Active Directory)、安全令牌服务(Security Token Service)、属性服务、用户认证的策略服务器,策略服务器提供了授权特许凭证,并且制定和执行访问控制决策。Hadoop自身的安全功能并不能总是能够嵌入或者集成每一个组织的安全基础设施。当安全需求要求企业应用要和一个组织的安全基础设施进行集成的时候,安全架构师的的职责就是设计出一套解决方案能够利用其它工具将Hadoop与这些安全基础设置进行集成起来。

     

    保护使用Hadoop的企业应用的方法

    近来,大量的项目,包括Hadoop附属项目,或者是专有的Hadoop发行版都许诺要强化Hadoop的安全。Hortonwork的Knox Gateway项目,Intel的安全加强版Hadoop的发行版,以及一些诸如Rhino等开源项目,Rhino已经发布了并且承诺帮助企业应用开发者来达到他们安全要求。不管怎样,每一个企业应用都不一样,每一个应用部署所需要的安全要求也不一样,认识到这一点非常重要。

    在进入到具体细节之前,你必须理解为使用Hadoop的企业应用而提供的一些通用的基本要素和指导方针。对于这些基本要素和指导方针,很多项目在关注某些安全机制的时候出现了偏移,他们并不按照那些适用于任何项目的通用的指导方针。

    ➤确定你的安全需求 -- 理解你的安全需求非常重要。对于认证、访问控制、审计、加密、完整性、以及保密性的需求都取决于你的组织。相对于Hadoop运行时自身的安全(Hadoop自身的安全提供了针对执行查询或者运行工作的应用以及用户的访问控制),围绕Hadoop MapReduce工作的结果数据集的安全,你可能会提出这样问题。要和合适决策制定者交谈,以理解什么是需要的,这样你才能制定相应的计划。

    ➤从开始就围绕安全而设计 -- 这些项目的一个共同的重大的问题是最终还是试图改进安全性--这种做法导致了架构变得短期化并且脆弱,而且使得项目最终注定失败。如果你项目中存在类似于本章讨论的安全性需求,而你认为你只关注数据分析而在后来才去担心去保护你的方案的时候,那么你就会面临着非常大的风险。重点开发初期的高级安全架构的,这些架构可以和一些合适的权威专家一起讨论,以获得概念上的赞同。

    ➤不要保护你不需要保护的东西 -- 如果你为了达到本章讨论的某些目的而不需要安全性需求是,那么就不要采取安全性保护措施。不要让不必要的需求的加重复杂性,或者是负载的性能。

    ➤使用深度防御方法 -- 不要设想通过一个单独的安全性措施或者机制来阻挠或者阻止一次攻击或者是违反安全策略的行为。深度防御方法涉及到过个层次的防御。

    ➤记住大局 -- 理解你的数据的生命周期,如图12-1所示的那样。要明白提供安全性保护可能意味着在整个数据生命周期(从原始数据源的数据,到被转载到Hadoop集群中的数据,指导最终的结果数据)当中都要控制访问,以及维护和执行安全策略。

    下面的部分就会深入研究满足某些安全性需求以及补充Hadoop自身安全性功能的方法。讨论会关注于三个主要的方法,这些方法配合Hadoop自身的机制构建企业安全的保护墙,在下一个部分当中,将讨论Apache Accumulo。

     

    利用Accumulo的访问控制保护

    Apache Accumulo是一个稀疏的、分布式的、分类 、多维的键/值存储方案,他具有单元级别的精细访问控制的特性。他是由NSA在2008年根据Google的BigTable的论文开发的,在2011年的时候Accumulo被发布到Apache开源社区里面。目前Accumulo已经成为Apache的顶级项目。Accumulo是一个高度可扩展的NoSQL数据库,他建立在Hadoop和Zookeeper之上。Accumulo被开发的一部分原因是要解决大数据的安全性问题。

    Accumulo扩展了BigTable的数据模型,但是添加了一个元素以提供单元级别的强制基于属性的访问控制(Attribute-Based Access Control,简称ABAC)。所有被导入到Accumulo的数据都可以通过可视化的控制来标记,基于访问控制策略当中的可视化控制,数据分析师查询数据的时候,他们只能查看到被允许看到的那部分。Accumulo的API提供了可供你自由实现客户端,自定义的客户端程序可以认证用户、和企业属性服务集成,企业属性服务可以拉取用户授权凭证以提供一定程度的访问控制。Accumulo同样提供了存储用户和授权信息的功能。

    如图12-2所示,Accumulo是一个key/value的存储方案,Accumulo的key包含了5个元组。Accumulo中的Key是由RowID、Column Family、Column Qualifier、Column Visibility、Timestamp组合而成,这个5个元素的key关联一个value。

     

     

     

    这个5元组的Key提供了原子性、局部性、独特性、访问控制和版本控制。需要注意的是Key当中的Timestamp提供了同一数据包含多个版本的功能,Timestamp根据不同的时间和日期。在很大程度上,Accumulo借鉴了BigTable的大部分数据模型,但是加入了可视化元素以提供面向数据的安全性--这就会只返回那些可视化标签满足于执行查询的用户或者应用的凭证的单元。

    Accumulo以及HBase当中数据级安全性差异

         HBase和Accumulo相似--都是运行在Hadoop上面的BigTable的实现的Apache项目。HBase和Accumulo都提供了相似的数据级安全性,但是是以不同的方式。正如第十章所讨论的,HBase提供了对每个表或者每个列的数据访问控制。在这点上面,HBase不提供单元安全性,而这正是Accumulo提供的。但是,目前在Intel的发行版本Rhino项目中已经在进行类似的工作,在不久Hbase也会支持基于单元的安全。

         HBase能够很容易的集成Hadoop安全模型(使用Kerberos),而这种方式和Hadoop生态系统的其他项目保持了一致。另外一方面,Accumulo是Apache新的顶级项目,他包含了一个内置的访问控制数据库,而他没有采用和Hadoop生态系统的其他项目一样的方式。

    HBase和Accumulo都很流行。由于Accumulo的单元级的安全性,在一些高级安全环境中,Accumulo更加普遍,Accumulo许诺提供和强制执行访问控制(Mandatory Access Control

    简称MAC)以及其他不同的安全性相关的解决方案。

     

    大多数的开发者都比较熟悉关系型数据库,这些数据库的表结构如表12-1所示,示例的表是一个二维模型。

    表12-1:关系型数据库模型示例

     

    在Accumulo结构中,相同的数据如表12-2所示,Accumulo中数据按照比较细的粒度存储,包括可见度(visibility)以及一个timestamp,其中timestamp可以使你跟踪超时的数据的改变。

    表12-2:Accumulo数据模型中的数据

     

    需要注意的是,在表12-2中,可见度被用安全标记进行了标记。这些安全标签能够被添加,使用AND/OR的布尔逻辑。例如,你可以提出如表12-3所示的授权策略,表12-3中授权凭证可以被新建以及和用户关联,以限制表中每一个单元的访问。

    表12-3:安全策略以及对应的安全标签示例

     

    在Accumulo的安全模型中,需要用户访问信赖的客户端(作为一个开发者,你可以编写这样的客户端)进行认证,客户端要负责认证用户,并且向Accumulo发送合适的授权信息。你可以选择集成你自己的认证和授权系统,或者你可以使用Accumulo内部的认证/授权的组件,该组件当中存储了用户和用户的授权凭证。本节当中会提供每种选择的例子。

     

    一个简单的例子

    让我们用一个大学的数据库作为例子,该大学从不同的部分和子机构当中搜集学生的信息。在例子当中,你会看到来自校园医疗中心、财务中心、大学管理、体育设施、大学警备人员的数据。很大范围内的数据都被收集了,并且能够被所有的机构查询,你可能被要求保护这些数据,这些要求包括如下几种:

    ➤学生的医疗检查记录只能被医疗人员或者是管理人员浏览。

    ➤大学体育课当中学生的与体育记录相关的记录只能对他们的教练、有时一些医疗人员可见

    ➤付款记录,成绩,如社会保险号码等敏感信息只能对大学管理人员所见

    ➤关于学生的校园警备记录只能对校园警察或者大学管理人员可见。

    对于这个例子,让我们加载一些示样数据到Accumulo数据库中,如表12-4所示,在这个简单的例子中,有一个名叫Kirk Rest的学生,他有各种各样的信息,这些信息来自该大学的众多数据源。

    表12-4 大学数据示例的Key/Value(待续)

     

    表12-4 大学数据示例的Key/Value(续)

     

    假设装载这部分信息的Accumulo存储是建立在一个测试Hadoop实例上面的。为此,你需要使用Accumulo的shell,该shell是Accumulo一个简单的客户端,能够被用来创建和修改表,同样能够被用来创建用户以及给用户指定授权凭证。因为本章将关注与安全性而不是Accumulo的细节,所以不会在本章提及装载数据的细节。

    注意:由于不同版本的Accumulo使用了不同版本的Hadoop和Zookeeper,有时设置Accumulo是很大的挑战。一个开始Accumulo的简单的方法就是使用一个已经配置完了的虚拟机(VM)。Sqrrl公司的网站提供了一个亚马逊单机实例(Amazon Machine Instance 简称AMI),借助它可以快速的开始Apache Accumulo,Sqrrl公司也提供了一个Oracle VirtualBox的VM。具体细节,查看他们的网站http://www.sqrrl.com/

    VM的网址:http://blog.sqrrl.com/post/40578606670/quick-accumulo-install/

     

     

     

     

     

     

     

     

    Accumulo被优化成能够快速提取key的value的系统。为此,一个你开发的Accumulo客户端(在这里的情况中,客户端可以是Accumulo的shell)可以创建scanner,scanner可以迭代value。如你看到Listing 12-1,scan命令使得你迭代查询一张你新建名叫universitydata的表的value值(root用户被授权可以访问表中所有的内容)

     

    为了证明单元可见性的例子,你创建如下几个用户:
        ➤一个医生(drhouse),你给他授予了MEDICAL 角色

    ➤一个管理员(denyseAccountant),你给他授予了ADMIN角色

    ➤一个教练(coachTark),你给他授予了COACH角色

    ➤一个警察局长(chiefDoug),你给他授予了POLICE角色

    如Listing 12-2所示,你使用Accumulo shell给所有用户指定读取表的权限(授予他们每个人Table.READ权限),然后使用setauths命令为他们指定角色,这一步是为了设定可见度。

     

    最后,为了显示Accumulo将会保护表中的数据,你用Accumulo sheel以每一个用户进行登录。你可以scan(或者迭代)整个universitydata表。Listing 12-3,显示了你可能如何用用户coachTark,drHouse,denyseAccountant和chiefDoug,并进行表迭代,表根据每一个用户的权限进行访问控制。

     

    从Listing 12-3可以看到,Accumulo可以根据每一个用户授权控制来限制访问,这一点可以通过使用Accumulo shell来证明。现在,让我们来使用JAVA建造一个Accumulo Client,来证明本例中同样级别的访问控制,该客户端同时还会和企业内的身份识别和访问管理基础设施集成。

    因为Accumulo适合于集成企业的基础设施,Accumulo拥有一个灵活的模型。如前面的提及的那样,Accumulo Client的责任就是认证用户并提取用户的授权凭证,发送凭证给Accumulo以进行处理。只要Accumulo的表中数据的可见性属性被用与你企业属性存储系统中相同的属性和角色标记了,数据的可见度就会工作良好。如果不是,你会需要在Client端中对这些从属性存储系统中拉取的属性进行一下处理,以保证他们具有相同的特征。

    为了证明这点,让我们通过一个简单的例子,该例子描述了如何编写一个简单的Client来认证用户,认证可以通过你选择的认证机制来完成,以及从由你选择的属性服务或者LDAP目录拉取授权凭证。

    Listing 12-4 显示了一个例子,该例子使用JAVA类来连接Accumulo。为了连接,你必须使用Connector来建立一个Accumulo连接。为此,你需要首先连接到Zookeeper实例上,该Zookeeper实例使用ZookeeperInstance类来跟踪Accumulo,ZookeeperInstance会返回一个connector。

     

    一旦你建立了一个连接,你想要认证一个用户。在这种情况下,对于这个简单的例子来说,你从命令行获取用户,并且将之传递给一个外部类叫做CustomAuthenticator,该类简单的显示了你可以使用另外一个在Accumulo外部的认证机制以及授权机制。在CustomAuthenticator类中,你把从命令行扫描到的用户名和密码传递到authenticate()方法中。如果一个用户成功通过认证,然后你就可以从外部的存储系统中拉取用户的授权凭证,凭证在Accumulo的类org.apache.accumulo.core.security.Authorizations类被返回。最后,如在之前的例子中所示的那样,你创建一个scanner来迭代在同一个表中value值,然后答应结果。

    Listing 12-5 显示了命令行的结果。在这个例子中,你设置了一个外部的LDAP目录,该目录中有一个用户名为joeUser,他的角色为ADMIN。

     

    本例中被认证的用户,joeAdmin,并不像之前的那些例子那样被存储在Accumulo当中。如这里表示的那样,你可以编写一个Client来认证一个用户,从企业的存储系统中拉取授权凭证,以及查询Accumulo的数据。

    关于Apache Accumulo还有很多东西--很多不能在本章中覆盖到。然而,重要的是为了数据安全性使用Accumulo的组织机构,要认识到Accumulo只是企业安全解决方案中的一个方面。企业安全需要深度防御,必须覆盖到数据的整个生命周期里面,而不仅仅在Hadoop当中的数据。

    加密静态数据

    加密Hadoop中静态数据已经是很多项目中的热门话题了--这些项目中一些是开源的,一些是商业的。Hadoop自身并不提供这样的加密功能。目前,很多公司正在保护位于不同发行版的Hadoop中的敏感数据,不仅仅是保护敏感信息,也迎合如HIPAA这样的法律或者其他安全法规.很多组织机构想要利用加密静态数据来保护避免恶意用户获取对DataNode的未经授权的访问。

    目前已经提出的一些解决方案中,包括Gazzang zNcrypt,该方案为Cloudera的发行版提供了数据安全性保护。于在2013早期发布的Intel的Hadoop发行版,已经经过优化来加密静态数据,这需要在使用该公司的Xeon处理器。好像,每天都有新的解决方案出现--但是到目前为止,所有的解决方案要么就是私有的,要么需要将你绑定在某一Hadoop的发行版中。

    如第10章中提到的那样,Rhino项目(又Intel贡献给Apache社区)包含了增强功能,包括分布式Key管理,和静态数据加密功能。Hadoop开发社区目前正在考虑将这功能也放在未来的Hadoop版本中。

    不管你用什么机制来为Hadoop加密静态数据,你必须明白静态加密功能的非故意的影响,这点很重要。如果你需要一种加密静态数据的解决方案,记住加密会影响到你的性能。如果你认为你的MapReduce工作可能比目前预想的要慢,想象加密会给性能带来什么样的影响。Intel的Hadoop发行版通过优化来做加密和解密,这种优化是通过使用特定处理器的硬件来完成的。记住只有Intel的Hadoop发行版是结合他自己的硬件加速器。企业架构师需要衡量加密静态数据给应用带来的影响--如果你确实需要这种功能,那么要根据性能来进行规划。

    目前,你可能会由于多个原因想避免实施静态数据加密,除非你继续要实现。首先,静态数据加密领域是非常复杂的,因为分布的数据和key管理。另外,Rhino项目给这个领域带来的提高即将到来,但是在此之前,你可能会绑定在某一特定的发行版或者厂商上面。最后,如提到的那样,存在静态数据加密来带来的性能上面的后果。如果你的数据是如此的敏感以至于你正在探索加密静态数据的可能性,下面的部分可能会是一个解决方案。

    网络隔离和分离方法

    如前面提到的那样,拥有保密和敏感的数据的组织机构可能一直会用网络隔离的方法来隔离他们的Hadoop集群,用这种方法来满足他们的安全需求。这些机构通常会基于用户级的授权来控制对某个单独集群的访问,这种用户级的授权机制通常使用物理安全来作为保护机制。其他一些机构会使用低限制的方法,比如分离网络,但是允许受信任服务器和工作站能够在两个网络里面进行传输。

    这些方法仍然是一个可行的选择,原因包括:

    安全性集成的复杂性 -- 如果你的安全策略非常严格,你的数据非常敏感,以至于你不得不需要集成大量Hadoop自身未提供的安全性控制到Hadoop当中,考虑使用网络隔离,将它懂其他网络中分离出来,并且限制只允许被授权的用户访问。如果你做了,那么你只需要担心Hadoop结果数据集的发布,而不是Hadoop运行时的安全性。这就最小化了你的整体风险,并且能够减少大量的工作。

    性能 -- “安全是性能的敌人”这句话经常被提及。在一个解决方案中,你加入了越多的安全性机制的时候,解决方案就会变得越慢。在保护Hadoop的时候,这点确实如此,特别是如果你考虑使用第三方的工具来加密和解密位于HDFS上面的数据的时候。许多人都会使用网络隔离的方式来轻易的避免了性能损耗。

    数据集的差异化安全性 -- 你组织的一些数据可能只能发布给某些特定人群。在这种情况,Hadoop工作的结果集也同样敏感。虽然一些和Hadoop相关的工具(比如HBase、Accumulo)能够提供一种在列级(HBase)和单元级(Accumulo)过滤访问的方式,其他使用Hadoop的工具不会提供这种安全级别。如果你正在运行Java MapReduce工作以建造某些结果集,并且使用了大量的不通的工具,也许考虑根据可访问的人群来分离集群是一个比较聪明的做法。

    Hadoop安全性蓝图的演进 -- 针对Hadoop的许多新的产品,发布品、发行版本都提供了新的安全特征。如第10章提及的,针对Hadoop的安全性的增强在近几年即将到来。即将而来的改变会影响到使用Hadoop企业的应用,在明白这些改变带来的后果之前,有很多组织机构正在选择网络隔离的模型。

    在集成之前进行数据安全评审 --  由于网络隔离的方式不能对位于其他网络上面企业应用的数据进行实时访问,在企业应用使用资料之前,网络隔离允许审查和过滤这些资料,这减小了可能的保密性和隐私的侵犯。(对于实时Hadoop来说网络隔离肯定是一把双刃剑,并且为了发布企业应用使用的数据集,还需要一定的处理)。

    企业应用安全中,网络隔离能在很多方式实现,图12-3 显示了一种方式。一个组织机构创建了一个“Data Analytics”网络,他与组织的企业网分通过一个物理的“air gap”离开来,以阻止数据在两个网络之间进行传输。在“DataAnalytics”网络中,用户恰当访问控制的数据分析师在Hadoop集群中进行查询和MapReduce操作,对于这个网络的访问控制又物理安全设备或者通过对执行查询的客户端机器进行认证。

     

     

    图 12-3 “Airgap”网络隔离内的导入导出工作流

    为了支持使用这些结果数据集的企业应用,需要开发和利用一些非常重要的工作处理:

    1. 首先,任何需要被分析的数据都必须从在企业网中数据库和应用中提取到,写入,并带入到这个隔离的网络。
    2. 一旦数据准备好被分析了,并且也被装载到集群中,Hadoop MapReduce工作就能运行,直到结果能被检阅。
    3. 基于最终的结果,结果集必须被用授权策略进行标记,该授权策略也能够被外部的企业应用控制,或者结果集必须被过滤,保证敏感、机密或者保密的数据被移除掉。
    4. 一旦数据集被过滤或者被用访问控制策略标记过了,数据集就被写入到介质中,导入到企业应用中。

    对于许多机构,由于要牵涉到两个网络,这就需要一个笨重的处理,就需要一个从原网络导出数据,并导入到数据分析网络,进行分析,过滤,然后为了企业应用准备结果集。即使这个过程非常笨重,然而,在数据非常敏感的时候,许多组织机构都会采用这种方式。

    因为牵涉的复杂性,许多组织都转向一个类似的模型,该模型限制了企业网内的可信赖主机到数据分析网络的流量,如图12-4所示,ETL处理过程可以跨网络进行,移除了之前描述的第一步。

     

    图 12-4 单向传输的网络隔离

    有些机构优先选择Apache的Accumulo来对数据进行访问控制,他们把结果集进行数据过滤之后,发布到企业网中--比如,创建一个“企业网用户”,该用户拥有的凭证等于该网络最低级别的授权。根据该用户过滤数据,通常会使结果集能够很容易的传送,而不用担心信息的非故意的泄露。

    网络隔离可以通过其他很多种方式来实现--这只是其中的一些。其他涉及到Hadoop集群网络隔离方式需要根据数据的类型,一些低限制的方式需要允许连接到企业网络中机器或者从企业网络中的机器连接出来,这需要使用访问控制列表(ACLs)来对可信赖的主机进行限制。

    你的解决方案中对于企业安全性的每一部分都依赖于你的组织机构的安全需求--两个机构很少一样,无论如何,本章中示例和指导意见应该能够帮助你构建你企业的安全解决方案。

    总结

    本章从安全策略以及以数据为中心的观点出发,为你提供了关注于数据的生命周期的企业安全视图。安全架构师在能够利用Hadoop和其他补充安全工具来解决企业安全性的不同方面,要理解这个大局,这点很重要。

    本章开头介绍了开发使用Hadoop的企业应用的安全关注点的一个总的简图。你学习了Hadoop自身没有解决的一些安全挑战点--包括数据集安全,差异化隐私,静态数据加密。你看到很多结合Hadoop构建企业安全的解决方案的方法,并且学习了一些指导意见和示例。你学习了如何使用Apache Accumulo来实现单元级的安全,同时了解了静态数据加密和一些可用的选择。你同时还学习了网络隔离的一些方法,这些方法被许多关心敏感数据暴露的机构所采用。

    安全问题目前正成为Hadoop中不管进化的话题,在接下来的几年时间内Hadoop将会成长的领域。第13章关注于其他一些即将到来的Hadoop的增强功能,其讨论趋势正涌现出来,并且将会在未来不断成长。

    展开全文
  • 企业工资管理系统论文

    万次阅读 热门讨论 2007-12-10 11:09:00
    2007届毕业生课题设计题目 企业工资管理系统 企业工资管理系统的开发摘 要 企业工资管理系统是公司管理的一个重要内容,是一种典型的管理系统企业工资管理系统是公司管理的一个重要内容,是一种典型的管理系统,...
  • 中给出了IPVS作为负载均衡解决方案的一些技术要求,但是从产品部署的角度讲,IPVS比较适用的场景还是小规模的内网或者外网部署。由于IPVS是使用Linux内核协议栈进行接入数据包的处理,所以接入的RPS最多可能在 数万...
  • 想开发一款企业远程办公一站式解决方案,功能如下: 1、定时抓取桌面。桌面异常警示(超过设定时间键盘无输入,桌面抓图无改变)。 2、按需直播桌面。 3、按需视频对话,一对一。 1、企业工作日志系统。提交相应...
  • 项目管理论文常见问题摘要-刘俊平

    千次阅读 2013-03-23 21:55:28
    项目管理论文常见问题摘要  诸位学员,在写论文时,咱们要求每个过程都必须写问题,在过程描述中有哪些问题问题怎么描写,可以参考下面的内容,当然也可以根据自己的工作实际来写,但把握一个原则必须要写! ...
  • 解决方案怎么写

    千次阅读 2013-05-06 10:18:35
    网络安全解决方案  写方案不难,知道怎么写才难。关于写方案我只总结一点,结构化地去组织你... 另外真正写方案的人,对自己写过的方案是永远不会满意的,只有这样,每次都会进步一点点,解决方案水平质量就
  • 智慧农业技术解决方案

    千次阅读 2020-06-23 16:03:24
    技术方案 设计思路 构建一体化业务支撑平台,形成农业产业体系 国家“十二五”规划中明确提出,将完善现代农业产业体系作为“十二五”的重点建设任务,因此,智慧农业的建设也应以建设一体化的农业产业...
  • MBA学位论文属于务实、实证或案例研究类型的论文,目的在于要求MBA学员将所学的管理理论知识运用于企业管理的实践,考核学员提出问题、分析问题解决问题的能力。MBA学位论文强调实用性和整合性,一方面,所有的MBA...
  • 区块链的优点弥补了电子票据的不足,随着智能合约的发展成熟区块链数字票据呼之欲出,但也面临着清算、高并发、黑客攻击的问题,本文就是对这3个问题进行讨论,并提出了一些解决方法。   **【关键字】**区块链;...
  • 【摘要】 本文讨论《企业人事信息系统》项目的需求分析方法与工具的选用。该系统的建设目标是帮助该企业管理好企业内部的人员和人员的活动,人事信息管理指的是企业员工从招聘面试到离职退休的全过程,涉及的主要...
  • MBA学位论文属于务实、实证或案例研究类型的论文,目的在于要求MBA学员将所学的管理理论知识运用于企业管理的实践,考核学员提出问题、分析问题解决问题的能力。MBA学位论文强调实用性和整合性,一方面,所有的MBA...
  • 数据挖掘竞赛-优胜解决方案实战

    千人学习 2019-05-10 02:40:30
    进入学习群,获取唐宇迪老师答疑 数据科学-优胜解决方案实战课程以真实企业数据集与任务需求为背景,结合竞赛优胜解决方案,从实战角度出发,一步步讲解如何应用机器学习算法与数据挖掘技巧在实际问题中。...
  • 论文论文搜集+摘要翻译

    万次阅读 2020-09-19 16:26:02
    此外,当前的解决方案未考虑区块链的激励机制设计和可扩展性问题。因此,在本文中,我们提出了一种用于IIoT中故障检测的基于区块链的联邦学习系统的平台架构。为了解决IIoT故障检测中的数据异质性问题,我们提出了一...
  • 撰写项目的解决方案要点解析

    万次阅读 2018-12-12 10:23:55
    一、解决方案难写在哪里? 很多人对写方案非常没有信心,一涉及到方案的事情,就束手无策,到处求人。 作为一个公认的方案打手,意思是写方案就象打字员一样,我觉得我在这方面确实是有绝活。 我基本上都是在方案...
  • 前言最近很久没有写博客了,一方面是因为...分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事务来简单聊一...
  • 毕业论文

    千次阅读 2020-04-16 22:35:30
    随着计算机网络技术的极速发展,帮助人们解决了当今社会很多的痛点问题。其中以工商注册、公司在线办理业务,由传统的线下办理到如今的线上办理,这个需求越来越受到人们的重视。从原来的线下来回跑到如今的只需要动...
  • 但随着互联网企业的高速发展,这些企业对数据存储的要求越来越高,而且模式各异,如淘宝主站的大量商品图片,其特点是文件较小,但数量巨大;而类似于youtube,优酷这样的视频服务网站,其后台存储着大量的视频文件...
  •  1当前问题的现有的解决方案 (1)现有解决方案的内容 (2)现有解决方案的效果 (3)现有解决方案的遗留问题(详见发现问题) (4)现有解决方案的遗留问题的原因(详见原因分析法) 3.2 新的解决方案 (1)新解决...
  • 怎样阅读论文

    2015-05-18 14:45:07
    2014-07-27彭明辉南京叠锶 生命是一种长期而持续的累积过程,绝不会因为单一的事件而毁了一个人的一生,也不会因为单一的事件而救了一个人的一生。属于我们该得的,迟早会得到;...一、论文的要
  • 听很多同学说怕论文检测时候被泄露,担心paperpass与知网重复率差别大,不知道怎样用paperpass可以囊括本学校的论文库,真实网站找不到,检测报告不会看,费用支付不知道怎么操作。 为帮助更多的同学、学术朋友们,...
  •  本文讨论《企业人事信息系统》项目的需求分析方法与工具的选用。该系统的建设目标是帮助该企业管理好企业内部的人员和人员的活动,人事信息管理指的是企业员工从招聘面试到离职退休的全过程,涉及的主要活动包括...
  • 智慧校园整体解决方案

    万次阅读 多人点赞 2018-06-25 16:55:00
    本文转载自公众号爱方案(ID:ifangan)。智慧校园是指以促进信息技术与教育教学深度有效融合、提高学与教的效果为目的...智慧校园=1个数据中心+智慧校园基础设施 +智慧校园应用系统+智慧性资源智慧校园解决方案...
  • 图像匹配 | 论文方法整理

    千次阅读 2020-04-26 07:00:00
    方法能够较好地解决骨盆图像匹配 问题,具有较高的准确性和鲁棒性。 3.6 图像匹配应用于遥感图像处理-高分辨率 何梦梦等人【35】对细节纹理信息丰富的高分辨率光学及 SAR( synthetic aperture radar) 遥感图像进行...
  • java系统高并发的解决方案

    万次阅读 2017-09-26 15:33:40
    负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,我个人接触过一些解决方法,其中有两个架构可以给大家做参考。 1)硬件四层交换 第四层交换使用第三层和第四层信息包的报头信息,根据...
  • 英文科技论文写作

    千次阅读 2016-03-16 14:06:57
    英文科技论文写作是进行国际学术交流必需的技能。一般而言,发表在专业英语期刊上的科技论文在文章结构和文字表达...最简单有效的方法即采用IMRaD形式(Introduction,Materials and Methods,Results,and Discussion)
  • 11.\color{#FF0000} 11.11. Blockchain-based Federated Learning for Failure ...该解决方案的核心是隐私保护技术的独特集成,该技术基于以太坊生态系统中可用的本地企业区块链组件。 arXiv:1910.12603 [cs.CY]
  • 大数据和高并发解决方案

    千次阅读 2019-04-29 15:59:24
    一、网站应用背景 ...当问题的规模在经济条件下通过堆硬件的方式解决不了的时候,我们应该通过其他的思路去解决问题,互联网发展至今,已经提供了很多成熟的解决方案,但并不是都具有适用性,你...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,948
精华内容 16,379
关键字:

企业问题解决方案论文