`
metadmin
  • 浏览: 168396 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

权限管理需求

IT系统不断向前发展,企业对于IT信息系统的权限控制要求越来越严格。主要有以下几类:

  1. 功能控制。比如允许某些用户使用某功能,访问某页面。拒绝某些用户使用某功能,访问某页面。
  2. 更细粒度的控制。
    1. 数据行控制。同样的功能,不同用户访问的数据范围是不同的。比如总公司用户能查看所有客户资料;分公司用户只能查看本分公司及下属营业部客户资料;营业部用户只能查看本营业部客户资料。
    2. 数据列控制。同样的功能,不同用户访问的数据字段是不同的。比如总公司用户不能查看客户资料的联系电话和联系地址信息,可以查看客户其他字段信息;其他用户能查看客户的全部字段信息。
    3. 数据操作权限控制。比如银行ATM机器,不允许每天取款超过2万,单笔不超过5千;比如客户经理只能修改和删除自己开发的客户资料,不能修改其他客户经理开发的客户资料。
    4. 界面显示要素控制。比如显示自己开发的客户列表后面显示“修改”和“删除”按钮,否则不予显示。比如总公司用户登录,机构下拉框显示所有组织机构;分公司用户登录显示本分公司及下属营业部机构;营业部用户登录显示该营业部机构。

权限管理分类

 综合来说,可以把权限需求分类两大类:

  1. 功能级权限;
  2. 细粒度权限,又被称为数据级权限,内容级权限。这些权限根据登录用户、操作数据、当前环境等条件进行不同权限授权。可以分为:
    1. 查询权限;返回用户具有权限查询的数据。数据行控制,数据列控制,都属于查询权限。部分界面显示要素控制,属于查询权限。比如下拉框显示组织机构,可以先返回用户具有权限的机构,然后填写下拉框内容。
    2. 决策权限;返回用户是否具有某权限,如果不具备该权限,并告知拒绝理由。数据操作权限控制,部分界面显示要素控制都属于决策权限。ATM先判断用户是否具有该取款额的权限,然后根据结果吐钱。界面先判断用户是否具有“修改”和“删除”该客户的权限,然后根据结果显示按钮或者不显示按钮。

如何在IT系统实现权限管理

功能级权限控制,采用目前的角色策略即可。如下图所示: 

(图1:角色授权策略)

 

数据级权限控制,大多系统采用硬编码模式实现,在程序里面做各种判断。如下图所示:

(图2:硬编码模式实现细粒度权限控制)

 

有些优秀企业做了杰出创造,使用配置模式,或者采用部分编程+部分配置模式实现。

有些优秀企业做了杰出创造,采用在二次开发平台上,进行相关配置,然后生成带有权限的代码,将这些代码随同应用一起发布。

 

目前业内有一个非常牛气的规范:OASIS组织制定的XACML(eXtensible Access Control Markup Language) 规范。该规范非常强大,同时也难懂,实施难度大。

Oracle Entitlement Server和IBM Tivoli Access Manager都是基于该规范开发的产品。

Metadmin Access Manager是基于策略模型开发的产品。

 

怎样改进创新

 待续......

分享到:
评论
2 楼 metadmin 2009-03-30  
所以说:sql部分也要灵活,需要接受参数,不能写死。

比如分公司用户_sql,需要传入参数(当前用户的机构号)。



权限系统最好不去伤害已有系统,可以和已有系统并存。已有部分采用原有的权限模式,新的部分采用新的权限模式。
目前Metadmin是这样做的。
1 楼 suifeng 2009-03-30  
方法很独特 : 为每类用户定制sql.
这个和我曾经想到的[去掉判断]的方法有异曲同工之处:

判读的方式:
If ( 总公司用户){
    查询全公司数据
} Else If ( 分公司用户) {
    查询该分公司以及下属营业部数据
} Else If ( 营业部用户) {
    查询该营业部数据
}

去掉判断后的方式:

Map map = new HashMap();
map.put("公司用户", "公司用户_sql");
map.put("分公司用户", "分公司用户_sql");
map.put("营业部用户", "营业部用户_sql");

Metadmin权限引擎.执行(map.get(用户类别));

这些技巧其实都来源于:人机如何分工的问题.
if/else_if/else 这是人工处理
map 这是机器去 (if/else_if/els) 处理.
这些操作只要规范了, 都可以让机器去处理;
现实系统中很难规范, 除非是开发全新的系统,
如果是遗留的系统, 再好的处理方式, 都显得苍白无力.

相关推荐

    java权限管理系统(简单)

    在Java权限管理系统中,通常涉及用户认证(Authentication)、授权(Authorization)和角色(Role)管理等几个关键部分。 1. 用户认证:这是验证用户身份的过程,通常通过用户名和密码进行。在Java中,我们可以使用...

    权限管理简单例子 适合一般初学者

    在权限管理中,Spring的Security模块可以用来实现用户认证和授权,控制哪些用户可以访问哪些资源。 4. **Struts**: Struts是基于MVC(Model-View-Controller)设计模式的Web应用框架,负责处理HTTP请求,调用业务...

    php 简单的权限管理系统

    在IT行业中,权限管理系统是构建复杂应用程序不可或缺的一部分,特别是在Web开发领域。PHP作为一种流行的服务器端脚本语言,常被用于创建动态网站和应用程序。在这个"php 简单的权限管理系统"中,我们将会探讨如何...

    PHP权限管理系统源码

    实现了基本的权限管理,本系统是基于权限节点进行认证,可控制菜单显示隐藏,基于角色控制权限节点。 1、前端框架:layui2.5.6 2、后端框架:ThinkPHP5.1.39LTS 3、后端界面基于layuimini 权限管理系统安装教程: 1...

    简单权限管理

    总的来说,这个“简单权限管理”项目旨在构建一个用户友好的、可定制的权限控制系统,利用.NET框架的功能,结合数据库设计和前端界面,实现用户身份验证、权限分配以及UI自定义,以满足不同用户群体的需求。...

    C# 中简单权限管理

    首先,权限管理的核心是身份验证(Authentication)和授权(Authorization)。身份验证是确认用户身份的过程,而授权则是决定已验证的用户可以执行哪些操作。在C#中,我们可以使用.NET Framework或.NET Core提供的...

    简单实用权限管理系统

    总结来说,“简单实用权限管理系统”旨在平衡用户便利性和系统安全性,通过有效的权限控制,保护了数据资产,提高了系统的整体效率。理解并实施这样的系统,对于任何组织的信息化建设都是至关重要的。

    实用的简单权限管理系统

    总的来说,"实用的简单权限管理系统"实例涵盖了权限模型设计、用户管理、数据库交互、接口开发、安全策略以及审计跟踪等多个关键领域,为开发者提供了一个基础的权限管理解决方案。通过学习和理解这个实例,开发者...

    spingMVC+MyBatis简单权限管理系统

    2. **Spring Security**:虽然标题和描述中没有明确提及,但在实际的权限管理系统中,Spring Security 往往被用来实现用户认证和授权。它提供了一套完整的安全控制机制,包括登录、会话管理、访问控制等。 3. **...

    【权限管理】beego实现简单的rbac权限管理系统.zip

    【权限管理】beego实现简单的rbac权限管理系统.zip 【权限管理】beego实现简单的rbac权限管理系统.zip 【权限管理】beego实现简单的rbac权限管理系统.zip 【权限管理】beego实现简单的rbac权限管理系统.zip

    角色权限管理简单实现

    在IT行业中,权限管理是系统安全的...总的来说,角色权限管理是软件开发中不可或缺的部分,它有助于保护系统资源,保证数据安全,并提高用户体验。通过合理的角色和权限设计,我们可以创建一个既高效又安全的应用环境。

    前端权限控制与管理简单示例

    在前端开发中,权限控制与管理是至关重要的一个环节,尤其在企业级应用中,确保用户只能访问和操作他们被授权的功能和数据是系统安全的基础。"前端权限控制与管理简单示例"这个项目旨在展示如何在前端实现一套完整的...

    一个简单实用的系统管理模块(权限管理模块)例子

    总之,一个简单实用的系统管理模块和权限管理模块对于任何IT系统来说都是基础且重要的组成部分。通过有效的权限控制,企业能够保护其核心数据,同时确保用户只能访问他们需要的信息和功能,从而提高整体的安全性和...

    SSH 简单权限管理

    SSH(Secure Shell)是一种网络协议,用于在不...总结来说,SSH权限管理是一个涵盖用户账户、公钥认证、访问控制和审计等多方面的复杂系统。通过理解和应用这些概念,可以构建一个安全、高效且易于管理的远程访问环境。

    php简单权限管理系统

    总目标:做一个“权限管理系统”。 一、模糊功能要求: 1)有数据库的增、删、改、查操作。 2)能够上传头像。(上传到数据库或本地;若上传到本地,数据库中应记录其位置) 3)有Cookie的应用。 4)能分页显示数据...

    经典简单的权限管理系统代码和说明

    权限管理系统是IT行业中一个至关重要的组成部分,特别是在大型企业或互联网应用中,权限管理关乎到数据安全、用户隐私以及系统操作的合法性。这个“经典简单的权限管理系统代码和说明”提供了实现此类系统的实例,...

    一个简单的权限管理Dome

    权限管理Dome,即示例项目,通常用于展示如何实现用户权限的控制与分配,确保不同角色的用户只能访问他们被授权的操作和数据。在这个简单的权限管理Dome中,我们将探讨以下几个核心知识点: 1. **角色与权限**: -...

    基于Springboot+Element-Vue-Admin实现简单权限管理系统.md

    基于Springboot+Element-Vue-Admin实现简单权限管理系统.md

    基于Java开发的OA系统(包含了流程设计器,表单设计器,权限管理,简单报表管理等功能).zip

    基于Java开发的OA系统(包含了流程设计器,表单设计器,权限管理,简单报表管理等功能).zip 基于Java开发的OA系统(包含了流程设计器,表单设计器,权限管理,简单报表管理等功能).zip 基于Java开发的OA系统...

    简单的权限控制系统

    通过角色,我们可以有效地管理和分配权限,避免为每个单独用户重复设置权限,大大简化了权限管理。 然后是权限,这是权限控制系统的核心。权限定义了用户或角色可以执行的操作,比如读取文件、写入数据、删除记录...

Global site tag (gtag.js) - Google Analytics