使用Access实现RBAC的最佳方式

时间:2012-01-31 08:36:44

标签: security ms-access access-control rbac

我正在编写一个包含许多用户的新应用程序,一些角色以及这些角色的特定权限。为此,我想创建以下表格:

Users (ID,Login, password,..)
Roles(ID,Rolename)
User_Roles(User_ID, Role_ID)
Permissions(ID,PermissionName)
Permission_Roles(Permission_ID, Role_ID)

我的想法是构建一个函数,该函数允许检查用户是否具有访问表单的特定权限。我会通过创建'canReadFormX','canEditFormX'之类的权限/规则来实现这一点,这将允许我使用一个主函数来检查和执行这些特定规则以及每个表单的函数来调用它。

这是一种可行的方式(或者更确切地说,我对RBAC正确理解了所有内容)还是那么复杂?任何建议都非常感谢!

1 个答案:

答案 0 :(得分:2)

对我而言,对于前3个表格来说,这与我们已经设定的相似。

然后你必须解决'动作'问题,即分配权限以使用你的appl的动作。我不确定您的“权限”提案将涵盖所有情况,因为您必须处理两大类操作:

  1. 您已经确定的“公开表单”操作:您实际上必须为每个表单定义2个级别的授权:“查看”权限和“更新”权限。
  2. 所有其他操作,例如表单特定按钮或菜单,允许您运行除打开表单以外的特定操作(执行报告,进行特定计算,自动导入或更新数据等)。< / LI>

    一个解决方案/我的建议是为此维护2个表:

    • '表格'表格
    • '动作'表

    以及相应的链接表:

    • 'Form_Role'表格
    • 'Action_Role'表格

    通过这样的配置,您可以完全覆盖。您甚至可以决定哪个角色有权查看特定表单上的特定报表,只要通过表单上的特定控件或菜单​​访问相应的操作即可。

    Forms和Actions表都非常有趣,因为它们都参与了您的应用程序元模型......

    编辑:顺便说一句,如果您在域中,则可以使用用户的域凭据来控制其对系统的访问权限。在这种情况下,您无需在RBAC系统中存储密码。