初步了解权限管理模型

为什么需要权限管理?

  • 安全性:防止误操作、人为破坏、数据泄露。
  • 数据隔离:不同的权限能看到的以及操作的数据不同
  • 明确职责:不同的角色所做的操作和所看到的数据不同

权限管理的核心是什么?

  • 用户-权限
       人员少,功能固定,或者特别简单的系统。比如 MySQL 就是属于这种权限管理模式
  • RBAC(Role-Based Access Control)
       基于角色的权限访问控制。在 RBAC 中权限与角色相关联,用户绑定所对应的角色从而得到这些角色的权限,这种关联简化了权限的管理。
       在一个组织中,角色是为了完成某种工作而创造出来的,用户则依据他的责任和资格赋予相应的角色。并且,用户也可以很容易的从 A 角色切换成 B 角色。角色可以根据新的需求和系统的合并来赋予新的权限。权限也可以从某个角色中回收。
       RBAC 模型主要关注于 角色-用户-权限之间的关系,角色和用户是多对多的关系,角色和权限是多对多的关系。
    如果现实中,有很多人都有相同的权限,RBAC 可以拓展出 group 这个概念的,group 是可以解决多角色相同权限的问题,比如:A 部门的资料,只能 A 部门的人员看,那么用户的账号就直接赋予 A 部门这个角色组就好了。
       RBAC 模型还支持著名的三大安全原则:最小权限原则、责任分离原则、数据抽象原则。
    图片来源于网络,侵删

理想中的权限管理?

  • 实现角色级的权限管理
       角色级的权限管理都是基于 RBAC 模型实现的。这种模型几乎能覆盖所有场景,同时能够满足需求的不断变化,许多临时的调整也能很好的应对。基于 RBAC 的权限的管理,很好的完成了对权限的抽象,只需要根据不同的场景进行不同的实现就好。相对于直接对用户绑定权限,RBAC 可以对用户进行更好的扩展。
  • 可实现功能级、数据级权限
       功能级权限就是功能权限管理技术,一般就使用 RBAC 权限管理模型。功能级权限管理系统会提供如下功能:
        1、角色管理系统由用户定义角色赋予权限;
        2、用户角色管理界面,由用户给系统用户赋予角色;
        3、支持用户定义权限。
        目前数据级权限管理没有统一的技术,大体上采用的是如下技术:
       1、硬编码,这种情况居多,但是弊端非常显然,耦合性高,不易测试,不易维护;
       2、使用规则引擎,有一些企业将这种逻辑用规则的形式体现出来。这可以解决很多问题,但是规则引擎并不是专业用于权限管理,所以对于一些复杂的权限管理就显得力不从心了;
       3、使用第三方专业软件。
  • 简单易操作,能够实现各种需求
       所有涉及到权限相关的都能有相关的页面可操作,同时能提供一个页面能查询到一个用户当前的权限列表。需要的页面如下:
       1、权限管理界面;
       2、角色管理界面;
       3、用户管理界面;
       4、角色和权限关系维护界面;
       5、用户和角色关系维护界面。

开源的权限管理项目

  • Spring Security
       是一个能够为基于 Spring 的企业应用系统,提供声明式的安全控制解决方案的安全框架。
       它提供了一组可以在 Spring 应用上下文配置的 Bean,充分利用了 Spring 控制反转、依赖注入和面向切面编程功能。对已有系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
  • Apache Shiro
       Shiro 是一个强大且易用的 Java 安全框架,执行身份验证、授权、密码学和会话管理。Shiro 有易于理解的 API。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值