`

权限管理的一个简单后台

 
阅读更多

在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








2
5
分享到:
评论
4 楼 hsluoyz 2019-05-22  
PyCasbin是一个用Python语言打造的轻量级开源访问控制框架( https://github.com/casbin/pycasbin ),支持ACL、RBAC、ABAC、Restful等权限模型,目前在 GitHub 开源。针对Flask可以采用Flask-Casbin权限插件:https://github.com/pycasbin/flask-casbin
3 楼 jinnianshilongnian 2013-06-24  
huangyunbin 写道
jinnianshilongnian 写道
建议把 target .classpath  .project  .settings 等这些自动生成的不要上传。 ignore掉



呵呵 其实这个也可以方便别人的

哈哈  倒无所谓;
2 楼 huangyunbin 2013-06-24  
jinnianshilongnian 写道
建议把 target .classpath  .project  .settings 等这些自动生成的不要上传。 ignore掉



呵呵 其实这个也可以方便别人的
1 楼 jinnianshilongnian 2013-06-24  
建议把 target .classpath  .project  .settings 等这些自动生成的不要上传。 ignore掉

相关推荐

    java 后台权限管理系统

    是一个简单高效的后台权限管理系统。项目基础框架采用全新的Java Web开发框架 —— Spring Boot2.0.4,消除了繁杂的XML配置,使得二次开发更为简单;数据访问层采用Mybatis,同时引入了通用Mapper和PageHelper插件,...

    java后台权限管理

    在Java后台权限管理中,我们主要探讨的是如何在企业级应用中实现安全、高效和灵活的用户访问控制。Spring MVC框架常被用作构建这部分功能的基础,它提供了强大的MVC设计模式支持,使得开发人员能够方便地处理HTTP...

    基于bootstrap的简单 后台管理 系统

    这个基于Bootstrap的简单后台管理系统采用了扁平化设计,以简洁、实用为主要特点,旨在提供一个易于理解和使用的操作界面。 Bootstrap是Twitter推出的一个开源的用于前端开发的工具包,它是一个CSS/HTML框架,包含...

    简单通用文章系统后台管理模板_购物商城后台模板_商城后台系统_

    【标题】"简单通用文章系统后台管理模板"与"购物商城后台模板"是同一资源的两种表述,核心是提供一个用于管理和控制商城运营的后台系统。这个后台模板旨在为商家提供一套直观、易用的工具,以便高效地处理日常业务。...

    基于ThinkPHP5开发的漂亮通用后台全权限管理系统

    又来分享一款基于最新thinkphp5开源框架5.0.13版本开发的通用后台权限管理系统,这是一款基于ThinkPHP5.0.13 + layui2.2.45 + ECharts +Mysql开发的后台管理框架,PHP版本要求提升到5.5。集成了一般应用所必须的基础...

    基于Python的Flask WEB框架实现后台权限管理系统

    在IT行业中,构建一个高效的后台权限管理系统是至关重要的,它能确保系统安全并规范用户访问。本项目基于Python的轻量级Web框架Flask,旨在实现一个完整的后台权限管理功能,包括用户管理、角色管理、资源管理和机构...

    基于SSM框架简单的后台权限管理系统.rar

    这个"基于SSM框架简单的后台权限管理系统"是一个典型的后台管理系统,旨在实现对用户权限的有效控制,便于企业管理后台操作。在这个系统中,我们将深入探讨SSM框架的核心组件及其在权限管理中的应用。 首先,Spring...

    简单高效的后台权限管理系统.zip

    一个简单高效的后台权限管理系统。项目基础框架采用全新的Java Web开发框架 —— Spring Boot2.0.4,消除了繁杂的XML配置,使得二次开发更为简单;数据访问层采用Mybatis,同时引入了通用Mapper和PageHelper插件,可...

    企业网站简单后台管理系统

    本系统名为“企业网站简单后台管理系统”,采用PHP编程语言进行开发,旨在提供一个高效、易用且实用的解决方案。 PHP(Hypertext Preprocessor,超文本预处理器)是一种广泛使用的开源脚本语言,尤其适用于Web开发...

    一个简单的php后台管理系统

    本文将深入探讨一个简单的PHP后台管理系统的设计与实现,帮助初学者理解PHP在后台管理中的核心概念和技术。 1. **系统架构** 一个基本的PHP后台管理系统通常由前端界面、后端逻辑处理和数据库交互三部分组成。前端...

    最新基于TP5通用后台Auth权限管理系统

    总结,"最新基于TP5通用后台Auth权限管理系统"是一个全面的学习资源,涵盖了现代Web开发的多个重要方面。无论是对于初学者还是有一定经验的开发者,都能从中受益,提升自己的技术水平。通过深入研究和实践,相信你...

    ssm easyui 权限后台管理系统

    SSM EasyUI 权限后台管理系统是一款基于Struts2、Spring和MyBatis三大主流Java Web框架构建的高效、易用的权限管理平台。EasyUI则是一个轻量级的前端框架,提供了丰富的组件和便捷的API,使得界面设计更加美观且操作...

    菜菜鸟简单后台管理

    "菜菜鸟简单后台管理"是一个适合初学者使用的后台管理系统模板,它的主要目的是为新手提供一个基础的学习平台。这个系统可能存在一些安全漏洞,因此更适合用于学习和实践,而不是用于实际生产环境。下面我们将深入...

    Tp3.2 auth后台权限管理

    在IT行业中,权限管理系统是构建复杂Web应用时不可或缺的一部分,特别是在后台管理界面。"Tp3.2 auth后台权限管理"是指使用ThinkPHP框架的3.2版本,集成Auth权限控制类来实现对后台用户权限的有效管理。这个系统设计...

    一个简单的后台管理系统模板 DIV+CSS

    对于开发者而言,这意味着这个模板将包含常见的后台管理功能模块,如用户管理、数据统计、权限控制等,并且这些功能都将通过CSS美化,提供一个直观易用的界面。同时,标签还提醒我们,这个模板可能不包含复杂的业务...

    一个简单servlet后台管理员管理的系统

    【标题】"一个简单servlet后台管理员管理的系统"揭示了这个项目的核心是构建一个基于Servlet的后台管理系统,主要用于管理员的日常操作。Servlet是Java Web开发中的重要组件,它允许开发者在服务器端处理HTTP请求,...

    简单的后台管理页面框架

    【描述】中的“做了一个简单的后台管理的页面架构”意味着开发者已经完成了基本的布局和交互设计,包括但不限于登录、导航菜单、数据展示、操作按钮等元素。页面架构的搭建通常是基于某种前端框架,以便快速构建响应...

    简单好用的Web后台管理框架

    "简单好用的Web后台管理框架"是一个专为提高开发效率而设计的解决方案,它包含了导航菜单、增删改查页面以及登录页面等功能,为开发者提供了完整的后台管理模板。 首先,我们来了解一下后台管理框架的基本概念。...

    简单个人后台管理系统模板.zip

    总的来说,这个《简单个人后台管理系统模板》是一个快速开发后台管理界面的利器,通过它可以快速搭建起一套功能完善的后台管理系统,为开发人员节省大量的时间和精力。同时,它也展示了现代Web开发中的一些关键技术...

    关于一个简单的后台管理系统的实现

    权限管理部分可能涉及到角色和权限的分配,虽然代码没有直接提供这部分,但通常会有一个后台界面供管理员操作。 总的来说,这个后台管理系统是一个典型的Web应用示例,使用Spring MVC处理前端请求,MyBatis作为...

Global site tag (gtag.js) - Google Analytics