【问题标题】:Role Based Security for administrators for each school为每所学校的管理员提供基于角色的安全性
【发布时间】:2020-12-08 17:39:11
【问题描述】:

我有一个学校管理系统,我们管理 100 所学校。我们有帮助这些学校的管理员。我正在尝试为不同的管理员设置安全性。

For example:

Administrator 1 can have access to all 100 schools
Administrator 2 can only access 5 schools
Administrator 3 can only access 15 different schools
.
.
.
so on

我正在尝试为管理员设置安全框架。最简单的方法是创建一个 AdminToSchool 数据库表,其中每个管理员将在他们有权访问的每所学校中占一行。

可能的解决方案

Admin Id   School Id   AllowEdit  AllowDelete
 1            100S       1           1
 1            101S       1           1
 1            102S       1           1
 1            103S       1           1
 2            103S       1           1
 .
 .
 .

我正在尝试考虑是否有更好的方法来执行此操作,并使用一些基于角色的安全性或任何其他可能的方式,以便易于管理,而不是在我们添加或删除访问权限时不断向表中添加行。

处理此问题的最佳方法是什么?

【问题讨论】:

  • 虽然您可以...您可能不想“推出自己的”安全性。大多数数据库产品都有一个您应该依赖的安全层。什么是“最好”的答案很大程度上取决于几个问题。您使用的是哪种数据库产品?是 MySQL 吗? SQL 服务器?您是否有现有的身份管理平台来处理存储用户名和密码,例如 Active Directory?
  • 从您的用户名中,我们或许能够推断出您在 Microsoft 生态系统中并使用 SQL Server。有关基于角色的访问控制的入门知识,请阅读 Phil Factor 的Schema-Based Access Control

标签: sql database algorithm security database-design


【解决方案1】:

嗯,一种可能的解决方案是有一个角色表,然后是一个many to many associations 与您的管理员表,这样您就可以在两个方向(从特定角色和管理员)获取与管理员关联的角色.这种方法将允许您完全控制(基于角色的访问控制,当然,您需要为每个学校定义角色,或者至少在它们具有特殊性的情况下),但请注意每个管理员需要assign fewer privileges完成他们的工作,例如:

admin1 -> can_delete_schoolA, can_add_employees_schoolB

其中admin1admin's 表中的元素,can_delete_schoolAcan_add_employees_schoolB 是角色表中的元素。 希望这可以帮助! ?

【讨论】:

    【解决方案2】:

    设计确实取决于您的用例。

    这是一个示例解决方案 -

    您可以根据需要将管理员分配到不同的组;

    学校访问权限分配给小组;

    组中的所有管理员都具有分配给组的相同访问权限;

    Table groups:
    group_id
    group_name
    description
    ...
    
    Table group_members -- which member belongs to which group
    group_id
    admin_id
    ...
    
    Table school_access -- which schools a group can access
    group_id
    school_id
    allow_edit
    allow_delete
    

    一般来说,school_access 相当稳定,因为您的学校访问规则不会经常更改;所以大多数时候你只需要维护 group_members。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2013-03-21
      • 2011-05-12
      • 1970-01-01
      • 2011-11-03
      • 2012-03-18
      • 2019-03-13
      相关资源
      最近更新 更多