yii 具有附加级别RBAC

pgccezyw  于 2022-11-09  发布在  其他
关注(0)|答案(4)|浏览(182)

我正在尝试为RBAC设计一个数据库(或者也许只有我认为这是一个转折?)据我所知,RBAC使用角色和权限来授予/拒绝访问我系统中的某些对象。当我只有我的站点的一个示例,并简单地创建一个角色“Main admin”,“Secondary admin”,“User”等
但是,如果我在系统中有帐户呢?所以我有一个系统,其中有说'London','Tokyo'和'Moscow'帐户。现在我将有'主管理员'为每个帐户,以及许多'用户'在每个帐户-当然莫斯科家伙不应该能够登录到伦敦帐户。我怎么做?我是否需要创建一些额外的表来将分配绑定到帐户和用户?或者我是否需要将accountid添加到分配表中?或者我可能需要创建多个角色,如“莫斯科_main_admin”、“伦敦_main_admin”等。对于这种情况,最好的方法是什么?
此外,我相信我会有一些用户谁是“主要管理员”为伦敦帐户和“次要管理员”为东京帐户。
我计划使用Yii,它内置了RBAC...如果这有什么不同的话。
如何应对?
先谢谢你!

rvpgvaaj

rvpgvaaj1#

你可以保留你已经使用过的“admin”角色和规则,并为每个城镇添加一个新角色,如“莫斯科”、“伦敦”等......在你的控制器中,在你的操作方法中调用一个checkAccess,如下面的例子所示。

public function actionEditArticle($town)
{
 if(!Yii::app()->user->checkAccess($town)
  Yii::app()->end();

 // ... more code
}

更高级的方法是在组件目录中扩展CController,并覆盖runAction($action)方法。

public function runAction($action)
{
    if (isset($_GET['town']) {
        if(!Yii::app()->user->checkAccess($_GET['town']) Yii::app()->end();
    }
    parent::runAction($action);
}
kpbpu008

kpbpu0082#

根据我对你的问题的理解,有两种方法可以解决你的问题。
第一种是通过使用分层角色(角色继承)。尽管实现和管理起来更加复杂,但这可以提供非常有趣的灵活性。
第二种方法(如果您感兴趣的话)是我在出于学术原因尝试“扩展”RBAC时尝试的。
我所做的是允许为每个角色定义两个或多个“命名”级别。因此,给定一个Programmer角色,我的实现允许为角色添加级别,例如:
程序员,级别定义:
1.“高级”= 500级
1.“中级”= 200级
1.“初级”= 0级
因此,当有人要指派对象示例(例如规格文件)的权限时,可以使用下列方式指派:
“某文档”-〉程序员(300级)-〉可编辑“某文档”-〉程序员(0级)-〉可阅读“某文档”-〉程序员(500级)-〉可删除
表示所有程序员都可以阅读该文档,但初级和中级程序员没有“级别”权限,不允许编辑该文档,只有高级程序员可以删除该文档。
这样,我只需创建一个角色,就可以拥有3个不同级别的权限。在传统系统中,我必须创建3个不同的角色(4个具有继承性),例如:
在非阶层式实作中:
1.高级程序员
1.中级程序员
1.初级程序员
在分层实施中:
1.编程器
1.高级程序员(扩展程序员)
1.中级程控仪(扩展程控仪)
1.初级程序员(扩展程序员)
显然,需要将层正确定义为子职责。将层定义为“分析师”是无效的,因为这是两个不同的职责,而不是子类型。

wqsoz72f

wqsoz72f3#

最适合您要求的方法是创建组和组层次结构。将职责分配给组,该组将间接分配给它的所有子组。这样,您可以将公用职责分配给父组,将单个职责分配给单个组。因此,在您的情况下,伦敦、东京和莫斯科都是组。
我通过安全访问控制工具VisualGuard实现了这个解决方案,VisualGuard已经实现并涵盖了大多数应用程序安全问题。
我已经使用VisualGuard对多租户和SaaS应用程序进行了访问控制,其中我广泛使用了组。
Click here以了解更多信息。

pxq42qpu

pxq42qpu4#

RBAC中一个长期存在的问题。在决策中添加上下文,例如帐户,会导致角色爆炸。下面是我写的一篇文章,描述了这个问题,以及角色约束如何解决这个问题。
https://iamfortress.net/2018/07/07/towards-an-attribute-based-role-based-access-control-system/

相关问题