首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XACML限制策略

XACML限制策略
EN

Stack Overflow用户
提问于 2011-10-05 22:50:56
回答 2查看 665关注 0票数 2

我对XACML (eXtensible访问控制标记语言)非常陌生,我正在研究TSPM (它是一种使用XACML的商业产品)能做些什么来满足一些业务需求。

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

让我们假设我有一个网站页面,其中有3个链接,用户使用某个应用程序配置文件访问。有没有可能根据某些规则创建一个策略来限制和管理“链接”(假设某个配置文件用户在午夜之前只能看到2个链接,而不是3个)?

主要的问题是我不能弄清楚XACML断言中的资源是什么,我只是在一些文档中找到了这个定义:

资源是可以控制访问的任何东西。示例包括XQuery模块和Java方法。

有没有人可以帮助我们更好地理解XACML的真实例子?

谢谢大家!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-06 05:15:44

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

您所描述的用例绝对是可能的。不过,您可能不需要关注原始的XACML -我们做了很多工作来为创作策略提供更高级别的用户界面。

对此建模的一种方法是让每个链接在TSPM的UI中由不同的结构点表示,并为每个链接附加适当的策略。例如,两个链接可能具有表示“允许所有用户在任何时间使用”的策略,而一个链接可能具有“当当前时间在午夜之前时允许”。

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

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

编辑:

我意识到我并没有真正回答您的问题,即从XACML的角度来看,什么是资源。您可能知道,XACML将请求上下文分为四个部分:主题、资源、操作和环境。这些部分中的每个部分都包含零个或多个属性,每个属性都有一个标识符和一个类型。XACML中的资源只是resource部分中的一个属性或属性的组合,它们共同唯一地标识您正在保护的任何内容。

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

在您的用例中,每个链接可能有一个字符串标识符,如" link -1“、"link-2”和"link-3“。您的策略将使用这些标识符,并且您的应用程序将在请求每个链接的决策时传入这些标识符。

票数 2
EN

Stack Overflow用户

发布于 2013-01-08 17:03:01

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

在您的示例中,您提到要控制对网页的访问,并且要考虑一天中的时间。为此,您需要编写一个XACML策略,检查页面的URL页面和当天的时间。

在伪代码中,这将是:

代码语言:javascript
复制
Permit if resource-id=='/pages/MyPage.jsp' AND current-time>09:00AM AND current-time<05:00PM

在ALFA中,XACML的简写表示法是:

代码语言:javascript
复制
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
    }
}
}

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

代码语言:javascript
复制
<?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。本质上,你会问的是:

代码语言:javascript
复制
Can user Alice access page /pages/MyPage.jsp?

然后,PDP将使用Permit、Deny或NotApplicable中的任何一个进行应答。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7663255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档