`
sw1982
  • 浏览: 511499 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

RBAC权限模型的运用

阅读更多

    角色访问控制(RBAC)引入了Role的概念,目的是为了隔离User(即动作主体,Subject)与Privilege(权限,表示对Resource的一个操作,即Operation+Resource)。 Role作为一个用户(User)与权限(Privilege)的代理层,解耦了权限和用户的关系,所有的授权应该给予Role而不是直接给User或Group。Privilege是权限颗粒,由Operation和Resource组成,表示对Resource的一个Operation。例如,对于新闻的删除操作。Role-Privilege是many-to-many的关系,这就是权限的核心。基于角色的访问控制方法(RBAC)的显著的两大特征是:1.由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销。2.灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。

      在一个土建工程管理的项目中,琢磨了一把权限模型。大致的需求就是把用户分为“现场用户”,“总部用户”。总部的用户可以新立项目,查看既有项目的进度与预算的开支;现场的用户负责施工并录入项目进度,填写进度,账务记录。

    在软件系统中,显然不存在总部,现场用户之分。只是同一张用户表带有不同权限的记录而已。下面的数据库模型,有User用户,Role角色,Resource资源三个对象。他们之间关系为多对多,因此另外产生两张连接表。

    Role就是赋予了一组资源的对象,用户通过关联role来获取可以访问的资源,可以将用户与具体的权限分开解耦,而User和Role之间多对多的关系,可以灵活的给一个用户多个role(比如总部经理,还可以兼任现场指挥),而一个role的资源也很方便的付给多个用户。一般系统的权限模型大致如此。

 

本以为设计到这里权限模型就足够了,可是设计下面的Project(项目表)的时候发现了问题。这个项目可能同时数个项目并行,而一个人会不会在不同项目中兼任不同Role呢?比如说张三是项目1中的经理Role,而在项目2中可能只是组长。因此这个特殊的项目权限模型必须加入对Project的关联。

因此,需要在USER_TO_ROLE中间表中,再加入一个Project_ID外键关联到项目表,把用户的角色在这个地方和项目关联起来。同样用户和角色之间有其他制约的关系,只需要在USER_TO_ROLE表中加外键即可,无需影响上面的权限模式

分享到:
评论

相关推荐

    基于rbac模型的权限管理系统

    在IT行业中,权限管理系统是确保数据安全和操作合规性的重要组成部分。基于RBAC(Role-Based Access Control,...在实际应用中,我们需要根据具体的业务场景和安全需求,灵活运用RBAC模型来构建合适的权限管理体系。

    tp框架RBAC权限管理

    RBAC是一种广泛采用的权限模型,通过角色来分配权限,简化了权限管理,降低了权限设置的复杂性。 1. TP框架简介: TP(ThinkPHP)框架是中国最流行的PHP开发框架之一,以其快速、灵活、简洁的特性深受开发者喜爱。...

    RBAC模型的通用权限管理系统的设计

    在设计RBAC权限管理系统时,核心对象模型至关重要。模型通常包括用户、用户组、角色、目标、访问模式和操作。用户通过用户组被分组管理,角色被赋予特定的权限,目标是需要保护的资源,访问模式定义了用户如何与资源...

    NIST RBAC模型 pdf 【英文】

    **NIST RBAC模型详解** NIST(美国国家标准与技术研究所)的角色基础访问控制...通过阅读这份资料,你将能够理解如何运用NIST RBAC模型来保护组织的数据和资源,以及如何设计和优化权限结构以适应不断变化的业务环境。

    ThinkPHP(RBAC)权限管理系统_第11讲_权限管理

    本课程详细讲解了如何利用ThinkPHP框架构建RBAC权限管理系统,通过实例演示和代码解析,帮助开发者理解和掌握这一重要技术,从而能够构建更加安全、高效的Web应用。通过学习,你将能熟练运用RBAC模型来设计和实现...

    ThinkPHP(RBAC)权限管理系统_第7讲_角色管理

    本教程主要讲解了如何在ThinkPHP框架下实现RBAC权限管理系统中的角色管理。 首先,我们需要理解RBAC的基本概念。在RBAC模型中,用户通过扮演不同的角色来获取相应的权限。角色是一组预定义的权限集合,用户可以被...

    ThinkPHP(RBAC)权限管理系统_第28讲_角色导航菜单加载

    总的来说,“ThinkPHP(RBAC)权限管理系统_第28讲_角色导航菜单加载”这一主题涵盖了RBAC模型的运用、数据库设计、数据查询、菜单动态渲染以及权限验证等多个关键点,对于理解和实践基于角色的权限管理系统有着重要的...

    thinkphp3.1 rbac

    RBAC是一种权限模型,它将权限与角色关联,用户通过扮演不同的角色获取相应的权限。在RBAC模型中,通常包含三个核心概念: 1. 用户(User):实际操作系统的实体,如管理员、普通员工等。 2. 角色(Role):一组...

    全程手把手带你运用Java技术栈,打造一套基于最流行的RBAC拓展模型的,分布式的,有界面的,高灵活性,高拓展性的企业级权限管理

    全程手把手带你运用Java技术栈,打造一套基于最流行的RBAC拓展模型的,分布式的,有界面的,高灵活性,高拓展性的企业级权限管理系统。源代码

    ThinkPHP(RBAC)权限管理系统6-10

    总结,ThinkPHP的RBAC权限管理系统为企业级应用提供了高效、灵活的权限管理方案。通过角色与权限的抽象,使得权限分配变得简单,同时保证了系统的安全性和可扩展性。在实际开发中,熟练掌握RBAC的运用,能够极大地...

    ThinkPHP(RBAC)权限管理系统_第29讲_角色导航菜单加载

    本视频课程“ThinkPHP(RBAC)权限管理系统_第29讲_角色导航菜单加载”将详细讲解如何在实际项目中实施这些步骤,特别是如何实现角色导航菜单的动态加载,帮助开发者更好地理解和运用RBAC权限管理。

    内置有Rbac权限的YII2框架源码

    总之,内置Rbac权限的Yii2框架源码使得权限管理和控制变得简单而灵活。通过合理设置角色、权限和规则,开发者可以确保系统安全,同时提供定制化的用户体验。在实际项目中,理解并熟练运用这些知识点至关重要。

    ThinkPHP(RBAC)权限管理系统_第3讲_系统功能

    总的来说,本课程通过ThinkPHP框架讲解了如何构建一个完整的RBAC权限管理系统,涵盖了从数据库设计、模型构建到功能实现的全过程。通过学习,开发者不仅可以掌握RBAC模型的运用,还能加深对ThinkPHP框架的理解,提升...

    rbac原理讲解

    RBAC是一种权限管理模型,它将用户与权限的关系通过角色进行间接关联,从而实现权限的灵活管理和分配。在RBAC模型中,用户通过扮演不同的角色来获取相应的操作权限,而角色则根据业务需求被赋予特定的权限集合。这种...

    thinkphp rbac架构代码

    **ThinkPHP RBAC架构代码详解** 在Web开发中,权限管理是不可或缺的一部分,尤其是对于大型企业级应用。Role-Based Access Control...同时,理解并熟练运用RBAC的核心概念,将有助于在实际开发中更好地进行权限控制。

    基于rbac设计的权限管理系统-rbac.zip

    本系统着重探讨了如何利用RBAC模型来实现用户、角色和权限的有效关联,从而达到灵活、可扩展的权限管理目标。 RBAC模型的核心思想是将用户的访问权限与角色关联,而不是直接与用户关联。这样做的好处在于简化了权限...

    27.权限控制模型.pdf

    在众多权限模型中,RBAC(Role-Based Access Control,基于角色的访问控制)是一种广泛运用并且相对成熟的模型。它通过引入角色这一概念,简化了权限的分配和管理。我们接下来将详细解析RBAC模型及其在产品开发中的...

    python rbac

    Python RBAC是一种基于角色的访问控制框架,它允许系统管理员根据用户的角色分配权限,而不是直接为每个用户分配权限。这种设计模式简化了权限管理,使得在大型系统中更易于维护和扩展。在Django这样的Web开发框架中...

    基于SpringBoot3.0,SpringCloud2022&Alibaba,SASOAuth2的微服务RBAC 权限管理系统

    在RBAC权限管理中,OAuth2允许用户通过获取特定角色的访问令牌来访问相应资源,从而实现精细的权限控制。 在RBAC模型中,权限管理分为角色(Role)、资源(Resource)和操作(Action)三个基本元素。用户被赋予不同...

    07-角色权限模型.md

    在当今的IT行业,尤其是在大型企业中,前端开发人员在面试过程中通常会被要求设计技术方案。...在进行角色权限模型设计时,应当结合实际情况,灵活运用RBAC等成熟模型,确保系统设计既高效又稳定。

Global site tag (gtag.js) - Google Analytics