【问题标题】:Best way to implement RBAC with Access使用 Access 实现 RBAC 的最佳方式
【发布时间】:2012-02-22 23:56:36
【问题描述】:

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

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 的所有内容)还是这太复杂了?任何建议都非常感谢!

【问题讨论】:

    标签: security ms-access access-control rbac


    【解决方案1】:

    对我来说这似乎是公平的,并且与我们已经为前 3 个表设置的相似。

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

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

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

    • “表单”表
    • “操作”表

    以及对应的链接表:

    • “Form_Role”表
    • “Action_Role”表

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

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

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

    【讨论】:

    • 非常感谢您的详细回答。我们还不确定我们的客户希望应用程序有多安全(imo 一个简单的权限方法就足够了,无论是现在还是将来),但对于进一步的项目来说,这是一个非常好的主意。我们的客户也在一个域中工作,所以这也很好,但我不太确定这是否需要。但又是一个好主意,这是我以前没有意识到的。泰!
    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2016-06-14
    • 1970-01-01
    • 2018-05-28
    • 2018-03-08
    • 1970-01-01
    相关资源
    最近更新 更多