Sql 为每个学校的管理员提供基于角色的安全保护
我有一个学校管理系统,我们管理100所学校。我们有管理员帮助这些学校。我正在尝试为不同的管理员设置安全性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 我正在尝试为管理员设置安全框架。最简单的方法是拥
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的文章。我希望这个答案只是一个玩笑。但如果有人认真对待,不要把密码放在你的桌子上。您不希望基于您离开时不会更改的密码访问学校。您不希望在数据库架构中每个学校都有一列。