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

时间:2013-09-30 01:07:17

标签: security symfony architecture

假设我有对象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将帮助我处理用户类型(我使用UserGroups并创建角色,如ROLE_EDIT_ENTITYTYPE1),使用ACL执行所有权检查。

但我如何实施这些协作小组?

对不起,如果我的解释听起来含糊不清或只是愚蠢或其他任何事情,我想听听有关主题的任何内容。我觉得我在这里错过了一些东西。

PS:如果“安全”标签与此问题相关,则不确定。

1 个答案:

答案 0 :(得分:1)

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

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

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

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