`

权限管理

 
阅读更多

权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。 很多人,常将“用户身份认证”、“密码加密”、“系统管理”等概念与权限管理概念混淆。

目录

一,权限管理场景举例
二,权限管理分类
三,容易混淆的概念
四,权限管理技术实现
五,权限管理实施
六,不良的权限管理系统,必然留下系统漏洞
展开

编辑本段一,权限管理场景举例

企业IT管理员一般都能为系统定义角色,给用户分配角色。这就是最常见的基于角色访问控制。场景举例:  1,给张三赋予“人力资源经理”角色,“人力资源经理”具有“查询员工”、“添加员工”、“修改员工”和“删除员工”权限。此时张三能够进入系统,则可以进行这些操作;  2,去掉李四的“人力资源经理”角色,此时李四就不能够进行系统进行这些操作了。  以上举例,局限于功能访问权限。还有一些更加丰富、更加细腻的权限管理。比如:  1,因为张三是北京分公司的“人力资源经理”,所以他能够也只能够管理北京分公司员工和北京分公司下属的子公司(海淀子公司、朝阳子公司、西城子公司、东城子公司等)的员工;  2,因为王五是海淀子公司的“人力资源经理”,所以他能够也只能够管理海淀子公司的员工;  3,普通审查员审查财务数据的权限是:在零售行业审核最高限额是¥50万,在钢铁行业最高限额是¥1000万;高级审查员不受该限额限制;  4,ATM取款每次取款额不能超过¥5000元,每天取款总额不能超过¥20000元。  这些权限管理和数据(可以统称为资源)直接相关,又称为数据级权限管理、细粒度权限管理或者内容权限管理。

编辑本段二,权限管理分类

从控制力度来看,可以将权限管理分为两大类:  1,功能级权限管理;  2,数据级权限管理。  从控制方向来看,也可以将权限管理分为两大类:  1,从系统获取数据,比如查询订单、查询客户资料;  2,向系统提交数据,比如删除订单、修改客户资料。

编辑本段三,容易混淆的概念

用户身份认证,根本就不属于权限管理范畴。用户身份认证,是要解决这样的问题:用户告诉系统“我是谁”,系统就问用户凭什么证明你就是“谁”呢?对于采用用户名、密码验证的系统,那么就是出示密码。当用户名和密码匹配,则证明当前用户是谁;对于采用指纹等系统,则出示指纹;对于硬件Key等刷卡系统,则需要刷卡。  密码加密,是隶属用户身份认证领域,不属于权限管理范畴。  系统管理,一般是系统的一个模块。而且该模块一般还含有权限管理子模块。因此,很多人误认为权限管理系统只是系统的一个小小的子模块。系统管理里面的权限管理模块,只是一个操作界面,让企业IT管理员能够设置角色等安全策略。系统背后还有很多权限验证逻辑,这些都并不属于该模块。总体来说,该模块相当于给权限管理模块提供了一些数据,比如:张三是人力资源经理等。  更多混淆概念,请参考:《对权限管理认识的一些误区》[1]

编辑本段四,权限管理技术实现

按照权限管理的力度,逐步介绍权限管理实现技术。

4.1,功能权限管理技术实现

功能权限管理技术,一般就使用基于角色访问控制技术RBAC(Role Based Access Control)。该技术被广泛运用于各个系统,非常容易掌握。该技术模型如下图示:

RBAC权限模型

  权限设置  一般来说,系统提供如下功能:  1,角色管理界面,由用户定义角色,给角色赋权限;  2,用户角色管理界面,由用户给系统用户赋予角色。  3,一些优秀系统,还支持用户定义权限,这样新增功能的时候,可以将需要保护的功能添加到系统。  这里,我们谈谈Spring Security框架。它将访问角色固化到程序代码里面。那么这种控制就相当于由软件开发人员完成,而不是最终用户。这从实施角度来看,是完全错误的。更多阅读,可以查看《Spring Security优劣之我见》[2]。  权限验证  功能级的权限验证逻辑非常简单。查看该当前登录用户的角色是否包含该功能的权限。如果有,则表示有权访问,否则表示无权访问。  对于WEB系统,一般定义一个Filter就可以完成权限验证,无需在各个程序入口进行权限判断。程序伪代码如下:  // 获取访问功能  String url=request.getRequestPath();  // 进行权限验证  User user=request.getSession().get("user");  boolean permit=PrivilegeManager.permit( user, url );  if( permit ) {  chain.doFilter( request, response );  } else {  // 可以转到提示界面  }

4.2,数据级权限管理技术实现

目前,数据级权限管理领域,一直没有统一的技术。大体上,软件开发人员采用如下技术:  1,硬编码,也就是将这种逻辑以if/else等形式与业务代码耦合在一起,这种情况居多;  2,使用规则引擎,也有一些企业将这种逻辑以规则形式提出来,并使用规则引擎解析规则;  3,使用第三方专业软件,有开源中间件Ralasafe[3];开源框架Spring Security[4];商业产品Oracle Entitlements Server,IBM Tivoli Access Manager。  硬编码形式弊端是非常显然的。耦合性强,难以测试;系统组件复用率低;系统后期改动代价非常大,牵一发而动全身。  使用规则引擎可以解决很多问题,学习难度尚可。但规则引擎并不是专业用于权限管理的,所以对于复杂一些的权限管理,就显得力不从心。  Ralasafe和Oracle、IBM的商业产品一样,都是中间件形式。对应用系统和应用数据库结构没有要求。都有管理界面进行直接操控管理,而且都能在线进行测试。相比较,Ralasafe还可以控制查询权限(即从系统查询订单、查询客户等),Oracle、IBM的商业产品没有这方面功能;从产品学习难度来看,Ralasafe只要有一些IT经验,就能快速上手;Oracle、IBM产品即使是专业人员,也难以掌握。  Spring Security是框架,需要对你的应用系统进行改动,你的系统必须在该框架进行设计编写。它只是帮助开发人员将权限提取出来了,但数据级权限还需要开发人员开发Voter。而且配置工作巨大,难以测试。  虽然上述提到的产品,都是Java产品。但Ralasfe和Oracle、IBM的商业产品,以中间件形式,可以部署在独立服务器上,使用web service等方式与非Java系统交互。

编辑本段五,权限管理实施

5.1,功能级权限控制

这是很多系统都能做到的。让系统使用者(一般是企业IT管理员)定义角色,给用户分配角色。成功实施该步骤,用户能在功能级进行权限管理。整个过程无需软件开发商参与。

5.2,部分预定义好的数据级权限

有些复杂一点的系统,提供了一些规则和管理界面,可以让系统使用者(一般是企业IT管理员)输入规则参数。比如普通审查员审查财务数据的金额区间,勾选某用户能够查询哪些组织机构的订单数据。  这是给企业提供了部分控制数据级权限的能力。但该能力还非常弱,仅限于已定义好的策略,不能适应安全策略变化。而,企业需求肯定会随着业务发展、时间推移,发生变化。比如:普通审查员审查区间由原来的单一设置区间,改为按照行业、按照地域来设置不同的区间。用户查询订单不仅和组织机构有关,还和订单业务领域(体育、食品等)有关。当这些需求发生的时候,企业还要求助于软件开发商进行修改。

5.3,企业完全掌控安全策略

企业完整掌控安全策略,应该包括2个方面内容:1,功能级权限管理完全自我掌控;2,数据级权限管理完全自我掌控。实现这方面需要,还需要考虑企业的IT能力:IT能力没有软件开发商强,而且权限管理涉及整个系统安全,关系重大。因此软件必须是这样的:1,图形化、集中管理的,便于企业管理;2,可在线测试的,定制策略后在不影响业务的情况下,进行测试,确保无误。  目前,就Ralasafe和Oracle、IBM产品满足要求。

六,不良的权限管理系统,必然留下系统漏洞

不良的权限管理系统,必然留下系统漏洞,给黑客可趁之机。很多软件可以轻松通过URL侵入、SQL注入等模式,轻松越权获得未授权数据。甚至对系统数据进行修改、删除,造成巨大损失。  很多系统,尤其是采用硬编码方式的系统,存在权限逻辑与业务代码紧密耦合,同时又分散在系统各个地方。系统漏洞势必非常多,而且随着系统不断修改,漏洞逐步增多。 好的系统,应该将权限逻辑集中起来,由专业的安全引擎进行设置、解析。业务逻辑调用安全引擎,获得权限结果,不再使用非专业模式。这种转变,如图示:

权限由紧密分散,转换为集中专业管理

分享到:
评论

相关推荐

    授权到窗口按钮的权限管理.rar_c#权限管理_授权_授权管理_权限_权限管理

    本文将深入探讨C#中的权限管理系统,包括授权、授权管理以及权限控制的相关概念和实践方法。 首先,我们要理解“权限”这一核心概念。在软件系统中,权限通常指的是用户或角色对系统资源(如文件、功能、窗口按钮等...

    PHP权限管理系统源码

    1、角色管理:添加角色、编辑角色、删除角色、角色授权 2、权限管理:添加权限、编辑权限、删除权限、 3、用户管理:添加用户、编辑用户、删除用户 4、日志管理:登录日志 5、文章管理:模拟菜单

    手机授权管理-Root手机后权限管理利器.docx

    授权管理程序,如文中提到的"授权管理-Root手机后权限管理利器",是专门为Root后的Android设备设计的工具,用于管理和控制各个应用程序对Root权限的访问。这些工具通常具有以下关键功能: 1. **授予和管理ROOT权限*...

    手机授权管理-Root手机后权限管理利器.pdf

    "授权管理"就是在Root后对这些高级权限进行管理的重要工具。 "授权管理-Root手机后权限管理利器"是一款专为已经Root的Android设备设计的应用,由刷机大师团队开发。它提供了全中文界面,使得普通用户也能轻松理解和...

    基于ThinkPHP5开发的漂亮通用后台全权限管理系统

    又来分享一款基于最新thinkphp5开源框架5.0.13版本开发的通用后台权限管理系统,这是一款基于ThinkPHP5.0.13 + layui2.2.45 + ECharts +Mysql开发的后台管理框架,PHP版本要求提升到5.5。集成了一般应用所必须的基础...

    OA权限管理设计的实现

    - 授权管理允许管理员将基本权限或角色授予用户或用户组。如果用户同时属于多个角色、职位或项目组,则用户最终的权限是所有来源权限的合并。 #### 七、物理数据模型 基于上述设计思想,权限管理系统需要构建以下...

    统一用户及权限管理系统需求分析

    - **授权管理**:包括系统用户管理、属性管理和模块管理,支持对用户、属性和模块资源的分配。 - **鉴权服务**:提供登录和权限调用接口,确保用户能够正确登录并拥有进行特定操作的权限。 - **日志管理**:记录用户...

    ASP.NET通用权限管理系统源代码(含文档、数据库)

    ASP.NET通用权限管理系统源代码(含文档、数据库) 1.菜单导航管理 2.操作按钮 3.角色管理 4.部门管理 5.用户管理(用户权限) 6.用户组管理(设置成员,用户组权限) 7.系统配置(动态配置系统参数) 8.附加属性...

    jsp做的权限管理系统

    **权限管理系统概述** 权限管理系统是IT行业中至关重要的组成部分,它主要用于控制不同用户对系统资源的访问权限。在JSP(JavaServer Pages)技术的支持下,我们可以构建一个灵活且功能强大的权限管理解决方案。JSP...

    ASP.NET通用权限管理系统

    在权限管理系统的实现中,ASP.NET 2.0的内置身份验证和授权机制起到了关键作用。 权限管理的核心是用户认证与授权。在ASP.NET中,这通常通过Forms身份验证实现,用户通过登录界面提供凭证,系统验证后授予访问权限...

    用户管理和权限管理

    授权功能使得管理员能将角色赋予特定的用户或用户组,确保他们能根据角色获取相应的访问权限。 分组管理进一步细化了权限控制。分组可以看作是角色的一个集合,管理员可以创建、编辑或删除分组,并对分组内的成员...

    主数据管理-权限管理

    1. 权限管理模型:该模型基于企业资源统一管理和授权,实现了对不同系统使用者的权限管理。 2. 资源管理:通过资源分组和角色构建,实现了对资源的细粒度化管理。 3. 角色管理:构建了系统的管理角色树,业务角色和...

    用户权限管理模块(C++实现)

    在IT行业中,权限管理系统是软件应用中的重要组成部分,它用于控制不同用户对系统资源的访问。本项目"用户权限管理模块(C++实现)"是一个用C++编程语言实现的权限管理解决方案,它包含了几个核心功能,如单例模式、...

    pas_right.rar_DELPHI 权限_DELPHI 权限管理_Delphi管理系统

    在"pas_right.rar_DELPHI 权限_DELPHI 权限管理_Delphi管理系统"这个压缩包中,重点讨论的是如何在Delphi环境中实现权限管理和数据库管理系统的构建。 权限管理是任何复杂系统的核心组成部分,特别是在涉及到用户...

    权限管理权限管理

    权限管理的核心目标是确保只有授权的用户或系统能够访问特定的资源,从而保护敏感信息不被非法获取或滥用。在此,我们将深入探讨权限管理的各个方面,包括其定义、原理、常见模型以及如何在实际操作中实施。 权限...

    Kinguser授权管理包.zip

    “Kinguser授权管理”是由Kingroot团队开发的一款安卓手机权限管理软件,具有root权限授权、软件权限管理两大功能。 与Superuser相比,“Kinguser授权管理”具备以下6大特色,更适合Android开发者及普通用户使用: 1...

    PHP权限管理系统源代码

    【PHP权限管理系统源代码】是基于PHP编程语言开发的一个用于管理用户权限的系统。这个系统在个人学习PHP的过程中,由专业导师指导完成,提供了一种有效地控制和分配不同用户访问和操作权限的方法。通过理解并分析这...

    Greenplum数据库权限管理1

    它允许管理员精确地控制不同用户和角色对数据库对象的访问权限,从而防止未经授权的数据访问或修改。 1.1 概述 Greenplum的权限系统遵循PostgreSQL的模型,允许管理员为不同的用户或角色定义权限级别。权限分为多种...

    管理系统系列--后台管理系统,集成权限管理. 账号:admin,密码:123456.zip

    【标题】"管理系统系列--后台管理系统,集成权限管理"揭示了这是一个专为后台操作设计的系统,具有用户管理和权限控制的核心功能。此类系统通常用于企业级应用,帮助管理员有效地管理用户账户,分配不同级别的访问...

Global site tag (gtag.js) - Google Analytics