搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 中兴大数据 > Apache Ranger:Hadoop生态圈的安全管家

Apache Ranger:Hadoop生态圈的安全管家

中兴大数据 2017-10-30

文 | 谢海红

Apache Ranger是一个支持、监控和管理整个Hadoop集群数据安全的框架,它的愿景是在Apache Hadoop生态系统中提供全面的安全性。随着Apache YARN的出现,Hadoop平台现在可以支持一个真正的数据湖体系结构。企业可以在多租户环境中运行多个工作负载,因此, Hadoop中的数据安全性需要发展。

Apache Ranger总体架构

Ranger的总体架构如下图所示,主要由三个部分构成:

  • AdminServer:提供REST接口来对服务、策略、用户信息等进行增删改查,同时内置了一个Web界面进行管理。

  • AgentPlugin:嵌入到各个Hadoop组件中,定期从AdminServer拉取策略,根据策略执行访问决策树,并且定期记录访问审计。

  • UserSync:定期从LDAP/File等中加载用户,上报给AdminServer,实现用户同步功能。

Apache Ranger:Hadoop生态圈的安全管家

Apache Ranger支持组件及版本

Ranger支持的服务有HDFS、HBase、Hive、YARM、Strom、Kafka、Knox、Solr、Nifi等,但要注意各个组件的版本,官网提供的版本如下:

Apache Ranger:Hadoop生态圈的安全管家

Apache Ranger权限模型

访问权限即定义”用户-资源-权限“这三者间的关系,Ranger基于策略来抽象这种关系,进而延伸出自己的权限模型。为了便于理解,我简化了模型,用以下表达式来描述它:

  • Policy = Service + List<Resource>+ AllowACL + DenyACL

  • AllowACL =List<AccessItem> allow + List<AccssItem> allowException

  • DenyACL =List<AccessItem> deny + List<AccssItem> denyException

  • AccessItem =List<User/Group> + List<AccessType>

接下来从”用户-资源-权限”的角度来详解上述表达:

  • 用户:由User或Group来表达;User代表访问资源的用户,Group代表用户所属的用户组。

  • 资源:由(Service,Policy)二元组来表达;一条Policy唯一对应一个Service,但一个Service可以创建对应多个Policy。

  • 权限:由(AllowACL,DenyACL)二元组来表达,用户在AllowACL中表示允许执行,而DenyACL中表示拒绝执行。

下表列出了几种常见系统的模型实体枚举值: 

Apache Ranger:Hadoop生态圈的安全管家

举个例子,现在一条Policy有(allow,allowException, deny, denyException)这么四组AccessItem,那么判断用户最终权限的决策过程是怎样的?

总体来说,这四组AccessItem的作用优先级由高到低依次是:

  • denyException > deny > allowException > allow

用户访问决策树可以用以下流程图来描述:

Apache Ranger:Hadoop生态圈的安全管家

Apache Ranger系统插件

前文已经提到,系统插件主要负责三件事:

  • 定期从AdminServer拉取策略

  • 根据策略执行访问决策树

  • 定期记录访问审计

以上执行逻辑是通用的,可由所有系统插件引用,因此剩下的问题是如何把这些逻辑嵌入到各个系统的访问决策流程中去。目前Ranger里有两种做法:

  • 实现可扩展接口:多数的系统在实现时都有考虑功能扩展性的问题,一般会为核心的模块暴露出可扩展的接口,访问控制模块也不例外。Ranger通过实现访问控制接口,将自己的逻辑嵌入各个系统。

  • 代码注入:不排除有少数系统没有将访问控制模块暴露出扩展点,这个时候Ranger依赖Java代码注入机制(java.lang.instrument)来实现逻辑嵌入。以HDFS插件为例,Ranger利用ClassFileTransformer,直接修改HDFS访问控制类FSPermissionChecker的ClassFile,将checkPermission方法替换成Ranger的自定义实现。

总结

随着Hadoop生态圈进军企业级市场,数据安全逐渐成为关注焦点。Ranger作为标准化的访问控制层,引入统一的权限模型与管理界面,极大地简化了数据权限的管理。目前,Ranger已正式成为Apache顶级开源项目,在功能性与稳定性上也越来越完善,以便其能覆盖更多的系统,一统江湖成为标准。

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《Apache Ranger:Hadoop生态圈的安全管家》的版权归原作者「中兴大数据」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注中兴大数据微信公众号

中兴大数据微信公众号:ZTE_BigData

中兴大数据

手机扫描上方二维码即可关注中兴大数据微信公众号

中兴大数据最新文章

精品公众号随机推荐