电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

职责分离范文

来源:开心麻花作者:开心麻花2025-09-191

职责分离范文(精选4篇)

职责分离 第1篇

在以前的管理系统中,命令(Command,通常用来更新数据,操作DB)和查询(Query)通常使用的是在数据访问层中Repository中的实体对象(这些对象是对DB中表的映射),这些实体有可能是SQL Server中的一行数据或者多个表。

对于一些比较简单的系统,使用这种CRUD的设计方式能够满足要求。特别是通过一些代码生成工具及ORM等能够非常方便快速地实现功能。

但是传统的CRUD方法有一些问题:

(1)使用同一个对象实体来进行数据库读写可能会太粗糙,大多数情况下,比如编辑的时候可能只需要更新个别字段,但是却需要将整个对象都穿进去,有些字段其实是不需要更新的。在查询的时候在表现层可能只需要个别字段,但是需要查询和返回整个实体对象。

(2)使用同一实体对象对同一数据进行读写操作的时候,可能会遇到资源竞争的情况,经常要处理锁的问题,在写入数据的时候,需要加锁。读取数据的时候需要判断是否允许读取。这样使得系统的逻辑性和复杂性增加,并且会对系统吞吐量的增长会产生影响。

(3)同步地,直接与数据库进行交互在大数据量同时访问的情况下可能会影响性能和响应性,并且可能会产生性能瓶颈。

(4)由于同一实体对象都会在读写操作中用到,所以对于安全和权限的管理会变得比较复杂。

这里面一个很重要的问题是,系统中的读写频率比,是偏向读,还是偏向写,就如同一般的数据结构在查找和修改上时间复杂度不一样,在设计系统的结构时也需要考虑这样的问题。解决方法就是经常用到的对数据库进行读写分离。让主数据库处理事务性的增、删、改操作(Insert,Update,Delete),让从数据库处理查询操作(Select),数据库复制被用来将事务性操作导致的变更同步到集群中的从数据库。这只是从DB角度处理了读写分离,但是从业务或者系统上面读和写仍然是存放在一起的。他们都是用的同一个实体对象。

要从业务上将读和写分离,就是要谈到介绍的命令查询职责分离模式。

2 CQRS定义

CQRS最早来自于Betrand Meyer(Eiffel语言之父,开-闭原则OCP提出者)在Object-Oriented Software Construction这本书中提到的一种命令查询分离(Command Query Separation,CQS)的概念。其基本思想在于,任何一个对象的方法可以分为两大类:

(1)命令(Command):不返回任何结果(void),但会改变对象的状态。

(2)查询(Query):返回结果,但是不会改变对象的状态,对系统没有副作用。

操作和查询分离使得人们能够更好地把握对象的细节,能够更好地理解哪些操作会改变系统的状态。CQRS只是简单地将之前只需要创建一个对象拆分成了两个对象,这种分离是基于方法是执行命令还是执行查询这一原则来定的(这个和CQS的定义一致)。

CQRS使用分离的接口将数据查询操作(Queries)和数据修改操作(Commands)分离开来,这也意味着在查询和更新过程中使用的数据模型也是不一样的。这样读和写逻辑就隔离开来了。使用CQRS分离了读写职责之后,可以对数据进行读写分离操作来改进性能,可扩展性和安全。如图1所示。

主数据库处理CUD,从库处理R,从库的结构可以和主库的结构完全一样,也可以不一样,从库主要用来进行只读的查询操作。在数量上从库的个数也可以根据查询的规模进行扩展,在业务逻辑上,也可以根据专题从主库中划分出不同的从库。从库也可以实现成ReportingDatabase,根据查询的业务需求,从主库中抽取一些必要的数据生成一系列查询报表来存储。

3 CQRS特点

CQRS模式的优点:

(1)分工明确,可以负责不同的部分。

(2)将业务上的命令和查询的职责分离能够提高系统的性能、可扩展性和安全性。并且在系统的演化中能够保持高度的灵活性,能够防止出现CRUD模式中,对查询或者修改中的某一方进行改动,导致另一方出现问题的情况。

(3)逻辑清晰,能够看到系统中的哪些行为或者操作导致了系统的状态变化。

(4)可以从数据驱动(Data-Driven)转到任务驱动(Task-Driven)以及事件驱动(Event-Driven)。

基于以上优点,在以下场景中,可以考虑使用CQRS模式:

(1)当在业务逻辑层有很多操作需要相同的实体或者对象进行操作的时候。CQRS使得可以对读和写定义不同的实体和方法,从而可以减少或者避免对某一方面的更改造成冲突。

(2)对于一些基于任务的用户交互系统,通常这类系统会引导用户通过一系列复杂的步骤和操作,通常会需要一些复杂的领域模型,并且整个团队已经熟悉领域驱动设计技术。写模型有很多和业务逻辑相关的命令操作的堆,输入验证,业务逻辑验证来保证数据的一致性。读模型没有业务逻辑以及验证堆,仅仅是返回DTO对象为视图模型提供数据。读模型最终和写模型相一致。

(3)适用于一些需要对查询性能和写入性能分开进行优化的系统,尤其是读/写比非常高的系统,横向扩展是必须的。对于系统在将来会随着时间不断演化,有可能会包含不同版本的模型,或者业务规则经常变化的系统。

(4)需要和其他系统整合,特别是需要和事件溯源Event Sourcing进行整合的系统,这样子系统的临时异常不会影响整个系统的其他部分。

4 CQRS与Event Sourcing的关系

在CQRS中,查询方面,直接通过方法查询数据库,然后通过DTO将数据返回。在操作(Command)方面,是通过发送Command实现,由CommandBus处理特定的Command,然后由Command将特定的Event发布到EventBus上,然后EventBus使用特定的Handler来处理事件,执行一些诸如,修改、删除、更新等操作。这里,所有与Command相关的操作都通过Event实现。这样可以通过记录Event来记录系统的运行历史记录,并且能够方便地回滚到某一历史状态。Event Sourcing就是用来进行存储和管理事件的。这里不展开介绍。

5 CQRS的实现

CQRS模式在思想上比较简单,但是实现上还是有些复杂。它涉及到DDD,以及Event Sourcing,这里使用一个实例来说明CQRS模式。这个实例是一个简单的在线记日志系统,实现了日志的增删改查功能。整体结构如图2所示。

图2很清晰地说明了CQRS在读写方面的分离,在读方面,通过QueryFacade到数据库里去读取数据,这个库有可能是ReportingDB。在写方面,比较复杂,操作通过Command发送到CommandBus上,然后特定的CommandHandler处理请求,产生对应的Event,将Eevnt持久化后,通过EventBus特定的EevntHandler对数据库进行修改等操作。

6 结语

试论内部控制机构设置与职责分离 第2篇

一、企业内部控制建立健全的重要性

内部控制, 是由企业董事会、监事会、经理层和全体员工实施的、旨在实现控制目标的过程。内部控制的目标是合理保证企业经营管理合法合规、资产安全、财务报告及相关信息真实完整, 提高经营效率和效果, 促进企业实现发展战略。建立健全有效的内部控制, 特别是合理设置企业内部职能机构, 明确各机构的职责权限, 避免职能的交叉、缺失或权责过于集中, 形成各司其职、各负其责、相互制约、相互协调的工作机制, 对企业保障资产安全完整、规避风险, 促进企业实现发展战略至关重要。

(一) 企业内部控制重视程度

现如今, 各国政府监管机构及相关领域对内部控制的重视程度越来越高。2004年COSO委员会在1992年《内部控制整体框架》基础上, 结合《萨班斯一奥克斯利法案》形成了《企业风险管理总体框架》, COSO在其风险管理框架中说明, 风险管理框架建立在内部控制的基础上, 内部控制是企业风险管理必不可少的一部分。我国也紧跟国际步伐, 先后制定并发布了《企业内部控制基本规范》及一系列配套指引。配套指引已最大程度地与国际趋同, 要求自2011年1月1日起在境内外同时上市的公司施行, 自2012年1月1日起在沪、深两市主板上市公司施行;在此基础上, 择机在中小板和创业板上市公司施行。鼓励非上市大中型企业提前执行。上市公司和非上市大中型企业, 应当对内部控制的有效性进行自我评价, 披露年度自我评价报告, 同时应当聘请会计师事务所对财务报告内部控制的有效性进行审计并出具审计报告。

(二) 机构设置与职责分离控制在内部控制中的地位

《企业内部控制基本规范》第四条, 企业建立与实施内部控制, 应当遵循的五原则之一制衡性原则, 强调内部控制应当在治理结构、机构设置及权责分配等方面形成相互制约、相互监督。第五条内部控制的五要素, 内部环境是企业实施内部控制的基础, 一般包括治理结构、机构设置及权责分配等。企业应当根据国家有关法律法规和企业章程, 建立规范的公司治理结构和议事规则, 明确决策、执行、监督等方面的职责权限, 形成科学有效的职责分工和制衡机制。要求企业全面系统地分析、梳理业务流程中所涉及的不相容职务, 结合业务特点和内部控制要求设置内部机构, 明确职责权限, 将权利与责任落实到各责任单位。使全体员工掌握内部机构设置、岗位职责、业务流程等情况, 明确权责分配, 正确行使职权。

二、企业内部控制机构设置与职责分离缺陷分析

因受管理者风险偏好及管理成本等因素的制约, 许多企业在机构设置及职责分离控制中存在缺陷, 以致企业运行效率低下、决策失误, 甚至舞弊事件屡屡发生。

(一) 管理者风险偏好导致控制缺陷及影响

风险偏好就是企业在实现其目标的过程中所愿意承受的广泛意义的风险的数量。在企业的战略制订和相关目标的选择中风险偏好起着导向作用。企业在制定战略时, 应考虑将战略的既定收益与企业的风险偏好结合起来, 其目的在于帮助企业的管理者在不同战略间选择与企业的风险偏好相一致的战略。在企业的成长过程中, 风险是多样的, 甚至是如影随行的。可以说管理者对风险的认知与驾驭能力决定着企业的命运。虽然风险管理理念已得到普遍认同, 但是, 许多企业在风险管理的应用方面却依然十分薄弱, 缺乏有效的风险识别、评价和反应机制, 企业抗风险能力较低, 以至于面对着形形色色的内外风险只能是亡羊补牢, 难以驾驭。

企业战略目标的制定、业务活动的组织以及风险的识别都需要建立在一个良好的控制环境之下。然而, 我国多数企业对内部控制环境的改善缺乏足够的重视, 组织结构不合理, 监事会受制于董事会, 内部审计缺乏独立性和权威性, 企业文化缺失等问题普遍存在。这些内部控制环境紊乱的现象, 势必造成企业内部控制基础薄弱, 影响内部控制的有效运行。

(二) 机构设置存在的问题及影响

一个企业的管理模式就想一个人的性格, 有他的惯性思维方式, 这也正是由国企改制形成的股份公司所呈现的弊端, 企业在根本上的转型不够彻底, 普遍存在机构臃肿、管理层次多和工作效率低的问题。企业在组织机构设置中, 比较重视纵向的权利、义务关系, 而对横向的协调关系缺乏足够重视, 导致同级部门间缺乏必要的交流和协调, 以至信息沟通不畅。一些重要部门、岗位因为缺乏严格的监督, 在重大决策上往往独断专行, 以至决策失误频频发生。

现代企业要求“产权清晰、权责分明、政企分开、管理科学”, 而目前许多企业普遍存在权责不清, 管理混乱, 内部控制不健全, 即使有也没有严格执行, 在管理中人情味太浓, 往往是情大于法、理。制度形同虚设, 组织结构不合理, 部门和部门之间、上级和下级之间缺少协调、有效的沟通渠道, 信息反馈滞后, 不能适时监控, 信息不对称问题严重, 缺乏有效的激励机制和监控机制。导致业务部门之间相互扯皮, 办事拖拉, 出了问题相互推卸责任, 处理事情没有全局观念。

(三) 职责冲突造成的损失与负面影响

职责冲突风险是指企业管理层、员工或业务岗位因为不合理的职责授权而存在的可能导致舞弊、欺诈、过失等事件发生的风险。企业内部的舞弊和过失事件中, 由于职责冲突造成的事件举不胜举, 下面我们通过几个典型实例来阐述职责冲突可能造成的企业损失和负面影响:

1995年巴林银行的倒闭向世人敲响了金融企业内部控制的警钟。导致巴林银行倒闭的业务是衍生金融工具的买卖, 衍生金融工具业务操作风险极高, 为了识别和控制风险, 交易员和清算员应当进行职责分离以便利用清算员的每日清算来防止和发现并纠正交易失误。但在巴林银行, 里森既担任交易员又担任清算员, 为其进行违规操作和掩盖失误提供了方便。正是这种不相容职责未分离的冲突, 使得风险控制彻底失败, 从而导致了悲剧的必然发生。反思巴林银行倒闭的成因, 管理者的风险意识不足、风险评估存在失误是重要的原因, 但其薄弱的控制环境与不合理的职责分工却是其走向死亡的直接原因。

更有甚者, 中航油巨亏事件, 中国航油 (新加坡) 股份有限公司是中国航空油料集团公司的海外控股公司。经国家有关部门批准, 新加坡公司在取得中国航油集团公司授权后, 自2003年开始做油品套期保值业务。在此期间, 新加坡公司总裁陈久霖擅自扩大业务范围, 违法违规从事石油衍生品期权交易, 并同多家银行签订了场外交易合同。造成了5000万美元的保证金支付义务, 导致现金流量枯竭, 产生巨额损失。为了掩饰公司的违法行为, 开始向上级公司提供假账, 而且一意孤行, 继续向错误方向追加资金, 使得中航油事件从一个并不很大的失误开始, 酿成为石破天惊的大案、要案。分析整个事件过程, 陈久霖作为一个管理人员, 在整个投机过程中, 没有任何阻拦与障碍, 而在事后还能一手遮天、隐瞒真实信息, 说明其在授权、执行、以至监督与检查功能的设置方面存在严重问题。

款项支付是会计核算的日常业务活动, 通过支票支付时, 银行出纳对支票的填写非常小心, 而且签章环节普遍比较重视。但是随着网上银行的普及, 这方面的风险也随之加大。网银支付在带来便捷的同时也淡化了人们对数字的敏感意识和对此岗位的重视程度。审核制单与复核支付是网银支付业务活动中的不相容岗位, 而许多企业在实际操作过程中却由一人完成, 从而为错误与舞弊的发生埋下了隐患。如某科研院所在支付工程款时, 经审批的付款申请为发票金额的20%, 而由于出纳的疏忽, 全额支付了此款项。等发现错误时双方却因纠纷解除了合同, 致使款项无法追回, 给企业带来了重大损失。

三、企业内部控制机构设置与职责分离控制构建

(一) 加强管理者的风险意识, 提高风险防范能力

如何防范和化解经营风险是当前需要解决的现实问题, 作为企业的管理者, 董事、监事、经理及其他高级管理人员应当有极强的风险意识, 并努力将这种意识灌输给企业所有的成员, 定期进行风险管理的培训和交流, 培育积极向上的价值观和社会责任感, 倡导诚实守信、爱岗敬业、开拓创新和团队协作精神, 树立现代管理理念, 强化风险意识, 将风险管理意识转化为全体员工的共同认识。

《风险管理框架》还提出了风险组合与整体管理的观念, 要求企业管理层以风险组合的观点看待风险, 对相关的风险进行识别并采取措施使企业所承担的风险在风险偏好的范围内。同时要求各业务单位、职能部门、生产过程或相应的其他活动的各层管理者对其负责的部门或单位的风险应进行复合式评估。而企业高层管理者也应从企业整体层面上考虑相互关联的风险和企业的总风险。通过持续实施风险监控, 不断强化企业日常动态管理, 逐步实现内部控制向风险管理的全面提升。营造良好企业制度文化氛围, 创造良好的内部控制环境, 优化企业内部环境, 从而确保内部控制执行的有效性。

当然, 企业还应当合理分析、准确掌握董事、经理及其他高级管理人员、关键岗位员工的风险偏好, 采取适当的控制措施, 避免因个人风险偏好给企业经营带来重大损失。

(二) 合理设置企业管理机构, 使其精简、高效、制衡

近年来企业管理层舞弊事件频发, 究其原因公司治理形备而实不至, 公司管理层常凌驾于内部控制之上。因此, 企业应该优化内部环境, 应该将内部控制纳入到公司治理结构框架中, 严格按照现代企业制度建设要求组建企业的法人治理结构, 明确合理的股东会、董事会、监事会的权责, 完善董事会结构, 使得股东会、董事会和经理层之间相互制衡, 防止管理层凌驾于内部控制之上。与此同时, 企业应当结合业务特点和内部控制要求设置内部机构, 明确职责权限, 将权利与责任落实到各责任单位。为内部控制制度的实行建立一个良好的运行环境。

(三) 以内部牵制为核心细化业务活动流程的不相容职务分离控制

所谓的不相容职务, 是指在经济业务处理过程中, 集中一人办理容易产生漏洞和弊端的不相容职务分离控制, 概括而言, 即经济业务的授权者与执行者要分离, 执行者与记录者、监督者要分离, 物资财产的保管者与使用者、与记录者要分离。不相容职务分离的核心是内部牵制。企业在设计内部控制制度时, 首先要确定哪些岗位和职务是不相容的;其次要明确规定各个机构和岗位的职责权限, 使不相容岗位和职务之间能够相互监督、相互制约, 形成有效的制衡机制。

职责分离控制是指为了避免或降低职责冲突风险而采取的控制措施。企业构建自己的职责分离控制体系的主要工作在于设计、部署, 并监督有效的职责分离控制。同时也应该注意这个体系构建时的顺序和完整性。构建企业职责分离控制体系可以从企业层级和业务流程层级分别细化和明确, 将所有业务活动分离出授权、批准、执行、记录及监督, 并将这些职能分别授于不同部分执行, 形成一个相互牵制、相互制约的过程, 是内部控制的精髓。例如, 在销售交易的内部控制中, 为确保办理销售与收款业务的不相容岗位分离、制约和监督, 企业应当将办理销售、发货、收款三项业务的部门或岗位分别设立;在销售合同签定以前, 应当指定专门人员就销售价格、信用政策、发货及收款方式等具体事项与客户谈判。谈判人员至少应有两人以上, 并与订立合同的人员相分离;编制销售发票通知单的人员与开具销售发票的人员相互分离;销售人员应当避免接触销货现款等。另外还有授权审批问题, 企业应明确授权审批范围和权限, 做好关键点上的审批, 象赊销审批、发货审批以及销售价格、条件和折扣审批等。这样可以有效的防止舞弊、错误的发生, 也可以防止审批人决策失误而造成严重损失。

内部控制的建立与实施还需要考虑成本效益原则, 应当权衡实施成本与预期效益, 以适当的成本实现有效控制。当已识别的职责冲突无法通过改变职责授权来消除时, 企业可以选择引入补偿性控制来间接地规避该职责冲突风险。例如当企业因为人力成本的原因无法实现招聘更多人手来消除已有的职责冲突时, 管理层可以采取“相互稽核”这一补偿性控制在一定程度上来规避原有的风险。

加强和规范企业内部控制, 已成为提高企业经营管理水平和风险防范能力, 促进企业可持续发展, 维护社会主义市场经济秩序和社会公众利益的重要保障。科学有效的机构设置与职责分离就是这一重要保障的根本。企业应当不断加强和完善机构设置与职责分离控制, 使内部控制制度科学、有效、制衡, 使企业在危机四伏的经济浪潮中立于不败之地。

参考文献

[1]《企业内部控制基本规范》, [S].2008;

[2]《企业内部控制应用指引第1号—组织架构》, [S].2010;

[3]冯晔、钱静波:《试论职责分离控制》, 《新会计》2010年第8期。

[4]李若山、徐明磊:《COSO报告下的内部控制新发展》, 《会计研究》2005年第2期。

[5]牛巍巍:《企业内部控制要从内部牵制抓起》, 《现代商业》2010年第6期。

[6]陈文杰、迟淑贤:《我国企业内部控制环境因素研究》, 《赤峰学院学报 (自然科学版) 》2010年第7期。

[7]高建立、击瑞科、马继伟:《从内部控制缺失看巴林银行倒闭的成因》, 《商业研究》2003年第23期。

[8]蔡苗:《企业内部控制案例分析》, 《财会通讯》2009年第17期。

[9]古伟中:《浅析加强企业收入内部控制的方法》, 《中国商界》2010年第9期。

职责分离财务经理 第3篇

2、确保资金有效管理,加速资金周转,考核资金使用效果,规避资金和债务风险;

3、对报送的会计报表负责,按时编写财务分析,定期向相关领导汇报财务状况;

4、定期清理往来账户,及时催收和清偿款项,做好帐务核对工作;

5、负责部门团队建设及员工培养,制定财务内部相关指标,做好绩效考核管理;

6、全面负责帐务问题处理及税务的协调工作,维系好与银行及税务机关的关系;

职责分离 第4篇

1 基于角色的访问控制模型

1.1 NIST RBAC模型结构

基于角色的访问控制(RBAC:Role-Based Access Control)的基本思想是将权限指派给角色,同时将用户也指派给角色,用户通过角色取得相应的权限。角色起着媒介的作用,将用户和权限的对应关系拆分成用户和角色的对应关系以及角色和权限的对应关系,它们都是多对多的关系。

作为研究RBAC技术的权威机构,NIST在1996年提出了一个包括4个模型概念的RBAC模型家族[1],并在2001年发表了RBAC建议标准[2]。建议标准将RBAC模型划分为4个组件:核心RBAC、等级RBAC、静态职责分离和动态职责分离,其模型结构如图1所示。

RBAC技术的基本思想是通过角色建立用户和权限间的多对多关系,用户根据角色获得权限。在这里主体指可以对其它实体实施操作的主动实体。通常是系统用户或代理用户行为的进程。用户指企图使用系统的人员。客体指接受其它实体动作的被动实体。角色可以理解为与特殊工作相关的行为和职责的集合,也可以理解为用户与权限的集合。权限指在受系统保护的客体上执行某一操作的许可,这是一个抽象概念和具体的应用背景相关。用户角色指派指将用户指派给角色。权限角色指派指将权限指派给角色,角色间可以有继承关系,用户具有其所属诸角色和诸角色子角色的所有权限的总和。

1.2 静态职责分离和动态职责分离

在一个基于角色的系统中,由于用户可能会获取互斥角色的授权,因此就会出现权力冲突。静态职责分离(SSD:Static Separation of Duties)指在将用户指派给角色时施加约束来阻止这种冲突发生。这意味着如果一个用户指派给了一个角色,那么他将被禁止指派给与这一角色存在互斥关系的任何其他角色。此外,SSD关系也存在于等级RBAC中,角色的继承也包含了SSD关系的继承。根据用户、角色和权限之间的关系,SSD可以划分为以下几类:

数目限制:指派给角色的用户的个数有限制,例如每个部门的经理只能由一个用户担任。还有用户所属的角色的个数也有限制,例如普通职工最多只能属于有限个角色。

角色互斥:有业务逻辑冲突的两个不同的角色不可被指派给同一个用户,例如会计和出纳是两个冲突的角色,一个用户不可以既是会计又是出纳。

权限互斥:有业务逻辑冲突的权限不可被指派给同一个角色。同时,在角色继承中,拥有互斥权限的角色不可被同一个角色继承。

与SSD类似,动态职责分离(DSD:Dynamic Separation of Duties)也用于限制可提供给用户的访问权限,但实施的机制不同,DSD在用户会话中对可激活的当前角色进行限制。在SSD中,有冲突的角色不可被指派给同一个用户;在DSD中,有冲突的角色可以被指派给同一个用户,但是它们不能在同一个会话中被激活。DSD是最小权限原则的扩展,每个用户根据其执行的任务可以在不同的环境下拥有不同级别的访问权限,DSD确保访问权限不会在时间上超越它们对履行职责的必要性。

2 基于角色的访问控制技术中职责分离的实现

2.1 访问控制管理数据逻辑结构

基于RBAC技术实现访问控制管理的数据库逻辑结构如图2所示,包括以下数据表:

1)权限表(AC_PERMISSIONS):存放系统可供访问资源信息,对于Web应用来说,可以是页面地址。

2)权限冲突表(AC_PERMISSION_CONSTRAINT):根据职责分离的要求,该表保存不能被同时赋予同一个角色或用户的权限对。CONFLICT_TYPE字段记录权限冲突的类型,静态冲突的权限在任何情况下都不能被赋予同一个角色或用户;动态冲突的权限可以在指派的时候被赋予同一个角色或用户,但是在会话中不可被同时激活。

3)角色表(AC_ROLES):记录和角色相关的信息,ROLE_TYPE字段标注角色的类型,分为三种:基角色、复合角色和特有角色。基角色指只包含权限成员,不包含任何角色成员的角色。复合角色可以同时包含角色成员和权限成员。为了方便系统的实现,这里增加了特有角色的概念,将复合角色包含的权限成员以特有角色的方式体现。将权限指派给某个角色时,实际上是由系统自动生成一个特有角色,包含所有权限,再将该特有角色赋予相应角色。每个角色都可以有一个和其相关的特有角色,当角色被删除的时候,系统自动删除其特有角色。系统显示的时候,如果碰到特有角色,则直接显示其包含的权限成员。因此特有角色对于用户是透明的,在用户看来,复合角色可以拥有权限成员,但实际上复合角色只拥有特有角色和角色成员。这样的设计主要是为了方便使用递归算法,以实现例如获取某角色所包含的所有权限(包括其所有子角色拥有的权限)之类的操作。

4)角色冲突表(AC_ROLE_CONSTRAINT):根据职责分离的要求,该表保存不能被同时赋予同一个用户的角色对。CON-FLICT_TYPE字段记录角色冲突类型为静态的还是动态的。

5)角色层次表(AC_ROLE_LAYERS):保存角色间的层次关系。

6)角色权限表(AC_ROLE_PERMISSION):记录权限角色指派的内容,即记录每个角色所拥有的权限信息。

7)用户表(AC_USERS):记录企业用户帐号的基本信息以及上次登录IP、上次登录时间等信息。

8)用户角色表(AC_USER_ROLE):记录用户角色指派内容,即每个角色被赋予了哪些用户。

2.2 权限角色指派中职责分离的实现逻辑

在进行权限角色指派时需要满足静态职责分离约束,职责分离指由于内在的利益冲突或防止欺骗行为所需要的任务分离,即冲突的任务不可共存,静态指在配置用户权限的时候实现分离。根据用户、权限、角色之间的关系,职责分离可分为角色分离和权限分离;角色分离指两个特定角色不可拥有同一个用户,权限分离指两个特定权限不可被赋予同一个角色。静态职责分离即权限角色指派中的静态冲突检测,其实现逻辑如图3所示。动态职责分离即会话中角色激活时动态冲突检测,其实现逻辑和静态冲突检测逻辑类似,只是冲突检测时机和冲突发生后的处理不同。

2.3 权限角色指派中职责分离实现代码

根据以上分析,这里设计了5个函数,通过组合调用这5个函数可以完成以上的冲突检测,它们分别是:

1)函数名:public int is_sub_role(string role_id1,string role_id2)

功能:判断2个角色间是否存在继承关系。返回值为0:不存在;为1:role_id1是父角色;为2:role_id2是父角色。

2)函数名:public DataSet check_conflict_permissionVrole(string per_id,stringrole_id,string c_type)

功能:判断一个资源项和一个角色所包含的所有资源项是否冲突,返回冲突的资源项集合,c_type=”0”静态冲突,”1”动态冲突。

3)函数名:public DataSet check_conflict_role_permissions(string role_id1,string role_id2,string c_type)

功能:判断2个角色所包含的资源项是否冲突,返回冲突的资源项集合。

4)函数名:public bool check_conlict_role(string role_id1,string role_id2,string c_type)

功能:判断2个角色是否冲突,c_type=”0”静态冲突,”1”动态冲突。

5)函数名:public bool check_conflict_per(string per_id1,string per_id2,stringc_type)

功能:判断2个资源项是否冲突,c_type=”0”静态冲突,”1”动态冲突。

下面我们介绍一下其中第二个函数:public DataSet check_conflict_role_permissions(string role_id1,string role_id2,string c_type)实现的算法。该函数将两个角色role_id1,role_id2所拥有的所有权限之间的权限冲突情况找出来,c_type=’0’时,为静态冲突判断;c_type=’1’时,为动态冲突判断。算法首先通过递归函数求出每个角色拥有的所有权限的并集,然后将这2个权限集合求笛卡尔积,然后和权限冲突集合求交集,相交部分即为这两个角色违反静态冲突的情况。虽然求笛卡尔积开销很大,但是和取出一个角色的所有权限逐条和另一个角色的所有权限比对检查冲突情况的做法相比,付出这些代价是值得的。具体算法如下:

1)建立一个临时表:ac_conflict_check_item(item1:NUMBER,item2:NUMBER)。这里item1字段用户放置权限ID,item2字段是个标志位,=1表示item1字段放的是角色1的权限,=2表示item1字段放的是角色2的权限。

2)通过递归函数找出第一个角色(role_id1)的所有权限,放入ac_conflict_check_item表item1字段中,将item2字段标为1。

3)通过递归函数找出第二个角色(role_id2)的所有权限,放入ac_conflict_check_item表item1字段中,将item2字段标为2。

4)将角色1的所有权限和角色2的所有权限做笛卡尔乘,将得到的结果和权限冲突表(ac_permission_constraint)中的记录比对,如果存在交集,交集部分就是冲突的权限,将该交集作为结果返回。实现该步骤的sql语句如下:select temp3.p1,temp3.p2,p1permission_name n1,p2.permission_name n2 from(select distinct temp1.p1,temp1.p2 from(select a.item1 p1,b.item1 p2 from rbacdba.ac_conflict_check_item a,rbacdba.ac_conflict_check_item b where a.item2=1 and b.item2=2)temp1,(select pc.permission_id1 p1,pc.permission_id2 p2 from rbacdba.ac_permission_constraint pc where pc.per_conflict_type=c_type)temp2 where((temp1.p1=temp2.p1and temp1.p2=temp2.p2)))temp3,rbacdba.ac_permission p1,rbacdba.ac_permission p2 where temp3.p1=p1.permission_id and temp3.p2=p2.permission_id;

2.4 用户角色指派中职责分离的实现

用户角色指派即指定用户和角色之间的对应关系,在给用户指派一个新角色时,同样需要根据角色冲突设置和权限冲突设置进行职责分离,须进行如下冲突检测:

1)新角色的所有权限是否已经全部包含在原有角色通过继承可以获得的权限集合中,如已包含,则提示管理员没有必要再次指派。

2)新角色和用户已有角色间是否存在静态角色冲突。如存在,列出冲突的角色,供管理员重新指派。

3)新角色的所有子角色和用户已有角色的所有子角色间是否存在静态角色冲突。如存在,列出冲突的角色,供管理员重新指派。

4)新角色的所有权限和已有的所有权限之间是否存在静态权限冲突。如存在,列出冲突的权限,供管理员重新指派。

3 结束语

基于角色的访问控制技术具有适应性强,管理方便,易于扩展等诸多优点,已被广泛应用于操作系统、数据库系统、工作流系统和各种应用软件的设计与实现中。本文总结了将RBAC应用于Web应用开发的实际开发经验,详细介绍了如何在实际开发中实现RBAC的职责分离部分,以保障系统最小特权原理的实现,对于各类基于RBAC技术的访问控制系统的开发具有实际参考价值。

摘要:职责分离是基于角色的访问控制技术中保障实现最小特权原理的关键因素。基于实际项目开发经验,详细阐述了基于角色的访问控制技术中职责分离实现的目的、原理、实现逻辑以及具体的实现方法。

关键词:访问控制,基于角色的访问控制,授权,职责分离,最小特权

参考文献

[1]Sandhu R S,Coyne E,Feinstein H,et a1.Role-based Access Control Models[J].IEEE Computer,1996,29(2):38-47.

[2]Ferraiolo D F,Sandhu R S,Gavrile S,et a1.Proposed NIST Standard for Role-based Access Control[J].ACM Transactions on Informa-tion and Systems Security,2001,4(3):224-274.

[3]Chang-Joo Moon,Dae-Ha Park,et a1.Symmetric RBAC model that takes the separation of duty and role hierarchies into consideration[J].Computers&Security,2004(23):126-136.

[4]Zhu Qiaoming,Li Peifeng,Zhang Su,et a1.A Unified Authorization Platform Based on RBAC4WAS Model for Web Application SystemIntegration[C]//Proc.of International Conference on Cyberworlds[S.l.]:IEEE Computer Society,2005:505-509.

[5]Ahmed R M,Trahan J L.Two-terminal Reliability of Hypercubes[C]//Proceedings of IEEE Southeastcon Conference.[S.1.]:IEEEPress,1991:427-431.

[6]翟征德,冯登国.一个通用的分布式访问控制决策中间件[J].计算机工程与应用,2008,44(1):17-20.

职责分离范文

职责分离范文(精选4篇)职责分离 第1篇在以前的管理系统中,命令(Command,通常用来更新数据,操作DB)和查询(Query)通常使用的是在数据访...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部