`
yzgfbj
  • 浏览: 78492 次
  • 来自: ...
社区版块
存档分类
最新评论

【转】看看 ACL 与 RBAC 的区别

阅读更多
我想理一理思路,看看 ACL 与 RBAC 的区别:

还是以部门新闻来讨论,对于静态授权,在系统设计做需求分析的时候,往往就可以
确定一个系统角色的种类,像新闻系统中,根据需求,可能会有新闻发布者(Publisher),
新闻审核者(Reviewer),新闻浏览者(Visitor),管理员(Manager)以及超级管理员(Administrator)。

在设计的时候我们也已经把这些角色与相应的一些 Operation 绑定在一起。
如:Publisher 拥有 Publish_Operation + Modify_Operation
Reviewer 拥有 Review_Operation + Modify_Operation + Delete_Operation
Visitor 拥有 Visit_Operation,
Manager 拥有 Create_News_System_Instance_Operation +
Modify_News_System_Instance_Operation +
Delete_News_System_Instance_Operation
Administrator 负责 Create_User_Operation+
Delete_User_Operation+
Assign_Permission_Operation+
Deassign_Permission_Operation +
Assign_Role_Operation+
Deassign_Role_Operation

在授权时,往往先为一个用户(USER),赋予一个角色,如: Manager. 这样,USER 就
拥有了对所有 News_Instance(也就是部门新闻) 操作的权限。
现在假设用户(UserA)访问 Create_News_System_Instance 功能来创建一个新的新闻实例,
叫做 采购部门新闻. 因为我们在设计的时候就确定,该功能只能由 Manager 来访问,
于是,系统中权限的判断部分会首先判断当前用户(UserA)是否 Manager 角色,是的话就允许
访问,否则显示没有授权的错误信息。

所以,对于 Manager 这样的应用:
[1] 在设计的时候,我们就将这样的角色与相应的 Permissions(A list of Subject-Operation pairs)
关联在一起了,这里的 Subject 是所有的新闻实例(News_Instance),Operation
就是 Create,Modify以及 Delete.
[2] 在授权的时候,超级管理员(Administrator)可以利用 Assign_Role_Operation 将用户(User)
与 Manager 这个角色关联起来。这样,User 就拥有了对所有新闻实例的 Create, Modify 以及 Delete
操作的权限。
[3] 在权限判断的时候,RBAC 系统首先判断当前用户是否是设计时确定的角色(这里是Manager),
如果是,就允许用户访问,否则就拒绝访问,并显示错误信息。


对于 Publisher 这样的角色有些不同,Publisher 这个角色只与 Operation 绑定在一起,并没有与
具体的 Subject 相关联,因此,在授权的时候,还需要指定相应的 Subject.

所以,对 Publisher 这样只能事先确定 Operation 的应用来说:
[1] 在设计的时候,我们只能确定该角色能进行哪些操作,而不能确定这些操作实施的对象。
[2] 在授权的时候:
[2.1] 首先将 Publisher 与 Subject 关联,如将 Publisher 与采购部门新闻关联产生:
采购部门新闻_News_Publisher 的角色
[2.2] Administrator 为用户(User)授于 采购部门新闻_News_Publisher 角色。从而 User
拥有了对"采购部门新闻"的发布权限
[3] 在权限判断的时候,用户访问 采购部门新闻_News_Publish_Operation, 系统首先判断
该用户是否 采购部门新闻_News_Publisher?如果是,就允许用户访问,否则就拒绝访问,
并显示错误信息。
这里用到的方法可能是这个样子:
boolean checkPermission(采购部门新闻,Publish_Operation,User){
List publishers = RBAC.findRole(new Permission(采购部门新闻,Publish_Operation));
if(publishers==null) return false;
for(Iterator it = publishers.iterator; it.hasNext();){
Role publisher = (Publisher)it.next();
if(publisher.isAssignedWithUser(User)){
return ture;
}
}
return false;
}

假如说,不采用 RBAC 的做法,考虑一下,使用 ACL,那又会是什么样子呢?
对于 Manager 那样能在设计时就确定 Subject 与 Operation 的角色,我认为没有必要考虑 ACL 了.
对于 Publisher 这样,只能事先确定 Operation 的角色,我们来做个对比.
权限系统要灵活,但是也要简洁,要不然就很可能导至失控。因为嵌套的层次太多,有可能发生不可
预知的情况. 有一天管理员可能会莫明的发现,怎么这个人会有这个权限的?
所以,我认为在 RBAC 里不支持 Role 的层级关系为妙。

好了,现在来看看 ACL 对 Publisher 应用
这里指的 ACL 是直接将 User 或 Group 与 Subject 关联的做法。
User 与 Subject 是多对多的情况,
Group 与 Subject 也是多对多的情况,
同样的,User 与 Group 也是多对多的情况。

现在,还是以采购部门新闻为例:
[1] 在授权的时候,可以有以下操作:
[1.1] 将 User 与 Subject 关联在一起,但是要指定相应的 Operation.
如: assignPermission(采购部门新闻,Publish_Operation,User)
[1.2] 将 Group 与 Subject 关联在一起:
如: assignPermission(采购部门新闻,Publish_Operation,Group)
[1.3] 将 User 与 Group 关联
如:
assignUserGroup(User,Group)

[2] 在权限判断的时候,用户访问 采购部门新闻_News_Publish_Operation,系统做如下检查:
boolean checkPermission(采购部门新闻,Publish_Operation,User){
boolean hasPermission = false;
// users include:
// 1. Permission direct assigned Users
// 2. The user assigned with the groups that assigned with permission
List users = getAssignedUsers(new Permission(采购部门新闻,Publish_Operation));
hasPermission=users.contains(User)?true:false;BR>
分享到:
评论

相关推荐

    访问控制:对NodeJS和Typescript的简单,灵活和可靠的访问控制。 同时支持RBAC和ABAC

    访问控制 用于NodeJS和Typescript的简单,灵活和可靠的 / 访问控制。要求node >= 8.6 ,已通过以下测试: node@8.6.0 node@12.8.1 typescript >= 4.0 ,经过以下... 下面我们将看看如何使用Bluejay的AccessControl来

    吉林大学计算机安全2007级试卷

    从给定的文件信息来看,这是一份关于计算机安全的试卷,主要涵盖了计算机安全领域的多个核心知识点,包括但不限于主动攻击类型、加密技术、操作系统安全、Kerberos认证、安全终端概念、Unix文件权限管理、访问控制...

    信息安全工程师.7z

    6. **身份认证与访问控制**:掌握多种身份验证机制(如多因素认证)和访问控制模型(如ACL、RBAC),以确保只有授权用户可以访问资源。 7. **数据备份与恢复**:了解数据备份策略(如全量备份、增量备份、差异备份...

    别人写的比较好的公共库

    2. **权限模型**:学习不同的权限模型,如Discretionary Access Control(DAC)、Mandatory Access Control(MAC)和Role-Based Access Control(RBAC),理解它们的区别和应用场景。 3. **编程接口**:熟悉库提供...

    系统访问控制与审计技术.pptx

    综合来看,系统访问控制与审计技术是构建安全信息系统的关键要素。它们确保了资源的有效利用,防止了未授权的访问,同时也提供了追踪和分析系统行为的能力,从而增强了整体的信息安全。随着技术的发展,访问控制和...

    系统访问控制与审计技术(ppt32).ppt.pptx

    系统访问控制与审计技术是确保信息安全的关键环节,主要涉及如何管理和限制用户对系统资源的访问,同时记录并监控这些访问行为,以防止未经授权的活动。本章主要探讨了三种基本的访问控制技术:自主访问控制、强制...

    AccessControl-5.7-cp38-cp38-macosx_11_0_arm64.whl.zip

    首先,我们来看"AccessControl-5.7-cp38-cp38-macosx_11_0_arm64.whl"这个文件名。它是Python的轮子(wheel)格式,一种预编译的Python软件包,用于简化安装过程。"cp38"代表Python 3.8版本,"macosx_11_0_arm64...

    AccessControl-6.1-cp39-cp39-win_amd64.whl.zip

    这可能包括角色基础的访问控制(RBAC)、访问控制列表(ACL)或其他安全策略的实现,以帮助开发者构建安全的应用程序。 接着,我们来看看`.whl`文件。它是Python的Wheel格式,是一个预先构建的Python包,可以直接由...

    信息安全基础技术与原理介绍.pptx

    3. 基于角色的访问控制模型(RBAC):用户权限与其在组织中的角色相关联,减少了管理复杂性并强化了安全性。 4. 访问矩阵模型:提供了一个清晰的权限分配框架,列出所有用户和资源之间的访问关系。 5. 保密性和...

    java web 系统权限设计 源码

    - Spring Security:这是一个强大的安全框架,提供了完善的权限控制功能,支持RBAC和其他访问控制模型,能与Spring Boot无缝集成。 - Shiro:另一个常用的Java安全框架,提供了一套简洁的API,易于理解和使用,...

    系统访问控制与审计技术.ppt.pptx

    【系统访问控制与审计技术】 访问控制是网络安全和信息系统安全的核心机制之一,旨在确保只有授权的用户能够访问他们需要的资源,同时防止未经授权的访问。访问控制是信息安全理论的基石,涉及用户身份验证、授权...

    PB非常优秀的授权框架源码

    在IT行业中,授权框架通常是基于某种设计模式实现的,如访问控制列表(ACL)、角色基础的访问控制(RBAC)或策略基础的访问控制(PBAC)。从标题来看,这个框架可能采用了高效的授权策略,使得操作简单且直观,这...

    Rhino-Security-Administration-a simple POC to manage Rhino Secur

    3. **访问控制**:通过ACL(Access Control List)或RBAC(Role-Based Access Control)实现对资源的访问限制。 4. **权限分配**:动态地为用户或角色分配或撤销权限,以便控制他们能访问哪些数据或功能。 5. **审计...

    Deepsky 是一个很好的网络验证开发的demo

    常见的授权模型有基于角色的访问控制(RBAC)、访问控制列表(ACL)等。Deepsky可能演示了如何根据用户的角色和权限设置,灵活控制不同用户对系统功能的访问。 【描述】中的“对初学者很有用”暗示了Deepsky Demo...

    用户权限管理

    这是通过访问控制列表(ACL)或角色基础的访问控制(RBAC)实现的。 5. **权限审计**:系统需要记录用户的操作,以便在出现问题时进行回溯和审计,这对于合规性和安全性的维护至关重要。 6. **权限更新**:随着...

    PHP实例开发源码—DzzOffice网盘协作系统 php版.zip

    PHP的session和cookie机制可以用来跟踪用户状态,而权限控制可能涉及ACL(访问控制列表)或RBAC(角色基础的访问控制)。 5. **模板引擎**:为了分离业务逻辑和视图,DzzOffice可能会使用模板引擎,如Smarty,将...

    authserver

    这可能通过RBAC(Role-Based Access Control,基于角色的访问控制)实现,或者更复杂的ACL(Access Control List,访问控制列表)策略。 5. **API接口**:认证服务器通常会提供RESTful API,供其他应用和服务调用,...

    c代码-secutity access alogrithm1

    2. **权限模型**:例如基于角色的访问控制(RBAC)、访问控制列表(ACL)或其他自定义的权限分配机制。 3. **授权**:根据用户的身份和权限,决定是否允许访问特定资源。 4. **访问控制决策**:如何在代码中实现...

    DeFiler:一个简单的多线程文件系统,称为Devil File System,或DeFiler

    此外,考虑到文件系统的安全性,DeFiler可能还包含了权限管理机制,比如访问控制列表(ACL)或者基于角色的访问控制(RBAC),以确保只有授权的用户或程序才能执行特定的文件操作。在Java中,可以利用java.security...

    Privacy-Technologies:隐私技术 (B-KUL-H09L2A)

    5. **权限和访问控制**:包括访问控制列表(ACL)、能力系统和角色基础访问控制(RBAC)等,限制敏感信息的访问权限。 6. **隐私政策和法规**:如欧洲的GDPR、加州的CCPA等,理解并遵守相关法规对于保护用户隐私至关...

Global site tag (gtag.js) - Google Analytics