了解如何根据规则评估XACML 3.0属性值

时间:2019-09-12 07:58:08

标签: authorization xacml abac xacml3 alfa

我正在通过阅读OASIS标准文档(2013年1月22日版本)来学习XACML 3.0。

第一个示例策略(第4.1.1节)非常简单易懂:必须对请求的Name-match属性(以RFC822名称的形式)执行subject-id函数:if提交的名称与规则的AttributeValue属性的值匹配,PDP的值为Permit

<?xml version="1.0" encoding="UTF-8"?>
<Policy 
    xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd"
    PolicyId="urn:oasis:names:tc:xacml:3.0:example:SimplePolicy1" 
    Version="1.0"
    RuleCombiningAlgId="identifier:rule-combining-algorithm:deny-overrides">
    <Description>
        Medi Corp access control policy
    </Description>
    <Target/>
    <Rule 
        RuleId= "urn:oasis:names:tc:xacml:3.0:example:SimpleRule1"
        Effect="Permit">
        <Description>
            Any subject with an e-mail name in the med.example.com domain 
            can perform any action on any resource. 
        </Description>
        <Target>
            <AnyOf>
                <AllOf>
                    <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:rfc822Name-match">
                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">
                            med.example.com
                        </AttributeValue>
                        <AttributeDesignator 
                            MustBePresent="false"
                            Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-688 subject"
                            AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
                            DataType="urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name"/>
                    </Match>
                </AllOf>
            </AnyOf>
        </Target>
    </Rule>
</Policy>

然后,文档继续显示加总到PDP的虚拟决策请求(正确格式化为请求上下文)。这也非常简单:subject-id是bs@simpsons.com的使用者正在尝试对文件系统资源执行read操作:

<?xml version="1.0" encoding="UTF-8"?>
<Request 
    xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd"
    ReturnPolicyIdList="false">
    <Attributes 
        Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-757 subject">
        <Attribute
            IncludeInResult="false"
            AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id">
            <AttributeValue DataType="urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name">
                bs@simpsons.com
            </AttributeValue>
        </Attribute>
    </Attributes>
    <Attributes
        Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
        <Attribute 
            IncludeInResult="false"
            AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id">
            <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">
                file://example/med/record/patient/BartSimpson
            </AttributeValue>
        </Attribute>
    </Attributes>
    <Attributes
        Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action">
        <Attribute
            IncludeInResult="false"
            AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id">
            <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">
                read
            </AttributeValue>
        </Attribute>
    </Attributes>
</Request>

现在,这是我不了解的部分:文档中显示(行号805至807)

  

PDP现在将请求上下文中的属性与该策略中一个规则的目标进行比较。请求的资源匹配<Target>元素,请求的 action 匹配<Target>元素,但是请求的subject-id属性不匹配“ med .example.com”。

确定subject-id不匹配,但是如果未在规则中指定资源和操作,该如何匹配?也许它们的缺失以某种方式被丢弃并且不适用于目标,但是该文档说它们 match ,这是一个标准文档,每个单词的确切含义(如果具有最重要的意义)。我什么都没找到,对我来说,这很重要,因为我正在尝试构建自己的XACML3.0兼容系统作为副项目。

我想念什么?

谢谢!

0 个答案:

没有答案