我试图遵循基于角色的访问控制模型来限制用户在系统中可以执行或不能执行的操作。
到目前为止,我具有以下实体:
用户 -将使用该系统的人员。这里有用户名和密码。 角色 -用户可以拥有的角色的集合。诸如经理,管理员等 资源之类的东西-用户可以操纵的东西。像合同,用户,合同草稿等 操作 -用户可以使用资源执行的操作。像创建,读取,更新或删除。
现在,我在图中有这样关系的地方对此表示怀疑:
操作(0 .. *)在 资源(0 .. *)上执行,该资源生成一个名为权限的表,该表将存储该操作和资源。
权限表如下所示(它的一行): ID: 1,操作:创建,资源:合同。
这意味着许可,以创建一个合同。
我这样做是因为我觉得某些资源可能无法进行各种操作。例如,对于注册合同,用户可以上传文件,但是此操作不适用于注册提供商。
所以,现在当管理员将被赋予权限的角色,他不会有资源的清单,在系统中注册的每一个操作。
我认为每种资源都有自己的可以在他身上执行的操作的集合。
我可以澄清一下某些事情是无法理解的。
这是实施rbac的正确方法吗?
编辑
我的意思是,通过拥有一个包含操作和资源的权限表,我有了两个额外的表,因为我想将资源与操作相关联。我本来也可以完成资源具有权限的权限,权限表将存储这些权限。
但是然后发生的是,当管理员分配资源时,某些权限甚至对于某些资源都不存在。
因此,我想从数据库设计的角度来了解具有一个列操作和另一个资源的表权限是否正确?如果这样下去我会遇到问题吗?