【安全】基于角色的访问控制

139 篇文章 447 订阅 ¥39.90 ¥99.00


在这里插入图片描述

RBAC概述

基于角色的访问控制(Role-Based Access Control, RBAC )的核心思想就是将访问权限与角色相联系,通过给用户分配合适的角色,让用户与访问权限相联系。
角色是权限的集合,对于一个系统中可以有多个角色,每个角色对不同的资源有不同的权限,当用户访问资源时,首先系统识别用户的角色,然后决定该用户是否具有访问该资源的权限。角色是一种抽象的概念,将用户权限从每个单一用户抽象出来,成为一个集合,也就是角色。
在这里插入图片描述

通过将访问权限以角色的形式抽象出来,用户与客体无直接联系,他只有通过角色才享有该角色所对应的权限,从而访问相应的客体。

同一用户可以有多个角色,同一角色也可以对应多个用户,但是角色和用户之间具有约束关系。
角色的引入,用于表示用户具有的职权和责任,代表他执行某项任务的能力,反映他在多个工作人员流转的特定任务,中的职权分配,使计算机化的信息系统对资源存取权的定义更接近现实生活。 从而使这些模型精化的过程更平滑,使现实与计算机实现策略不矛盾。

角色的概念

1.RBAC中的核心概念就是角色(Role),角色是主体的访问权限的集合,一个角色可以对应多个用户,一个用户也可以拥有多个角色,在RBAC中角色的设定应具有一下两个特征:

决定角色的用户集与决定角色的权限集所使用的时间差不多;
角色对应的用户集的改变和角色的操作集的改变只能有少数特权用户来控制。

注释:

第一点决定了基于角色的访问控制不能降低访问效率;
第二点决定了只有少数“管理者“拥有赋予单个用户权限的权利;这一点是和自主访问控制(Discretionary Access Control,DAC)相对应的,DAC中主体可以自主地把自己所拥有客体的访问权限授予其它主体或者从其它主体收回所授予的权限,自主访问控制有以下缺点:
a) 资源管理比较分散;
b) 不易管理;
c) 不能对系统中信息流进行保护,信息容易泄漏;
当这种权限被限制到少数人手里之后可以避免上述错误。

2.最小权限原则

最小权限原则:规定用户所拥有的角色集对应 的权限不能超过用户工作时所需要的最大权限,而且每次会话中激活的角色集所对应的权限要小于等于用户所拥有的权限。

该原则为了防止一个用户在一次访问中使用角色集中权限远大于本次访问所需要的权限是出现的浪费,误操作等破坏系统的行为。

3.RBAC模型不允许一次会话创建另一次会话。会话指的是某次对资源存取的访问活动。

4.角色等级
RBAC模型中引入了角色等级来反映一个组织的职权和责任分布的偏序关系;

5.RBAC中的约束
“基本排斥“角色约束“:由于角色之间相互排斥,一个用户最多只能分配到这两个角色中的一个。
“ 双重约束”: 就是指同一权限只能分派给相互排斥的角色中的一个。
“ 基本限制”: 约束规定了一个角色可被分配的最大用户数。
“ 必备角色” 约束:当用户拥有了角色A时,角色B也可以分配给该用户,但角色B在其它任何情况下都不能分配给用户,这个角色A就是角色B的必备角色。

注释;
基本排斥角色约束:比如某个项目既有测试工程师角色,也有开发工程师角色,如果是开发工程师就不能是测试工程师,反之亦然,这两个就是基本排斥约束;
双重约束:比如在政府部门中局长和副局长这两个角色是相互排斥的,且对文件进行签发的操作只能由局长执行。 这种权限分配限制阻止了权限被故意地或者非故意地分配给护士长角色。
必备角色约束:比如如果你时A公司的员工,那么你可以是A公司的测试工程师,前者就是后者的必备角色。

用户,组与角色

在这里插入图片描述

除了用户直接对应角色之外,还可以用组的形式与角色相关联,当某用户需要某权限时加入拥有该权限角色对应的组,当任务完成后从组中离开即可。
如图所示,假如新用户需要访问资源1时,假如组1,通过组1对应角色所拥有的权限进行访问,
当删除用户结束任务后,从组2中离开即可。

组的出现可以减少不必要的重复工作,比如一个男人在家,既要承担父亲的角色,又要承担丈夫,儿子的角色,如果给每一个成家立业的男人赋予这么多角色将是很多重复的工作,不如将它们抽象为“男人组“,当某男人回家之后就把他加入到“男人组“中,离开家之后就把他从“男人组“中删除,这样就极大提高了效率。

一个组可以拥有多个角色,一个角色也可以有多个组;同样一个用户也可以出于多个组中,一个组中当然也可以有多个用户。
在这里插入图片描述

如上图所示,角色1拥有组1,组2两个组,角色2拥有组2,组3两个组,反过来,组1,组2分别拥有角色1,角色2的权限,组2同时拥有角色1,角色2的权限。
用户3觉得组2的权限满足不了他了,就可以选择退出组2,加入组3。对于角色也可以选择撤销某角色或添加某角色;从角色的角度讲,它可以添加某组用户或删除某组用户,这两者都是相对的。

因为用户的角色常常改变,但某角色的任务并不会改变很多。比如某博士生进学校,首先职称为讲师,之后随着阅历和科研水平的提高,职称也逐渐变为副教授和教授,也就是说该博士生的角色一直在改变,但是角色对应的权限并不会变化很大,这也是基于角色的访问控制的最重要的优势之一。

原文:https://blog.csdn.net/butterfly9844/article/details/78342613

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python基于角色访问控制是一种权限管理系统,通过角色来控制用户在系统中的访问权限。这种访问控制方式可以确保不同用户在系统中只能执行其被授权的操作,提高系统的安全性和可管理性。 在Python中,可以通过使用不同的角色来设置不同的权限,例如管理员角色、普通用户角色等。每个角色都可以被授予不同的操作权限,例如读取、写入、删除等。 为了实现基于角色访问控制,可以使用Python中的访问控制装饰器(decorator)。通过在函数或方法的定义前添加特定的装饰器,可以限制只有具有特定角色的用户才能访问该函数或方法。 例如,可以定义一个装饰器函数`@check_role(role)`,其中`role`代表用户的角色,如管理员或普通用户。在装饰器函数内部,可以根据用户的角色来进行权限验证,如果用户具有该角色,则允许执行被装饰的函数;否则,拒绝访问并抛出相应的异常。 使用装饰器函数后,只需要在具有权限限制的函数或方法前添加`@check_role(role)`即可实现相应的访问控制。这样,系统管理员可以轻松地控制不同用户的访问权限,提高系统的安全性和可维护性。 综上所述,Python基于角色访问控制通过使用装饰器函数来限制用户的访问权限,可以提高系统的安全性和可管理性。通过设置不同的角色和相应的权限,可以确保用户只能执行其被授权的操作。 ### 回答2: Python中的角色访问控制是一种基于角色访问控制模型,它的主要目的是在应用程序中实现对资源的权限管理和控制。 Python中的角色访问控制主要由三个组成部分构成:用户、角色和权限。 首先,用户是指应用程序的最终用户或系统管理员,他们需要通过身份验证来访问系统。每个用户都被分配一个或多个角色,以确定他们在系统中拥有的权限。 其次,角色是一组特定权限的集合,它定义了用户在系统中的权限。每个角色可以有不同的权限级别和范围。比如,管理员角色可能拥有对所有资源的完全访问权限,而普通用户可能只有访问特定资源的权限。 最后,权限是系统中定义的访问控制规则。它确定了用户可以执行的操作和访问的资源。权限可以根据实际需求进行定义和配置,比如读取、写入、删除等。 Python提供了许多库和框架来实现角色访问控制,如Django框架中的认证和授权系统。这些库提供了一系列函数和装饰器来验证用户身份、检查权限和管理角色。开发人员可以根据需要定义用户、角色和权限,并使用这些库来进行访问控制管理。 总而言之,Python基于角色访问控制模型是一种灵活而可扩展的访问控制方法,它通过定义用户、角色和权限来实现对资源的权限管理和控制。开发人员可以使用Python提供的库和框架来实现这一模型,并根据实际需求进行配置和扩展。 ### 回答3: Python基于角色访问控制是指通过对用户和角色进行管理和权限控制来限制他们对系统中资源的访问。 在Python中,可以通过使用一些库和框架来实现基于角色访问控制。其中最常用的是Flask-User库和Django框架。 Flask-User库提供了用户认证和授权的功能,通过定义用户和角色模型,可以将不同的用户分配给不同的角色,并为每个角色分配特定的权限。这样,在系统中可以根据用户的角色来决定他们能够执行的操作和访问的资源。 Django框架也提供了一套完善的认证和授权机制,通过使用内置的用户和组(角色)模型,可以实现基于角色访问控制。可以为每个组分配不同的权限,并在系统中根据用户所属的组来判断他们的访问权限。 无论是使用Flask-User还是Django,都可以通过装饰器的方式来实现权限控制。可以在需要限制访问的视图函数上加上装饰器,只允许拥有特定角色的用户访问。同时,也可以在模板中使用条件语句来根据用户的角色来决定显示哪些功能或菜单。 除了库和框架提供的功能,也可以通过自定义中间件、装饰器或者钩子函数来实现更加精细的权限控制。可以根据具体的业务需求,对用户和角色进行更加细化的管理和权限分配。 总之,Python基于角色访问控制提供了一种灵活而强大的权限管理机制,能够有效地保护系统中的资源,并根据用户的角色来限制他们的访问权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值