本文由@呆代待殆原创,转载请注明出处。

一、PolicySet的结构

PolicySet 的基本嵌套结构如上图所示,下面让我们一个一个来说明。

PolicySet:XACML策略架构的顶层元素,由PolicySetId、Version、PolicyCombiningAlgld、Target、Policy、ObligationExpressions、AdviceExpressions以及其他PolicySet组成

PolicySetId:PolicySet的唯一标识用来确保PAP和PDP没有两个相同的标识,相当于人的身份证号码。

Version:PolicySet的版本号

PolicyCombiningAlgld:PolicySet所采用的组合算法,policySet会包含多个policies或者PolicySets,所以有时候一个请求会返回多个结果(Permit,Deny,NotApplicable,Indeterminate)所以需要有能调和这种情况的机制,于是提 出了combining Algorithms,举一个常用的算法当例子。

Deny-overrides:

1, 如果有一个Deny出现,则最终结果为Deny。

2, 若上述不满足,若有一个Indeterminate{DP} 则最终为Indeterminate{DP}。

3, 若上述都不满足,若有一个Indeterminate{D},且其他都为Indeterminate{P}或Permit,则结果为Indeterminate{DP}。

4, 若上述都不满足,若有一个是Indeterminate{D},则结果为Indeterminate{D}。

5, 若上述都不满足,若有一个是Permit,则结果为Permit。

6, 若上述都不满足,若有一个是Indeterminate{P},这结果是Indeterminate{P}。

7, 若上述都不满足,则结果是NotApplicable。

ObligationExpressions与Advicexpressions:他们是可选的,可以是rule,policy或者policySet的组成部分,一个obligation是一个对PEP的指令,必须在access request被(拒绝/接受)之(前/后)被执行,用来执行一些额外的操作(如维护访问记录等),advice和obligation的唯一区别是advice可以被PEP忽略。

Target:定义了一组适用于PolicySet的request,当发来的request与target匹配时,说明PolicySet适用于request,Target可以由PolicySet的创建者声名也可以从policy元素用到的<Target>元素计算,包括4个基本元素,即资源(Resource)、主体(Subject)、动作(Actions)和环境(Environment)。

subject attributes:代表这个请求的发起者。

resource attributes:要访问的资源。

action attributes:要对资源执行的动作。

environment attribute:取决于可用的system sensor,可能包括系统时间、威胁等级threat level等等。

Policy:Policy元素是能提交PDP的最小实体,主要元素有PolicyId、Version、Target、Rule、ObligationExpressions、AdviceExpressions、CombinedDesicion。

PolicyId:Policy的Id。它是PAP的依赖确保PDP只可见一个持有相同Id的Policy。

Version:Policy的版本号。

RuleCombiningAlgld:规则组合算法,与PolicyCombiningAlgld类似理解即可。

Target:定义了一个Policy或一个决定请求集合的适用性。Target能够被Policy元素的构造者声明,也可能由被引用Rule元素中的target元素作交集或并集计算得到。

Rule:Rule元素应当定义在policy中的单个规则里。这个元素的主要组件分别是RuleId、Target、Condition、ObligationExpressions和AdviceExpressions以及Effect。

RuleId:验证所属规则的标识。

Effect:Rule被满足时返回的结果,可以取值Permit或者Deny。

Condition:Rule里需要被检验的断言。

标准定义如下,其中有些元素上面并没有提到:

二、request元素的结构

Request 元素的结构:主要包括ReturnPolicyIdList、CombinedDecision、Attributes

ReturnPolicyIdList:这个属性用于请求,PDP返回了一个完全可应用policy和policy set的列表,这些policy和policy set在决定中被用于作为一个决定回应。

CombinedDecision:这个属性提出通过PDP将多个决定合并成为一个单独决定的请求。

Attributes:通常有多个,用来表示请求属性的相关信息,一般包括subject、resource、action、environment或者其他access request。

标准定义如下,有些元素上面并没有提到:

本文参考:

[1] http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html#_Toc325047147

[2] Ferraiolo, David, Chandramouli, Ramaswamy, Kuhn, Rick, et al. Extensible Access Control Markup Language (XACML) and Next Generation Access Control (NGAC)[C]// ACM International Workshop on Attribute Based Access Control. ACM, 2016.

XACML-PolicySet与request结构简介的更多相关文章

  1. 老李分享:jvm结构简介 1

    老李分享:jvm结构简介     poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:9088214 ...

  2. Laravel 文件夹结构简介

    表 1.1:Laravel 文件夹结构简介 文件夹名称 简介 app 应用程序的业务逻辑代码存放文件夹 app/Console 存放自定义 Artisian 命令文件 app/Http/Control ...

  3. .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二)

    原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 先上项目解决方案图: 以上可以看出项目结构可以划分为4大块,1是surging的核心底层,2,3,4都可以 ...

  4. Intent 意图 结构 简介

    Intent简介 官方解释: An intent is an abstract description of an operation操作 to be performed展示.表演. It can b ...

  5. 6-MVC结构简介

    一.javeEE的项目结构层次:MVC1.Model:模型层(DAO+业务层) 2.View:视图层 jsp3.Control:控制层 servlet 二.分层的原则:1.层与层之间松耦合,层内保持高 ...

  6. Nodejs事件引擎libuv源码剖析之:请求(request)结构的设计剖析

    声明:本文为原创博文,转载请注明出处.         在libuv中,请求(request)代表一个用户向libuv发出的指令,比如uv_connect_s就表示一个tcp的连接请求.uv_work ...

  7. AngularJS结构简介

    AngularJS是MVC架构,M是C里面的属性-值,C是js的class,V是DOM 各个关键特性的结构如下图所示: http://my.oschina.net/tommyfok/blog/2970 ...

  8. Android 工程目录结构简介

    一般来说,一个Android工程的目录结构如下图所示. 1:src JAVA源代码都放在这里面. 2:gen 编译器自动生成的一些JAVA代码 3:Android 4.2 Android平台(本工程用 ...

  9. C++结构简介

    结构是一种比数组更灵活的数据格式,因为同一个结构可以储存多种类型的数据,这使得能够将篮球运动员的信息放在一个结构中,从而将数据的表示的合并到一起. 结构也是C++堡垒OOP(类)的基石.结构是用户定义 ...

随机推荐

  1. [Mac]Mac中显示资源库文件夹

    在 Mac OS X 10.7 Lion 之后的版本中 , 用户的个人目录内的资源库文件默认是隐藏状态. 这个设定可能是为了避免用户误操作. 但是对于中高级用户来说会有些不变. 通过如下方式可以找回被 ...

  2. mysql 字段操作

    1.添加字段 ALTER TABLE lucky_user ADD COLUMN id_type TINYINT NOT NULL DEFAULT '0' COMMENT "0: 普通用户, ...

  3. 关于WebPlayer Sandbox的小节

    不可以像其他build target一样读写I/O 不可以call一些private或者internal methord 只要在一个top level的domain下可以不需要xml dmain po ...

  4. 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息--3.4 Edit修改用户信息]

    3.4 Edit修改用户信息 我们用FormCollection简化了表单提交,非常方便的进行用户信息修改. [HttpPost, Authorize] public async Task<Ac ...

  5. (剑指Offer)面试题33:把数组排成最小的数

    题目: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 思路: 1.全 ...

  6. 从零开始学C++之虚函数与多态(一):虚函数表指针、虚析构函数、object slicing与虚函数

    一.多态 多态性是面向对象程序设计的重要特征之一. 多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为. 多态的实现: 函数重载 运算符重载 模板 虚函数 (1).静态绑定与动态绑 ...

  7. 更改SQL数据库的繁体数据为简体

    上一篇说到,公司需要把所有的系统逐步更改为简体,一些系统可以保持原先的繁体数据,而有一些系统应使用部门的要求,必须要更改为简体,由于程序很大,报表也多,修改程序转换显示的可能性不大,故所以打算把数据库 ...

  8. ENTBOOST 2014.180L 发布,开源企业IM免费企业即时通讯

    ENTBOOST,VERSION 2014.180 Linux版本发布,主要增加企业IM应用集成功能,完善安卓SDK功能及部分BUG修正: 7/1(明天)发布Windows版本,敬请关注! ENTBO ...

  9. Windows常用性能计数器总结

    基础监控: Processor:% Processor Time CPU当前利用率,百分比 Memory:Available MBytes 当前可用内存,兆字节(虚拟内存不需要监控,只有当物理内存不够 ...

  10. 微价值:专訪《甜心爱消除》个人开发人员Lee,日入千元!

    [导语]我们希望能够对一些个人开发人员进行专訪,这样大家更能显得接地气,看看人家做什么,怎么坚持.<甜心爱消除>作者Lee是三群的兄弟,也关注微价值.微价值的文章还是能够的,得到一些业内大 ...