写点什么

XACML 终有出头天?

  • 2007-07-04
  • 本文字数:1459 字

    阅读完需:约 5 分钟

XACML ,即可扩展访问控制标记语言(eXtensible Access Control Markup Language),是一份 Oasis 两年多前通过的标准,在上周的 Burton’s Catalyst Conference 会议上演示了 XACML 如何跨厂商平台工作。 XACML 标准提供了一种(标记)语言,用来定义访问授权的决策规则和用于策略决策交换的请求 / 响应协议。XACML 定义了 4 个主要实体:

  • PAP——策略管理点(Policy Administration Point)——基本上是一个存放策略的仓库。
  • PIP——策略信息点(Policy Information Point)——目录或者其他身份证明(identity)的供应者。PIP 可提供被访问的资源的属性,以及试图访问该资源的实体(身份证明)。
  • PDP——策略决策点(Policy Decision Point)——这个组件负责对访问授权的决策。PDP 使用从 PAP 获得的策略以及从 PIP 获得的附加信息来进行决策。
  • PEP——策略实施点(Policy Enforcement Point)——这个组件负责接收对授权的请求。PEP 向 PDP 发送 XAXML 请求,然后根据 PDP 的决策来行动。

要说明的是,XACML 并不是完全独立的。XACML 定义了实现请求 / 响应所必需的消息内容,但没有定义消息交换方面的协议和传输机制。这个问题要用到另一个 Oasis 标准,名为 SAML(Security Assertions Markup Language)。概括来说,XACML 提供了一种确定对资源的访问权限的方法,而 SAML 则提供了一种安全地交换这些信息的方法。

互操作性的之所以重要,不单是因为在一家具有相当规模的企业里几乎不可能存在均一的环境,而且就算你能找到这样的企业,当需要与其他企业合作的时候,你仍然要面对异质环境的问题。

这次互操作演示包括 8 家厂商:BEA、IBM、JBoss/Red Hat、Oracle、CA、Jericho Systems、SymLabs 和 Securent。厂商们演示了几个安全方面的互操作场景, JBoss 的 Anil Saldhana 对此作了描述:

用例: 授权决策
======================== 在授权决策互操作演示中,由 */Vendor A/* (*/PEP-A/*) 的 */PEP/* 产生的 XACML 2.0 授权决策请求,将被 */Vendor B /*(*/PDP-B/*) 的 */PDP/* 正确解读,其中 Vendor A 和 Vendor B 可为参与互操作的任意厂商。

场景一:授权决策:客户访问

客户从浏览器中提交用户名和密码。在身份认证之后,PEP 将客户的用户名用户 Id 和“ViewAccount”操作,在 CustomerAccount Web 应用程序的上下文中打包成 XACML 请求,然后交给 PDP 解读。在此事件中,PDP 可来自不同厂商。场景二:授权决策:客户事务

客户试图购买 500 股 XYZ 股票。PEP 收集此事务的相关信息(举例来说,“Buy”操作和股票数量“500”),然后和其他上下文中的信息一起,打包成 XACML 请求交给 PDP 解读。在此事件中,PDP 可来自不同厂商。场景三:授权决策:客户经理访问

客户经理需要批准请求。PEP 收集关于客户经理的信息,交给 PDP 来处理客户经理的访问。场景四:授权决策:账户经理批准

客户经理需要批准股票购买。PEP 收集关于客户经理的批准的信息,然后询问 PDP 是否允许此批准通过。用例:策略交换

===================
由一家厂商产生的 XACML 策略可被其他厂商的 PDP 访问和使用。

James McGovern 提出了互操作性的另一个方面,事实上 JBoss 也做到了这个方面:

Anil Saldhana 认为 JBoss XACML 2.0 的发布是一件大事。这可能是给 Alfresco 的 John Newton、Intalio 的 Ismael Ghalimi 以及 Liferay 的 Brian Chan 的一个机会,让他们能够非常容易地在他们的产品中加入 XACML 支持,把他们的闭源竞争者们打倒在地。

无论如何,即便用了超过两年时间,看到这个标准终于成熟仍然是一件令人高兴的事,特别是在上面提到的那些用例并不罕见的情况下。

2007-07-04 09:302119
用户头像

发布了 225 篇内容, 共 63.6 次阅读, 收获喜欢 50 次。

关注

评论

发布
暂无评论
发现更多内容

苹果发布会分享思考:重新定义 AI 交互体验

inBuilder低代码平台

开源 用户体验

京东商品详情API的调用流程与步骤

技术冰糖葫芦

API 文档 API 测试 API 优先

使用pytest.ini 文件配置默认参数

测吧(北京)科技有限公司

测试

一文探究传统数据仓库、数据湖与 Data Fabric(数据编织)的差异

Aloudata

数据仓库 数据湖 ETL Data Fabric

管道应用、消息收发与FIFO:先进先出

测吧(北京)科技有限公司

测试

缓存失效下的熔断和降级以及测试方法

测吧(北京)科技有限公司

测试

GitHub星标4000!清华大牛的CTF竞赛入门指南,真的太香了!

我再BUG界嘎嘎乱杀

网络安全 信息安全 CTF 竞赛 网安

新手程序员要知道的小技巧,赶紧收藏码住!

高端章鱼哥

LIFO(后进先出)、函数调用堆与栈的区别

测吧(北京)科技有限公司

测试

redis 的数据同步策略以及数据一致性保证

测吧(北京)科技有限公司

测试

Docker镜像构建:技术深度解析与实践指南

EquatorCoco

Docker 容器 镜像

技术团队的福音:7大顶尖Bug记录工具评测

爱吃小舅的鱼

缺陷管理 bug管理 bug管理工具 缺陷管理工具

自写Json转换工具

不在线第一只蜗牛

json

Pytest中autouse参数的用法

测吧(北京)科技有限公司

测试

Pytest-ordering自定义测试用例执行顺序

测吧(北京)科技有限公司

测试

算法性能评估:时间复杂度与空间复杂度的全面解析

测吧(北京)科技有限公司

测试

Spring AOP概念及原理

EquatorCoco

Java spring 后端 静态代理

2024-07-31:用go语言,给定两个正整数数组arr1和arr2,我们要找到属于arr1的整数x和属于arr2的整数y组成的所有数对(x, y)中,具有最长公共前缀的长度。 公共前缀是指两个数的

福大大架构师每日一题

福大大架构师每日一题

Go-Zero实战:抽奖算法的设计与实现

王中阳Go

go-zero

通过Fixture实现参数化测试

测吧(北京)科技有限公司

测试

Pytest 插件的种类

测吧(北京)科技有限公司

测试

经典排序算法:冒泡排序与选择排序

测吧(北京)科技有限公司

测试

Redis哨兵模式的设计架构及其机制

测吧(北京)科技有限公司

测试

认证!云起无垠成为人工智能产业发展联盟AIIA成员单位

云起无垠

详解HTTP代理与SOCKS代理之间的差异

IPIDEA全球HTTP

XACML终有出头天?_SOA_Arnon Rotem-Gal-Oz_InfoQ精选文章