当前位置: 首页 > 知识库问答 >
问题:

设计支持关系的基于角色的访问控制

慎懿轩
2023-03-14

我正在为访问控制系统设计一个数据库模型,该系统部分基于角色,但需要一些访问列表功能和关系访问。

我正在为一所学校构建一个web应用程序(如果需要的话,可以使用PHP和MVC体系结构),用于管理学生、教师、员工和管理者之间的互动,例如教师奖励学生,或者其中一名员工招收或开除学生。我的主要问题是,我被要求:1-为每个用户提供可选的额外权限,而不是他们已经从角色继承的权限。(=

走这条路对吗?我应该为每个新的共享连接创建新表还是将它们全部放在一个表中?我感谢任何帮助,或者至少是对这个问题的标准解决方案的指导。

共有1个答案

司寇高洁
2023-03-14

您不应该为访问控制实现DB模型。您的DB模型应该包含您关心的对象(学生、教师、班级……)。其余部分应表示为外部化授权模型中的策略。这称为基于属性的访问控制abac。它也称为基于策略的访问控制(PBAC)。不同的名字,相同的东西。

在ABAC中,一方面有属性(数据库模型中表的字段,例如用户名、角色、课程年份...),另一方面有策略。例如:

  • 教师可以编辑所教班级的学生成绩

所有这些都是(业务)授权策略的示例。

在ABAC中,您就有了策略决策点(PDP)的概念,该决策点评估授权策略,策略实施点(PEP)截获业务请求并向PDP发送授权请求。例如:

  • 学生Alice可以查看123年级吗?
  • 老师Bob可以查看学生Alice的个人资料吗?

人民民主党以许可或拒绝的决定作出答复,人民民主党必须执行该决定。您提到您的应用程序有一个MVC模型。您的PEP可能是控制器层中的拦截器或注释。

有几种ABAC语言和实现:

  • 开源:
    • 基于Rego语言的开放策略代理
    • AuthZForce基于XACML标准。

 类似资料:
  • 问题内容: 是否可以使用任何基于角色的开源访问控制系统? 问题答案: 布兰登·萨维奇(Brandon Savage)在他的PHP软件包“ ApplicationACL ” 上做了一个演示,该演示可能会或可能不会完成基于角色的访问。PHPGACL可能也能正常工作,但是我不能肯定地告诉您。 但是,我可以告诉您的是Zend Framework 的Zend_ACL组件将执行基于角色的设置(但是您必须子类化

  • 角色定义 [role_definition] 是RBAC角色继承关系的定义。 Casbin 支持 RBAC 系统的多个实例, 例如, 用户可以具有角色及其继承关系, 资源也可以具有角色及其继承关系。 这两个 RBAC 系统不会互相干扰。 此部分是可选的。 如果在模型中不使用 RBAC 角色, 则省略此部分。 [role_definition] g = _, _ g2 = _, _ 上述角色定义表

  • 以下内容是 xingzhou 对 kubernetes 官方文档的翻译,原文地址 https://k8smeetup.github.io/docs/admin/authorization/rbac/ 基于角色的访问控制(Role-Based Access Control, 即”RBAC”)使用”rbac.authorization.k8s.io” API Group实现授权决策,允许管理员通过Ku

  • 读后http://en.wikipedia.org/wiki/Role-based_access_control看到人们建立授权/访问控制的方式,我想到了这个问题:“为什么我们在检查用户是否被允许执行X操作时检查用户的角色,而不是检查他们的权限?” 这就是我所理解的,用户有角色,角色有权限,这就是用户可以拥有权限的方式(用户不能明确地拥有分配给它的权限,它通过拥有角色获得权限) 我认为,在处理添加

  • 一个更友好的域内基于角色的访问控制的API。 这个API是Management API的子集。 RBAC用户可以使用这个API来简化代码。 参考 全局变量 e 是 Enforcer 实例。GoNode.jsPHP.NETRust e, err := NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv") const

  • 我正在开发一个mean stack web应用程序,它包含基于登录用户角色的差异访问。有几个不同的角色,如管理员,政府,志愿者等。 1.如何基于角色管理前端? 目前,我正在为每个角色设置全局标志,如isAdmin、is志愿者、isGovt等,并根据其值,使用 这是正确的说法吗。如果不是,请建议处理UI的正确方法。 2.如果用户没有授权,如何管理后端和重定向路由? 目前我正在尝试使用angular权