在github上的地址是 https://github.com/huangyunbin/hadoopSecure
效果图可以看这里:https://github.com/huangyunbin/hadoopSecure/issues/1
零 为什么有这个项目
需求:有不同的部门使用同一个hadoop系统,不同部门之间不能访问彼此的数据,除非已经授权.
hadoop的权限控制是基于操作系统的.不同部门的用户在linux中不同组的,也就是other.都是other的话就是不能区分对待了.
当然我们我们可以设置linux的acl来区分不同的组的权限.但是acl的实现过程中不是很方便和灵活.
我们决定自己写一个权限控制的管理后台.我们的一个出发点是存取要很快速,所以决定使用redis来存储权限信息.
要让hadoop能够用上这个权限后台,必须把权限后台代码嵌入到hadoop的源码中去.
一 代码的说明:
项目基于springmvc。
controller.annotation包
是用于springmvc页面到后台的多个对象绑定。
主要用到修改权限页面,因为这个时候有两个对象,一个是就的权限对象和新的权限对象。
主要通过@FormModel这个注解来实现的。
controller包
这个很简单,就是两个controller,分别对应用户和用户组,提供了接受增删改查的请求的方法。
model包
这个是最简单的,只有一个权限对象。主要属性是文件路径和允许的操作。
persist包
主要是提供了redis对应的操作方法
RedisStore保存的是redis的配置信息,项目比较简单,就没有使用读取配置文件的形式了。
RedisStore负责从redis的连接池中获取redis的连接。
RedisDao就是主要的实现类了。
有点是要注意的,保存一个权限的时候,redis中是保存了两个对象的,一个key是用户名,一个key是路径名。也就是要满足能方便的找到一个用户有哪些路径的权限,一个路径上有哪个用户有权限。
jsp页面只是用到了jsp的一些标签。
二 嵌入到cdh4的代码中:
嵌入的代码直接读取redis中的数据。所以只用到上面说的源码的persist包。
嵌入到的类是hdfs包中的org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker类的checkPermission方法(110行)
在最后加了一行代码: SecurityCenter.check(inodes[inodes.length - 1], ugi, access);
SecurityCenter的源码地址:http://pan.baidu.com/s/1GaEsa
SecurityCenter是和hadoop的自己的代码FSPermissionChecker在同一个包中的.
SecurityCenter依赖的代码都在: http://pan.baidu.com/s/1yzIm6
这些代码是依赖jedis和msgpack的,所以在hdfs包中的pom文件需要增加这个
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.msgpack</groupId>
<artifactId>msgpack</artifactId>
<version>0.6.7</version>
</dependency>
三 kerberos的使用
kerberos主要是验证用户的。cdh4从kerberos中拿到用户名然后去redis的数据中查找权限。
kerberos的原理可以参照 http://huangyunbin.iteye.com/blog/1873916
kerberos的安装最好的还是官方的文档,网上写的基本不靠谱。官方安装文档:http://web.mit.edu/kerberos/krb5-current/doc/admin/install.html
其实主要是一些配置。kadmin和klist命令能正常使用的时候,基本就差不多了。
kerberos的一些配置和命令说明 http://web.mit.edu/kerberos/krb5-current/doc/user/index.html
注意的地方
1 host设置,可以参照:http://huangyunbin.iteye.com/blog/1895341
2 导出证书的时候要kadm5.acl中配置当前用户 可以参照:http://huangyunbin.iteye.com/blog/1900550
3 要设置证书的有效期,这样才能续约 可以参照http://huangyunbin.iteye.com/blog/1897338
分享到:
相关推荐
是一个简单高效的后台权限管理系统。项目基础框架采用全新的Java Web开发框架 —— Spring Boot2.0.4,消除了繁杂的XML配置,使得二次开发更为简单;数据访问层采用Mybatis,同时引入了通用Mapper和PageHelper插件,...
在Java后台权限管理中,我们主要探讨的是如何在企业级应用中实现安全、高效和灵活的用户访问控制。Spring MVC框架常被用作构建这部分功能的基础,它提供了强大的MVC设计模式支持,使得开发人员能够方便地处理HTTP...
这个基于Bootstrap的简单后台管理系统采用了扁平化设计,以简洁、实用为主要特点,旨在提供一个易于理解和使用的操作界面。 Bootstrap是Twitter推出的一个开源的用于前端开发的工具包,它是一个CSS/HTML框架,包含...
【标题】"简单通用文章系统后台管理模板"与"购物商城后台模板"是同一资源的两种表述,核心是提供一个用于管理和控制商城运营的后台系统。这个后台模板旨在为商家提供一套直观、易用的工具,以便高效地处理日常业务。...
又来分享一款基于最新thinkphp5开源框架5.0.13版本开发的通用后台权限管理系统,这是一款基于ThinkPHP5.0.13 + layui2.2.45 + ECharts +Mysql开发的后台管理框架,PHP版本要求提升到5.5。集成了一般应用所必须的基础...
在IT行业中,构建一个高效的后台权限管理系统是至关重要的,它能确保系统安全并规范用户访问。本项目基于Python的轻量级Web框架Flask,旨在实现一个完整的后台权限管理功能,包括用户管理、角色管理、资源管理和机构...
这个"基于SSM框架简单的后台权限管理系统"是一个典型的后台管理系统,旨在实现对用户权限的有效控制,便于企业管理后台操作。在这个系统中,我们将深入探讨SSM框架的核心组件及其在权限管理中的应用。 首先,Spring...
一个简单高效的后台权限管理系统。项目基础框架采用全新的Java Web开发框架 —— Spring Boot2.0.4,消除了繁杂的XML配置,使得二次开发更为简单;数据访问层采用Mybatis,同时引入了通用Mapper和PageHelper插件,可...
本系统名为“企业网站简单后台管理系统”,采用PHP编程语言进行开发,旨在提供一个高效、易用且实用的解决方案。 PHP(Hypertext Preprocessor,超文本预处理器)是一种广泛使用的开源脚本语言,尤其适用于Web开发...
本文将深入探讨一个简单的PHP后台管理系统的设计与实现,帮助初学者理解PHP在后台管理中的核心概念和技术。 1. **系统架构** 一个基本的PHP后台管理系统通常由前端界面、后端逻辑处理和数据库交互三部分组成。前端...
总结,"最新基于TP5通用后台Auth权限管理系统"是一个全面的学习资源,涵盖了现代Web开发的多个重要方面。无论是对于初学者还是有一定经验的开发者,都能从中受益,提升自己的技术水平。通过深入研究和实践,相信你...
SSM EasyUI 权限后台管理系统是一款基于Struts2、Spring和MyBatis三大主流Java Web框架构建的高效、易用的权限管理平台。EasyUI则是一个轻量级的前端框架,提供了丰富的组件和便捷的API,使得界面设计更加美观且操作...
"菜菜鸟简单后台管理"是一个适合初学者使用的后台管理系统模板,它的主要目的是为新手提供一个基础的学习平台。这个系统可能存在一些安全漏洞,因此更适合用于学习和实践,而不是用于实际生产环境。下面我们将深入...
在IT行业中,权限管理系统是构建复杂Web应用时不可或缺的一部分,特别是在后台管理界面。"Tp3.2 auth后台权限管理"是指使用ThinkPHP框架的3.2版本,集成Auth权限控制类来实现对后台用户权限的有效管理。这个系统设计...
对于开发者而言,这意味着这个模板将包含常见的后台管理功能模块,如用户管理、数据统计、权限控制等,并且这些功能都将通过CSS美化,提供一个直观易用的界面。同时,标签还提醒我们,这个模板可能不包含复杂的业务...
【标题】"一个简单servlet后台管理员管理的系统"揭示了这个项目的核心是构建一个基于Servlet的后台管理系统,主要用于管理员的日常操作。Servlet是Java Web开发中的重要组件,它允许开发者在服务器端处理HTTP请求,...
【描述】中的“做了一个简单的后台管理的页面架构”意味着开发者已经完成了基本的布局和交互设计,包括但不限于登录、导航菜单、数据展示、操作按钮等元素。页面架构的搭建通常是基于某种前端框架,以便快速构建响应...
"简单好用的Web后台管理框架"是一个专为提高开发效率而设计的解决方案,它包含了导航菜单、增删改查页面以及登录页面等功能,为开发者提供了完整的后台管理模板。 首先,我们来了解一下后台管理框架的基本概念。...
总的来说,这个《简单个人后台管理系统模板》是一个快速开发后台管理界面的利器,通过它可以快速搭建起一套功能完善的后台管理系统,为开发人员节省大量的时间和精力。同时,它也展示了现代Web开发中的一些关键技术...
权限管理部分可能涉及到角色和权限的分配,虽然代码没有直接提供这部分,但通常会有一个后台界面供管理员操作。 总的来说,这个后台管理系统是一个典型的Web应用示例,使用Spring MVC处理前端请求,MyBatis作为...