访问控制之9种元素
anycmd是个权限引擎:
使用者初始化这个引擎的状态,然后往这个引擎中输入一个运动的标识它会回答是否允许这个运动发生:允许、不允许、我异常了(权限引擎异常了)。
如何标识一个运动?有这么几个要素:1 谁发起的这'个'运动,2 这'种'运动的‘种’标识。3 这个运动的实参列表。
所谓运动,其实就是一个过程,其实就是一个计算。
其实就是一个输入和输出。其实就是对象的方法啦,没什么高深的
他使用“运动”这个概念,而不使用更具体的概念是想表明,它是设计用来控制任何运动的。
比如3D打印机的打印运动,不停的运动,系统不停的采样,不停的改变权限引擎的状态,然后终于发现用户99%是在试图打印一把枪!
枪有它的核心模型,无论你怎么伪装,打印出来的枪都是使用同样的物理定律去发射子弹的,它的那个核心模型是一样的,anycmd就是要采样识别出他们的伪装从而在这个运动完成之前终止它!
在运动完成之前总是有办法终止这个运动。计算机指挥3D打印机打印的运动过程只是它的父过程的子过程,还有打印后从3D打印机中取结果的过程啊,没有权限就让你取不出。
anycmd明白rbac处在acl和安全策略语言中间的意义和重要性,anycmd明白人们花费集体智慧人力指定出标准的意义和重要性。anycmd致力于让高高在上的国家标准、国际标准发挥价值。
anycmd定义了可以任意两两组合的9中AC元素:Account 、Organization、Role、Group、Function、Menu、AppSystem、ResourceType、Privilege(暂不支持,该取值的存在是为了概念完整性。组成授权路由链表。如同面向对象机制中类的“继承”)。
发现有很多概念相互交叉甚至能够相互替代。比如Group被定义为‘资源组’,复杂的Group中放置的可以是不止一种类型的资源对于这种组改称‘手工仓库’,而组中只放置了一种资源的组称‘简单组’。按照这种思路理解的话Role其实也是一种组,Role这种组中放置了两种资源:Account和Privilege。工作组也是组,工作组中放置的也是两种资源:Account和Role。
anycmd中有9中ac元素,为什么这么多种元素?这不是我抽象出来的,而是观察现在的世界观察出来的。人们抽象出这些元素是为了帮助简化复杂的问题,这9种ac元素是站在一个更低的抽象层次来观察的,而在高一级的抽象层次看ac只有三种元素:主体、资源、运动
组织结构是对资源的单元划分,组织结构节点是边界,每一个边界绑定的角色应该只在当前用户进入这个边界后激活离开这个边界后收回,从而不能将从一个边界内得到的角色带出这个边界去操作其他边界内的资源。
计划从11个维度去考量到来的每一条命令('到来'不是说要跨进程跨网络什么的,到来可以理解为调用,就像调用一个对象的方法)。11个维度的叫法是不是正确我也不知道,11个维度的本意是想要提取出11个基本变量,控制权限就是从这11个变量出发去控制。
但是现在发现这11个变量不一定都是完全正交的,应该去除若干个。应该会随着目标数据的被一步步定位而一步步降维。
11个维度到达具体的数据单元格的时候可能只剩下两三个维度了,设计为终极降到为两维,因为我感觉如果将级为只有一维的话世界失去了意义。
[该贴被anycmd于2014-10-15 17:09修改过]