Cloudera Hadoop开源组件Sentry:为金融、政府、医疗保健使用hadoop打下基础
本帖最后由 yuwenge 于 2015-5-16 02:31 编辑问题导读
1.Cloudera发起的开源项目Sentry用来解决什么问题?
2.Sentry为Hadoop使用者提供了哪些便利?
3.Sentry架构包含哪些内容?
static/image/hrline/4.gif
Cloudera官方博客中,Sentry项目的两位工程师Shreepadma Venugopalan和Brock Noland为我们介绍了Hadoop的“哨兵”——Sentry。译文如下:
每一天都有更多的数据、用户和应用在加入Apache Hadoop这个日益壮大的集群中来。虽然对于整个数据驱动的组织来说这是一个好消息,但对于安全管理员和监察人员来说,如何让终端用户在现存的Hadoop架构下,不在安全方面进行妥协始终是个挥之不去的问题。
尽管Hadoop在文件系统层有很强的安全性,但对于保证用户数据访问和BI应用程序的充分安全,它缺乏颗粒级的支持。因此,许多对安全系数要求较高的业内组织被迫做出选择:要么将数据置于非保护状态,要么将所有的用户拒之门外。大多数企业选择后者,严格限制对Hadoop数据的访问。
Cloudera发起的开源项目Sentry将用来解决这个问题。Sentry是一个Hadoop的授权模块,为了对正确的用户和应用程序提供精确的访问级别,Sentry提供了细粒度级、基于角色的授权以及多租户的管理模式,为Hadoop使用者提供了以下便利:
[*]能够在Hadoop中存储更敏感的数据
[*]使更多的终端用户拥有Hadoop数据访问权
[*]创建更多的Hadoop使用案例
[*]构建多用户应用程序
[*]符合规范(例如SOX,PCI,HIPAA,EAL3)
Sentry作为CDH4.3的补丁包,作为CDH4.4和Impala1.1的核心组件被推出。此外,将Sentry推荐为Apache孵化器项目,使其能在Hadoop生态圈中物尽其用。
下文将详细介绍开发Sentry的原因,以及其功能和架构的技术概述。
Hadoop安全观往知来对于金融、政府、医疗保健和其它对敏感数据的访问有严格监管的行业,如若使用Hadoop必须要达到以下几个要求:
[*]周边安全:通过网络安全、防火墙和最终的认证来确认用户身份,确保集群访问的安全。
[*]数据安全:通过屏蔽和加密技术,保护集群中的数据不会被非法访问,包括已存储的数据和传输中的数据。
[*]访问安全:通过文件系统ACL和细粒度授权,定义授权用户和应用程序对集群数据的权限。
[*]可见性:通过中央审计报告数据源和数据用法。
得益于近来在Hadoop社区的工作(例如Cloudera对Hive的贡献HiveServer2)以及与方案提供商的合作,要求1和2已经通过Kerberos认证、加密和屏蔽技术得到了实现。Cloudera Navigator通过对文件、记录和元数据的中央审计支持要求4。但对于要求3,访问安全,直到Sentry的推出才得到了解决。
没有Sentry的访问和授权
在Sentry诞生之前,对于授权有两种备选解决方案——粗粒度级的HDFS授权和咨询授权,但它们并不符合典型的规范和数据安全需求,原因如下:
[*]粗粒度级的HDFS授权:安全访问和授权的基本机制被HDFS文件模型的粒度所限制。五级授权是粗粒度的,因为没有对文件内数据的访问控制:用户要么可以访问整个文件,要么什么都看不到。另外,HDFS权限模式不允许多个组对同一数据集有不同级别的访问权限。
[*]咨询授权:咨询授权在Hive中是一个很少使用的机制,旨在使用户能够自我监管,以防止意外删除或重写数据。这是一种“自服务”模式,因为用户可以为自己授予任何权限。因此,一旦恶意用户通过认证,它不能阻止其对敏感数据的访问。
Sentry下的数据访问和授权
通过引进Sentry,Hadoop目前可在以下方面满足企业和政府用户的RBAC(role-based acess control)需求:
[*]安全授权:Sentry可以控制数据访问,并对已通过验证的用户提供数据访问特权。
[*]细粒度访问控制:Sentry支持细粒度的Hadoop数据和元数据访问控制。在Hive和Impala中Sentry的最初发行版本中,Sentry在服务器、数据库、表和视图范围提供了不同特权级别的访问控制,包括查找、插入等——允许管理员使用视图限制对行或列的访问。管理员也可以通过Sentry和带选择语句的视图或UDF,根据需要在文件内屏蔽数据。
[*]基于角色的管理:Sentry通过基于角色的授权简化了管理,你可以轻易将访问同一数据集的不同特权级别授予多个组。例如,对于某特定数据集,你可以分配给反欺诈小组查看所有列的特权,给分析师查看非敏感或非PII(personally identifiable information)列的权限,给数据接收流插入新数据到HDFS的权限。
[*]多租户管理:Sentry允许为委派给不同管理员的不同数据集设置权限。在Hive/Impala的情况下,Sentry可以在数据库/schema级别进行权限管理。
[*]统一平台:Sentry为确保数据安全,提供了一个统一平台,使用现有的Hadoop Kerberos实现安全认证。同时,通过Hive或Impala访问数据时可以使用同样的Sentry协议。未来,Sentry协议会被扩展到其它组件。
接下来,将通过Sentry的架构介绍这些功能是如何实现的。
Sentry架构Sentry是一个高度模块化和可扩展的机制。最初,它允许Impala和Hive执行细粒度的安全策略,但同时它也可以扩展到其它框架。
Sentry架构:初始绑定在Hive和Impala上,内置可扩展到其它框架Sentry包括一个核心授权提供者和一个结合层。核心授权提供者包括:一个协议引擎,可以评估和验证安全协议;一个协议提供者,负责解析协议。结合层提供一个可插拔的接口,乐意实现与协议引擎的对话。(协议提供者和结合层都提供了可插拔的接口)。目前我们已经实现了基于文件的提供者,可以理解具体协议文件格式。协议文件可被存储在本地文件系统或HDFS中,以便复制和审计。尽管Cloudera只是初步实现了对Hive和Impala的支持,但是请记住Sentry架构是可扩展的:任何开发者都可以将其绑定到其它组件(例如Pig或Cloudera搜索)或构件一个可以理解协议的数据库提供者。
在Sentry中组件特有的绑定为特定的组件实现了特权模式,而且理解内部数据结构。例如,Hive绑定实现了针对Hive的特权模式,允许对表中行/列数据的细粒度访问,以及元数据操作,例如显示表。
结论我们相信Sentry是通往Hadoop安全的关键一步,将推动大数据技术在更多行业、组织和终端用户的使用,同时为管理员提供灵活、多租户的管理,以及统一的平台。Cloudera不仅将Sentry贡献给了Hadoop生态圈,同时在大数据平台Cloudera Enterprise中也支持Sentry。
相关内容:
大数据安全体系及Sentry安全授权管理介绍
进一步补充
Apache Sentry 是一个高度模块化的系统。它为存储在Apache Hadoop集群中的数据和元数据提供了细粒度的、基于角色的认证功能。 Hadoop生态圈中的项目有着各自不同的、需要单独配置的认证系统。Hadoop的灵活性使得生态圈中不同的项目(如Hive、Solr、 MapReduce,Pig)能访问相同的数据。由于每个项目的认证配置都是独立的,管理员很可能在企图保证策略一致的情况下得到不一致的、相重叠的策略。 Sentry提供了一套集中的策略。这套策略能被应用于许多不同的访问途径。通过这个方法,Sentry解决了这个IT管理和安全上的挑战。因此,IT管理员能够对数据集进行权限设置。并且知道无论通过何种途径访问数据,这些权限控制都会得到一致地执行。 Sentry的技术细节: Sentry通过一组特权,如SELECT和INSERT,控制着对Hive Metastore中每个schema对象的访问。schema对象是数据管理中常见的实体,例如SERVER、DATABASE、TABLE、 COLUMN和URI,也就是HDFS中文件的位置。Cloudera Search有它自己的一组特权(如QUERY)和对象(如COLLECTION)。 和IT团队已经熟悉的其他RBAC系统一样,Sentry提供了:
[*]有层次结构的对象,自动地从上层对象继承权限;
[*]包含了一组多个对象/权限对的规则;
[*]用户组可以被授予一个或多个角色;
[*]用户可以被指定到一个或多个用户组中。
Sentry通常被配制成默认不允许访问服务和数据。因此,在被划分到设有指定访问角色的用户组之前,用户只有有限的权限访问系统。
cdh只配置sentry权限不安装kerberos认证可以吗?
页:
[1]