首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在应用程序中授予系统管理员权限?

如何在应用程序中授予系统管理员权限?
EN

Security用户
提问于 2015-06-03 17:29:11
回答 3查看 1.9K关注 0票数 4

我正在为web应用程序设计一个安全模型,根据用户的权限和权限限制对应用程序某些部分的访问。这些权限和权限被组合成可以分配给每个用户的角色。

但是,我需要创建一个系统管理员角色,让一个特殊的用户能够完全访问所有的东西。为了解决这个问题,我可以从两方面着手:

  1. 创建一个系统管理员角色,并授予它系统中的每个权限/权限(基本上所有的权限都存储在DB表中)。随着应用程序的发展和规模的扩大,还必须更新Administrator角色,以便它能够访问新的内容。
  2. 在应用程序本身中,我允许系统管理员角色绕过安全限制。因此,从本质上说,它将检查用户是否具有一定的权限,或者如果他们是系统管理员,就会让他们通过。

选项1提出了一些问题:它可能很乏味,而且容易被忽略,因为应用程序的每个区域都有创建、读取、更新、写入和更多的权限。我必须将所有可能的应用程序区域组合到表中的权限中,这样才能使角色具有完全访问权限。

选项2提出了自己的问题:系统管理员旁路被硬编码到每个需要限制的区域。如果要更改系统管理员角色的名称(例如,主用户),那么我必须随时随地更新代码。但是,这个选项意味着我不需要担心不断更新角色表,这样系统管理员就可以获得访问新内容的权限。

我正在构建企业级软件,因此无论我选择哪种选项,它都必须是可伸缩的。

是的,我知道这是非常主观的,如果只是按原样处理。但我相信一定有一些良好的实践安全设计模式,其中一种方式是推荐的另一种。有些事情我现在无法预见,而其他人可能已经遇到了。我甚至希望有一些链接到有关这方面的想法和良好的前进道路。

EN

回答 3

Security用户

发布于 2015-06-03 18:40:24

如果你把授权因素加到一个能做出所有安全决策的函数上怎么样?打电话就像isAccessAllowed(user, FOO_OPERATION, <misc data>)一样。然后,您的管理检查是isAccessAllowed函数开始时的一个条件。

实现这样的系统还允许您更改安全后端,而不必重写应用程序。它还很好地将安全代码与应用程序代码分离开来。

票数 3
EN

Security用户

发布于 2015-06-03 18:09:39

我在您的场景中通常所做的(也许我们将称之为选项3)是,只允许sysadmin角色访问系统中特定于该角色的部分。不要在其他地方检查sysadmin角色。然后,如果您希望任何特定用户能够访问整个系统,请为该用户提供完全访问所需的所有角色。这样做的好处是:在每次添加新功能时,不需要进行繁琐的更新,您不必在多个地方检查多个角色,如果您决定只让某人访问sysadmin部分而不访问站点的其他部分,则可以。

例如,假设站点有4个不同的部分:

  1. 会计部门-创建一个名为“会计”的角色,可以访问此部分。
  2. 执行部分-创建一个名为“执行”的角色,该角色可以访问此部分。
  3. Employee部分-创建一个名为Employee的角色,该角色可以访问此部分。
  4. 系统管理部分-创建一个名为SysAdmin的角色,该角色可以访问此部分。

现在,每个人被赋予1-4个角色,根据他们可以访问的站点的哪些部分。在您的例子中,扮演“系统管理员”的人将被赋予所有4个角色,这样他们就可以访问站点上的所有内容。

该方法允许对谁可以访问哪些部分进行最严格的控制,并且在向站点添加新角色或区段时,不必更改任何现有代码。

票数 1
EN

Security用户

发布于 2015-06-03 19:41:53

您不能在您的角色表DB中设置一个触发器,以确保在添加任何创建、读取、更新、写入条目时都会自动添加必要的SysAdmin权限吗?也就是说,您的选项1,但与自动化,以确保您不必手动记住添加必要的权限。与触发器不同,您还可以有一个屏蔽过程,例如,在DB上每小时运行一次,以确保SysAdmin用户拥有所有权限?

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/90773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档