2011-10-05 98 views
2

我对XACML(可扩展访问控制标记语言)非常陌生,我正在研究TSPM(它是使用XACML的商业产品)可以满足一些业务需求。XACML限制策略

所以我一直在寻找的答案,这个问题:

假设我有一个用户与特定应用程序配置文件访问3个链接网站的页面。 根据一些规则,是否可以创建一个限制和管理“链接”的策略(假设某个用户只能看到2个链接而不是3个)?

的主要问题是,我无法弄清楚的资源是在XACML断言什么,我只是一些文档中发现了这样的定义:

资源是什么,可以控制其访问。示例包括XQuery模块和Java方法。

任何人都可以通过实例XACML帮助您更好地理解?

谢谢大家!

+0

您可以查看本博客中解释的多样化规则示例,该示例将帮助您了解如何根据条件限制用户:http://pushpalankajaya.blogspot.in/2013/06/writing-xacml-30-policies -diverse-rules.html http://pushpalankajaya.blogspot.in/2013/06/xacml-30-policies-restricting.html – Utsav

回答

2

(我是TSPM的技术负责人,或者对不熟悉产品的其他人的Tivoli Security Policy Manager)。

您描述的用例绝对有可能。尽管您可能不需要专注于原始XACML,但我们需要付出很多努力为创作策略提供更高级别的用户界面。

对此进行建模的一种方法是在TSPM的用户界面中将每个链接表示为不同的结构点,并在每个链接上附加相应的策略。例如,两个链接的策略可以表示“随时允许所有用户”,一个链接可以在“当前时间在午夜之前”时允许“允许”。

然后,您将在呈现每个链接之前调用我们的运行时,以查看当前已通过身份验证的用户是否应该能够查看它。如果您愿意,也可以打一个电话来获取当前可查看链接的列表。

如果您在WebSphere上运行,则可以使用WebSphere Portal标记库或我们的授权API。如果你不是,那么为大多数平台构建一个Web服务客户端是非常容易的,这些平台可以使用基于SOAP的XACML调用授权服务。有关调用授权服务的更多信息,请参阅我们的public wiki

编辑:

我意识到我并没有真正解决您的问题,这是关于什么的资源是XACML的条款。如您所知,XACML将请求上下文分为四个部分:主题,资源,操作和环境。每个部分都包含零个或多个属性,每个属性都有一个标识符和一个类型。 XACML中的资源只是资源部分中的一个属性或属性组合,它们共同唯一标识您保护的任何内容。

该规范为此定义了标识符urn:oasis:names:tc:xacml:1.0:resource:resource-id,它可以是任何类型,但通常是字符串或URI。

在您的使用案例中,每个链接可能都有一个字符串标识符,如“link-1”,“link-2”和“link-3”。您的政策将使用这些标识符,并且您的应用程序会在请求决定每个链接时通过这些标识符。

+0

谢谢!说实话我对使用TSPM感兴趣,我问了xacml,因为我不确定是否有商业产品的答案。无论如何,我可以通过电子邮件给你发一些问题吗?如果你当然可以使用 – Kerby82

+0

是的,当然!我的电子邮件地址在我的档案中。 – craigforster

+0

抱歉,我没有在配置文件中找到您的电子邮件地址: - (... – Kerby82

0

在XACML中,您可以编写考虑到任何属性的策略。属性本质上是描述情况的标签。例如角色,公民身份,年龄和许可都是用户属性。页面URL,分类和位置是资源的属性(即用户试图访问的内容)。您可以拥有关于该操作的属性(编辑,查看,删除...),甚至是关于环境的属性。

在你的例子中,你提到你想要控制对网页的访问,并且你想要考虑一天的时间。要做到这一点,您需要编写一个XACML策略,您可以在其中检查页面的URL页面和一天的时间。

伪代码,这将是:

Permit if resource-id=='/pages/MyPage.jsp' AND current-time>09:00AM AND current-time<05:00PM 

在ALFA,用于XACML的速记符号,这将是:

namespace com.stackoverflow.xacml{ 
import Attributes.* 
policy accessPages{ 
    apply firstApplicable 
    rule accessPage1{ 
     target clause resourceId=="/pages/MyPage.jspx" 
       and currentTime>"09:00:00":time 
       and currentTime<"17:00:00":time 
     permit 
    } 
} 
} 

的ALFA的Eclipse插件 - 一个免费的工具 - 将产生这到XACML 3.0代码:

<?xml version="1.0" encoding="UTF-8"?> 
<!--This file was generated by the ALFA Plugin for Eclipse from Axiomatics AB (http://www.axiomatics.com). 
Any modification to this file will be lost upon recompilation of the source ALFA file--> 
<xacml3:Policy xmlns:xacml3="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" 
    PolicyId="http://axiomatics.com/alfa/identifier/com.stackoverflow.xacml.accessPages" 
    RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable" 
    Version="1.0"> 
    <xacml3:Description /> 
    <xacml3:PolicyDefaults> 
     <xacml3:XPathVersion>http://www.w3.org/TR/1999/REC-xpath-19991116</xacml3:XPathVersion> 
    </xacml3:PolicyDefaults> 
    <xacml3:Target /> 
    <xacml3:Rule 
      Effect="Permit" 
      RuleId="http://axiomatics.com/alfa/identifier/com.stackoverflow.xacml.accessPages.accessPage1"> 
     <xacml3:Description /> 
     <xacml3:Target> 
      <xacml3:AnyOf> 
       <xacml3:AllOf> 
        <xacml3:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> 
         <xacml3:AttributeValue 
          DataType="http://www.w3.org/2001/XMLSchema#string">/pages/MyPage.jspx</xacml3:AttributeValue> 
         <xacml3:AttributeDesignator 
          AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" 
          DataType="http://www.w3.org/2001/XMLSchema#string" 
          Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" 
          MustBePresent="false" 
         /> 
        </xacml3:Match> 
        <xacml3:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:time-less-than-or-equal"> 
         <xacml3:AttributeValue 
          DataType="http://www.w3.org/2001/XMLSchema#time">09:00:00</xacml3:AttributeValue> 
         <xacml3:AttributeDesignator 
          AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-time" 
          DataType="http://www.w3.org/2001/XMLSchema#time" 
          Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" 
          MustBePresent="false" 
         /> 
        </xacml3:Match> 
        <xacml3:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:time-greater-than-or-equal"> 
         <xacml3:AttributeValue 
          DataType="http://www.w3.org/2001/XMLSchema#time">17:00:00</xacml3:AttributeValue> 
         <xacml3:AttributeDesignator 
          AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-time" 
          DataType="http://www.w3.org/2001/XMLSchema#time" 
          Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" 
          MustBePresent="false" 
         /> 
        </xacml3:Match> 
       </xacml3:AllOf> 
      </xacml3:AnyOf> 
     </xacml3:Target> 
    </xacml3:Rule> 
</xacml3:Policy> 

然后,所有你需要做的是发送正确的授权任务离开/请求从您的应用程序到XACML PDP。基本上你会问的是:

Can user Alice access page /pages/MyPage.jsp? 

然后,PDP将答复许可证,拒绝或不适用。