单点系统中如何防止超级权限泛滥

1 评论 9462 浏览 59 收藏 15 分钟

导语:权限管理在一个单点管理系统中是不可或缺的重要组成部分,权限控制可以实现不同身份登录验证后所拥有资源的不同,一旦用户权限分配或管理不适当,必将给系统带来潜在的威胁,甚至造成不可预计的损失。本文作者从单点系统介绍出发,对权限设计需要注意的问题进行了分析说明,供大家一同参考和学习。

一、单点系统目的

单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

单点登录及统一授权管理实现了统一的用户管理、应用系统单点登录、集中的应用管理、统一的授权管理。用户采用单点登录方式后,实现用户访问系统时,能够一次登录,多次使用,全网通行,不再需要每次输入用户名称和用户密码,也不需要牢记多套用户名称和用户密码,能够很好的改善用户对系统的使用体验,同时也大大地降低了安全的风险和管理的消耗。

同时,提供唯一的用户身份授权服务,各应用只需遵循统一授权服务调用接口即可实现用户身份的授权验证过程,从而避免在各个应用系统的身份信息数据库的数据同步更新,用户只须在统一授权管理系统中注册或改变自己注册信息即可,保证了数据的完整性,减少了数据冗余,同时实现了基于多个应用系统的单点登录,提高系统的易用性。

二、单点系统主要建设内容

单点系统的整体功能框架,如下图:

1. 单点登录

单点登录允许用户只认证登录一次,就可以访问网络内所有经授权的应用系统。

(1)单点登录

网内用户只需要在任意一个接入单点登录与统一授权管理系统的应用系统中登录,就可以直接访问所有网络内经授权的应用系统,享受应用系统提供的信息和业务服务。

(2)单点认证

用户可以基于用户名/密码的方式,也可以基于域帐号方式,还可以基于CA证书登录系统。用户在登录时可以选择采用以上三种方式的任意一种方式。

用户可以查看个人信息,修改密码,并可以配置扩展属性中的密码属性值。

支持用户密码策略设定(可以配置密码长度,是否包含字母及字母的长度,是否包含数字及数字的长度,是否包含符号及符号的长度等),根据设定的策略来约束密码设置。

(3)单点注销

网内用户只需要在任意一个接入单点登录与统一授权管理系统的应用系统中注销用户信息,就可以退出曾经或正在访问的所有应用系统。

平台管理员可以实时查看统一用户与身份认证系统中的在线用户,并可以进行用户强制注销。

单点登录时序图:

2. 机构用户管理

统一授权管理系统提供创建和管理机构、部门、用户的功能。通过创建与现实组织结构相符的机构、部门、用户,并给用户赋予某种角色,使之拥有给定的权限。机构在统一用户与身份认证系统中是一个独立的组织单位,部门、用户、角色是以机构为单位存储。

(1)机构管理

机构管理模块以分层次、多结构的方式管理各种复杂的组织机构,政府机构建立机构的部门结构和人员结构。可管理的对象有:机构、行业、部门、人员组。

除此之外,允许建立复杂的人员组织关系(一个职员可以被组织在多个部门中)。

通过组织机构管理模块,实现政府组织和人员管理,并可以系统的角色、用户进行关联,实现基于组织机构管理的强大的角色权限安全体系功能,满足内部网的功能需求。

通过此功能可以实现添加或删除机构和部门、机构和部门信息的改变、查询机构和部门等相关信息,是为用户分配应用角色以及权限的基础。

(2)用户管理

用户管理功能是单点登录系统中的核心功能,管理着机构和应用系统中所有的相关用户数据,通过此功能可以实现添加或删除用户、用户信息的改变、查询用户相关信息,为用户增加角色以及权限等。

各机构系统管理员可以添加、删除、修改、移动本机构下用户基本信息,可以进行用户扩展属性处理,配置各个业务应用系统已有用户帐号和密码,建立统一用户与身份认证系统与各个业务系统的用户映射关系,赋予用户关联角色。

3. 权限管理

(1)角色管理

管理不同系统中不同的人所扮演的不同角色。由于不同系统关联不同机构,因此角色分为应用角色(按照机构应用定义)、平台角色(跨机构跨应用)。

通过此功能可以实现添加或删除角色、角色信息的改变、查询角色相关信息,为后续用户分配角色权限等。

即角色是人员与权限的集合,多个人员可以同属一种角色。比如:处级、副处级、办事员,皆为角色。角色是可继承的,对于一个分级的权限实现,某个角色通过“继承”就已经直接获得其父角色所拥有的所有“权限集合”。用户也可以隶属于角色,用户继承该角色所拥有的权限。只要某用户直接或者间接的属于某个角色,那么它就具备这个角色的所有操作许可。

用户与角色是多对多的关系。即一个用户可以属于多个角色之中,一个角色可以包括多个用户。子角色与父角色是多对一的关系。角色对系统的作用实质上就是提供了一个用户载体和权限载体。

(2)角色授权管理

角色(Role)是一组访问权限的集合,当需要对一组用户赋予相同的权限时,可以使用角色来授权。基于角色的授权可以大大简化授权流程,降低授权管理成本。当需要对用户授权时,应当优先考虑是否应该使用角色来完成。

通过此功能可以实现角色关联应用系统资源权限。

4. 应用管理

应用管理是管理机构下中所有应用系统相关应用信息数据,例如:资源管理、权限功能等,通过此功能可以实现添加或删除应用、应用信息的改变、查询应用相关信息,是为用户分配应用角色以及权限的基础。并提供创建和管理第三方应用程序的功能。对接入的各应用系统进行有效的监督和控制,并面向所有用户定制应用系统权限管理模型,制定权限规则和权限分配策略,实现不同用户访问不同应用系统。

(1)应用程序管理

应用程序管理负责统一管理第三方应用程序,各机构系统管理员可以在本机构下添加、删除、修改应用程序基本信息。

(2)应用程序分类

应用程序分类提供应用程序组管理功能,包括添加、删除、修改应用程序组信息,并将同属于一类的应用程序组织在一起进行管理及展示。

(3)应用权限设置

应用权限设置提供权限设置和移除功能,根据设置好的权限组和权限元素,为角色或用户授予或拒绝应用程序或应用程序组的相关权限。

(4)应用访问策略

应用访问策略为应用程序或应用程序组提供访问策略设置功能,如限制可访问的时间及IP等。

三、单点系统如何做权限

权限的目的:防止以后误操作、人为破坏、数据泄露等,且不同用户类型所持有不同的权限能看到及操作不同的数据来保障数据、业务安全。

权限管理是系统重要组成部分,其最常见模式RBAC模型:用户、角色、权限,即一个用户账号对应多个角色,每个角色对应相应的权限集(RBAC模型),这种模型主要是通过角色可以实现灵活且多样的的权限操作需求。

因此我们的数据库设计模型,描述如下图关系如下图:

而单点系统会涉及应用管理,其应用管理就是提供创建和管理第三方应用程序的功能。对接入的各应用系统进行有效的监督和控制,并面向所有用户定制应用系统权限管理模型,制定权限规则和权限分配策略,实现不同用户访问不同应用系统。

即一个用户账号对应多个角色,每个角色对应相应的权限集,每个权限集是对应相应的应用,依然通过角色可以实现灵活且多样的的权限操作需求。

因此我们的数据库设计模型,描述如下图关系如下图:

四、超级权限泛滥的坑点及对应的解决方案

1. 假设我现在新增一个角色,该角色不小心被赋予了超级权限(即角色授权权限),并且赋予某一类用户后,这样最终角色权限维护乱了,权限也变得形同虚设

解决方案一:对角色设置不同安全级别

如:

  1. 如果为应用管理员:可拥有使用授权应用权限(即超级权限);
  2. 如果为一般管理员:无使用授权应用权限,使得的权限无法下放。

给角色分为好几个等级,每个等级权限不同,从而实现更细粒度的权限管理。

即应用管理员、一般角色的角色等级用例图:

解决方案二:采用角色继承等级方案进行限制权限下放,即一个角色可以从另一个角色继承许可权或者转让权

角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系允许角色间的多继承,受限继承关系则进一步要求角色继承关系是一个树结构。因此继承的角色就算不小心被赋予了超级权限(即角色授权权限),用户依然无权限对其他模块操作。

2. 角色分配中角色未作角色过滤,一旦超级权限角色被赋予了某一个人,这样最终角色权限也将变得形同虚色

  • 解决方案一:给角色分为好几个等级,每个等级权限不同,从而实现用户只能分配自己所持有的角色等级相同的角色,使得的超级权限无法下放。
  • 解决方案二:采用角色继承等级方案进行限制权限下放,即一个角色可以从另一个角色继承许可权或者转让权。角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系允许角色间的多继承,受限继承关系则进一步要求角色继承关系是一个树结构。

一般继承关系如下图:

受限继承关系如下图:

 

本文由 @黄泡泡 原创发布于人人都是产品经理,未经许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 满满干货~~

    来自江苏 回复