TC10权限解密.docx
《TC10权限解密.docx》由会员分享,可在线阅读,更多相关《TC10权限解密.docx(15页珍藏版)》请在冰豆网上搜索。
TC10权限解密
Teamcenter10权限
(AccessManager)解密
早就想好好写一写关于TC权限机制的文档了,由于我一直觉得它比较简单,没花时间来记录。
最近打算写一篇这样的文档来帮助一下初学者快速入门,迅速使用到项目上,让你迅速成为一名TC的权限配置高手。
Contents
1权限系统工作原理3
1.1权限树(AMTree)3
1.2一些基本概念4
1.2.1ACL4
1.2.2ACE5
1.2.3访问者和优先级5
1.2.4ACL作用条件6
1.3阅读权限树(权限树算法)6
2功能介绍7
2.1菜单7
2.2基本操作8
2.2.1创建(命名的)ACL8
2.2.2ACL关联到权限树分支8
2.2.3修改ACL本身的内容8
2.2.4修改ACL在权限树上的位置或移动、删除权限树分支9
2.2.5删除(命名的)ACL9
2.3调试权限树9
3权限实战12
3.1实战法则12
3.2实战案例13
3.2.1后决定技巧13
3.2.2如何看待对象权限和流程权限14
3.2.3企业层级权限实现方法14
3.2.4企业借阅流程15
3.2.5组管理员的妙用16
4权限奥秘16
1权限系统工作原理
如上所说,权限系统有两种。
一种是按规则的;另一种是对象权限。
但我要说的是从本质上来讲,只有一种统一的规则那就是“权限树”。
请各位记住,“权限树”是TC管理权限的唯一方法,一切从权限树开始。
1.1权限树(AMTree)
权限树是整个TC权限系统工作的基础,这样类似的系统是非常少见的,但事实证明这样的权限系统工作方式非常有效,降低了权限和对象之间的耦合关系。
作为计算机系毕业的同学一定知道数据库或操作系统文件系统的授权机制是怎么样的,它可以说是基于表或属性对象的,所以一旦表数量很多的情况下系统用来存储权限的容量将会比较大,而且最大的问题是没有一个明确的全局规则。
权限树的概念因此诞生。
它是一个全局的权限规则,OOTB情况下,你可以不做任何配置而使用TC,这点对于一个复杂的PLM系统是难能可贵的。
它能做到不与存储相关,不与文件夹相关,不与对象相关。
初识权限树:
infodba或者其他dba组的用户才能启动“访问管理器”
1.2一些基本概念
1.2.1ACL
补充概念:
“命名的ACL”听上去是不是很奇怪?
都是翻译惹的祸。
英文(NamedACL)中愿意是有名字的ACL。
个人觉得直接翻译成“ACL”不就成了,真有画蛇添足的味道。
它是AccessControlList的缩写,编辑界面如下:
TC内置的访问权限包括以下种类:
按顺序分别是:
查看、编辑、删除、更改对象权限、提升、退回、复制、更改所有权、发布、订阅、导出、导入、传出、传入、ICO分类、指派项目、移除项目、远程迁出、绕过管理、IP管理员、ITAR管理员、ITAR分类者、IP分类者、嵌入迁出、管理员ADA许可、翻译、批注、批量打印、数字签名、添加内容、删除内容、使数字签名失效
“更改对象权限”需要特殊说明一下,这是标示可以为对象赋予对象权限的一种权限。
和数据库中的Grant非常相似。
1.2.2ACE
ACL是多条ACE的集合,在一个ACL中你可以创建多条权限。
ACE是由两个要素组成的:
访问者和权限。
访问者比较复杂,下面单独说明。
而权限,有三种状态:
授权
无权
未决定
暂不决定,由其他ACE决定
1.2.3访问者和优先级
访问者种类很多,一旦创建ACE,各ACE会按一定的优先级排序,从而决定在一个ACL中的优先顺序。
优先级相同的ACE按添加顺序排序。
优先级又高到低排序如下:
两点特例:
默认情况下首选项TC_current_role=false。
RoleinGroup,RoleinOwningGroup,这两种访问者类型会合并来自本用户同组,不同角色下的所有权限,而非本会话角色中的权限。
如果TC_current_role=true,则权限仅限于本会话中的角色。
默认情况下首选项AM_PROJECT_MODE=false。
RoleinProject,RoleinProjectofObject这两种访问者类型会合并来自本用户所有项目的权限,而非本会话激活的项目中的权限。
1.2.4ACL作用条件
任何ACL都是在满足一定条件的基础上附加到权限树的某个分支上的。
这里的条件种类也是TC内置的,不能扩展。
但实际种类很多,够用了。
常用的有HasClass,HasType,HasGroup等等。
1.3阅读权限树(权限树算法)
权限树访问(优先)顺序,是深度遍历算法。
层次深的节点最优先被访问,从而这个节点上的ACL优先被判断是否采用。
当条件满足时即会被采用。
左边的数字表示了优先顺序,1,2由于没有子节点所以都是直接访问的。
15号节点是最大的一个树根,所以最后被访问。
其他顺序请自行推断吧。
在获取到各满足条件的ACL后,会把所有ACL按访问者优先顺序排列ACE组合陈哥一张大的ACL,也就是我们最后接触到(当然还会合并一些重复的):
在为某项目配置权限时,你需要反复配置和调试,请参考后续章节。
2功能介绍
TC在UI布局上很多时候是非常让人费解的,所以下面关悦功能和界面的内容需要仔细体会。
2.1菜单
文件-导入:
备份权限树到文件后,从文件恢复。
文件-导出:
备份权限树到文件。
编辑-向上:
向上移动选中的权限树分支。
便捷-向下:
向下移动选中的权限树分支。
查看-向下展看:
展开权限树的分支,效果和点开加号一样。
2.2基本操作
创建一个权限树分支的过程大致如下:
2.2.1创建(命名的)ACL
ACL的创建和关联权限树是两个独立的操作。
甚至你会发现只修改ACL的内容都不需要对权限树执行保存。
无论在何处创建的ACL都是全局可见的,他们像呆在一个池子里一样。
2.2.2ACL关联到权限树分支
确定好条件、找好分支你就可以把ACL和权限树关联。
点击添加按钮即可创建一个分支。
2.2.3修改ACL本身的内容
在ACL名称中选择你要修改的ACL,直接进行内容编辑。
最后记得要保存。
需要注意的是,所有ACL都是全局共享的。
如果ACL出现在权限树多个分支,只要你修改任一ACL都会修改其内容。
所以,有时候,你需要创建不同名称的ACL可能只是ACL的条目略微不同。
2.2.4修改ACL在权限树上的位置或移动、删除权限树分支
该操作执行后会引起权限树结构变更,所以需要保存权限树。
保存按钮和修改分支顺序按钮:
修改分支条件按钮和删除分支按钮
2.2.5删除(命名的)ACL
明确该ACL不会被分支用到再删除。
2.3调试权限树
选中某个对象,通过菜单:
查看本用户,对这个对象的操作权限:
点击此按钮可显示ACL
“显示所有条目”打勾可显示未合并前状态。
点击此按钮可显示权限在哪个分支上生效:
3权限实战
3.1实战法则
TC有帮助手册中有10条左右的最佳实践法则,然而我感觉下来比较重要的是以下三条:
1)修改前先备份权限树;
2)尽量不去直接关闭某权限,而采用“未决定”;
3)尽量不改动系统OOTB的权限树,只改动最后一个分支;
3.2实战案例
3.2.1后决定技巧
简单案例:
对于所有对象,如果获得了特别的状态如“保密归档(K4mP)”,需要关闭其对所有人的查看权限。
对于这种需求就需要在不影响全局的情况下添加分支,做法如下。
Vault是系统OOTB的ACL,内容如下:
我采取在Vault所在分支下新建条件分支的方法:
假设,此时对于此情况存在特例,如当属性K4mSeLv是0的时候,所有人可见。
该这么配置。
在第二层分支下,新建一个分支,实现该需求。
3.2.2如何看待对象权限和流程权限
整个权限规则都是按照权限树的优先顺序进行的。
一般情况下TC在访问任何一个对象时,都会通过权限服务获得这个对象的访问权限再决定如何反馈给用户。
对象权限,分支的位置比较靠后,所以要注意有可能在HasStaus()->Vault分支会提前关闭某些权限。
所以要让对象权限起作用,需要在上面的分支对访问权不做决定。
而拿到对象权限分支上进行恰当的关闭。
流程权限所处的位置是比较靠前的,所以在工作流中一般会开放足够的审批权限给流程中的参与者。
下面的借阅流程就是一个很好的例子。
3.2.3企业层级权限实现方法
用简单的示意图标示分级权限:
对于所说的共享权限,就是查看。
这种权限分级方式类似于电影中常见的场景,level高的门卡才能进去相应的门。
3.2.4企业借阅流程
借阅流程的主要作用是,当企业中某些涉及到保密权限比较高的对象版本无法被某些用户看到时,他们可以提出借阅。
一般分为两种实现方法:
发起人为借阅人;发起人为授权人。
以第一种方法为例进行介绍。
流程大致如下:
权限设置非常简单。
只要在进行借阅的节点上加上一个命名的ACL,让Approver有查看权限就行了。
3.2.5组管理员的妙用
每个小组(与用户直接关联的子组),都可设置组管理员。
组管理员可以把TC系统中的用户添加到该组中。
一旦某用户添加了新的角色自然可以获得这个角色该有的权限。
这样的用法,在某些时候可以拿来解决一些共享问题。
4权限奥秘
“权限树”是TC管理权限的唯一方法。
任何与权限相关的考虑都要从阅读权限树开始。
一旦你掌握了这把钥匙,你就能成为权限配置的高手。
这也是我编写本文的初衷。
所以,在有的项目上我甚至会做帮助文档上不推荐的事情。
比如修改系统OOTB的分支,记得有一次我曾经增加了一个根分支。
所以,一旦你了解了一个系统的运行原理之后就可以“为所欲为”了。
此说法不仅限于TC权限系统,时常会伴随在我工作和学习中,也就是我比很多人强的地方。