Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为每个学校的管理员提供基于角色的安全保护_Sql_Database_Algorithm_Security_Database Design - Fatal编程技术网

Sql 为每个学校的管理员提供基于角色的安全保护

Sql 为每个学校的管理员提供基于角色的安全保护,sql,database,algorithm,security,database-design,Sql,Database,Algorithm,Security,Database Design,我有一个学校管理系统,我们管理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 我正在尝试为管理员设置安全框架。最简单的方法是拥

我有一个学校管理系统,我们管理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
 .
 .
 .
我试图思考是否有更好的方法来做到这一点,并使用一些基于角色的安全性或任何其他可能的方法,以便在添加或删除访问时易于管理,而不是不断向表中添加行

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


你好,我认为最好的方法是给那些管理员提供密码。不用担心‘一个人怎么能记住数百所学校的密码?’。如果有
记住密码
选项,就不用担心了。生物特征识别或人脸识别可以工作。此外,上述数据库模型非常适合您的情况。

好吧,一个可能的解决方案是有一个角色表,然后与您的管理员表建立一个多对多关联,这样您就可以从两个方向(从特定角色和管理员)获得与管理员关联的角色。这种方法将允许您拥有完全的控制权(当然,基于角色的访问控制,您需要每个学校的角色定义,或者至少在这些学校有特殊性的情况下),但请注意
为每个管理员分配完成其工作所需的权限
,例如:

admin1 -> can_delete_schoolA, can_add_employees_schoolB
其中,
admin1
admin的
表中的一个元素,
可以删除学校A
可以添加员工学校B
是角色表中的元素。
希望这有帮助 设计实际上取决于您的用例

下面是一个示例解决方案-

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

学校访问权分配给小组

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

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

一般来说,学校访问是相当稳定的,因为你的学校访问规则不会经常改变;所以大多数情况下,您只需要维护组成员。

而您可以。。。您可能不想“使用您自己的”安全性。大多数数据库产品都有一个安全层,您应该使用它。什么是“最好”的答案在很大程度上取决于几个问题。您正在使用哪个数据库产品?是MySQL吗?SQL Server?您是否有处理存储用户名和密码(如Active Directory)的现有身份管理平台?从您的用户名,我们可能可以推断您在Microsoft生态系统中并使用SQL Server。关于基于角色的访问控制的入门读物,请阅读Phil Factor的文章。我希望这个答案只是一个玩笑。但如果有人认真对待,不要把密码放在你的桌子上。您不希望基于您离开时不会更改的密码访问学校。您不希望在数据库架构中每个学校都有一列。