协作软件(协作组)中的安全性



假设我有对象A,B,C,D,E,F,协作者组C1,C2,用户C1U1(管理员(,C1U2(用户(,C2U1(管理员(,C2U2(用户(。

A,C,E属于C1组。B,D,F属于C2组。

因此,只有对应组的成员才能查看其各自的对象。此外,创建的任何对象最终都会在其创建者(用户(所属的组中结束。

管理员可以创建和编辑每个实体,用户只能创建实体,只能编辑他的实体。

当然,如前所述,每个用户(管理员或普通用户(只能查看属于其组的实体。

在我的特定任务中,实体类型(静态(的数量和用户类型的数量(静态(。将有多个协作组(动态(,用户将在其中创建一些实体。某些用户只能查看实体(由于是相应的协作组的成员,他们可以查看实体(、创建和编辑。其中一些将能够编辑其他用户的实体(但仅限于ceratin类型的实体(。本质上,它有点像JIRA。

也就是说,我的问题很简单:什么模式有助于组织这些东西?我相信这是一个常见的问题,因此它必须有通用名称。

我知道有一种直截了当的方法可以创建它。我使用的是symfony 2,它同时具有RBAC和ACL,但没有RBACL afaik。RBAC 将帮助我处理用户类型(我使用用户组并创建像 ROLE_EDIT_ENTITYTYPE1 这样的角色(,使用 ACL 执行所有权检查。

但是,如何实现这些协作组呢?

很抱歉,如果我的解释听起来含糊不清或只是愚蠢或其他任何东西,我想听听任何关于主题的信息。我有一种感觉,我在这里错过了一些东西。

PS:不确定"安全"标签,如果它与这个问题有关。

对于您的情况,公正的角色层次结构还不够充分。您需要的是完整的ACL:http://symfony.com/doc/current/cookbook/security/acl.html

保存实体时,您可以在侦听器中创建 ACL 权限,然后授予所有组成员的访问权限。

您还可以使用不同的 ACL 掩码,以控制哪些用户可以编辑实体以及哪些用户只能查看它们:http://symfony.com/doc/current/cookbook/security/acl_advanced.html

很抱歉主要链接到默认文档,但我认为这基本上涵盖了您需要的所有内容。

最新更新