最新消息:ww12345678 的部落格重装上线,希望大家继续支持。

[转]AX2012基于角色的权限设计2-权限结构

网络文摘 William 333浏览 0评论

本文重点结合Microsoft Dynamics AX 2012的权限体系和标准角色,分析如何对Role, Duty和Privilege进行合理地利用,从而设计出一种既便于初始权限收集,又利于后续维护的权限结构。初始权限收集的主要难点在于如何整理一个表述清晰的权限模板,并通过其与用户取得良好的沟通;后续权限维护的主要难点在于如何快速响应现有岗位的职责范围变动、如何将开发的新功能准确地赋予相应用户。一个合理的权限结构,应该对这两个方面有很好的支撑。

 

一、        基本权限结构

在AX系统中,权限的设定是基于角色的,下图展示了Role, Duty和Privilege各自包含的内容,及三者的相互关系。

图片见附件。

1.         Role(角色)

包含Sub Role, Duty, Privilege和对Table, Form, Server Method的Permission设置。

2.         Duty(职责)

只包含Privilege,相当于Privilege的分组。

3.         Privilege(特权)

包含MenuItem和对Table, Form, Server Method的Permission设置。

二、        权限对象定义

根据上述AX基本权限结构,就可以完成一项有效的权限设置,但考虑到权限管理是一项持续性的工作,我们还应该对Role, Duty和Privilege这3个权限对象进行合理地定义,明确其各自包含的内容,才能搭建出一个清晰的、具有较强适应性的,能够帮助系统管理员快速、准确地为用户分配所需权限的权限结构。实际上,AX系统标准角色对这3个权限对象的定义就十分准确、合理,以标准角色“产品设计师”为例,示意图如下:

这是一个典型的RoleàDutyàPrivilegeàMenuItem形式的权限设计,对Role, Duty和Privilege的定义十分准确。

1.         Role按照岗位定义,避免了归属于同一角色的不同用户有不同权限需求的问题。在实际使用中,考虑到同一岗位在不同公司可能具有不同的职责范围,建议按照“公司+账套+岗位”的方式定义。

2.         Duty按照最小的ERP标准业务操作定义,保证了通用性,即同一职责可以引用到多个角色中,使权限设置更加便捷。

3.         Privilege按照最小的系统功能定义,保证了稳定性,一般不需要对已有特权做任何变动。

总结下来,对Role, Duty, Privilege的最佳定义方式如下:

表格见附件。

注意:由于RoleàDutyàPrivilege是逐层包含的关系,Privilege和Duty本身的变动一般会影响很多角色,所以,原则上Privilege一经创建就不应再做改动,Duty除了放入开发的新功能外,也不应再做其他改动。用户所在岗位的变动,通过更改用户所属的Role实现;用户岗位的职责范围变动,通过更改Role包含的Duty,或者对Role进行特殊设置实现。(Role的特殊设置在下节介绍)

以上是在理论层面做的权限结构分析与总结,在实际权限结构设计过程中,由于AX系统功能繁多,客户的需求各有不同,这要求顾问既要了解系统的全部功能(Privilege),又要了解ERP的标准操作(Duty),还要了解企业的业务流程设计和岗位职责划分(Role),这对顾问的能力和耐心都是一种挑战,因此,在实际项目实施过程中,往往很难搭建出一套最佳的权限结构。

 

三、        角色特殊设置

在AX系统中,通过对Role的一些特殊设置,可以在不改变Duty和Privilege的前提下,实现权限的调整,这些设置的影响范围小,便于控制,因此非常实用。

1.         RolePrivilege直接关联

例如,为一项新开发的功能建立特权Privilege1后,发现其无法归属到任何职责中,即无法划分到任何一项ERP标准业务操作中,只有角色RoleA和RoleB应该具有该项新功能的使用权。

这种情况下,可以不用RoleàDutyàPrivilege的设置方式,而采用RoleàPrivilege的方式,跳过Duty,直接将Privilege1赋予RoleA和RoleB。

2.         Role的覆盖权限

例如公司Corp1和公司Corp2中分别建立了“Corp1采购员”和“Corp2采购员”角色,两个角色都要包含“采购订单维护”职责,但是Corp1要求采购员必须基于采购申请创建采购订单,即采购订单中的“物料编码”不允许编辑,而Corp2没有要求。

这种情况下,职责“采购订单维护”是合理的,无需调整,只需对角色“Corp1采购员”进行“覆盖权限”操作,不允许其编辑采购订单中的“物料编码”即可。

说明:建议在AOT中进行覆盖权限的操作,而不要在AX前台,这更便于AX各环境(开发、测试、生产环境)的代码同步。

原文地址:http://www.misnote.com/2016/07/15/ax2012-role-based-security-2-structure/#more-58

转载请注明:ww12345678 的部落格 | AX Helper » [转]AX2012基于角色的权限设计2-权限结构

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址