XACML阅读资源

时间:2019-10-09 19:47:51

标签: xacml

我正在尝试制定一条规则,允许仅在为每个用户读取操作时才可以访问任何资源。我不确定是否需要在这里放置任何这样的用户

<Rule Effect="Permit" RuleId="Rule Permit #1">
    <Target>
        <AnyOf>
            <AllOf>
                <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
                    <AttributeValue 
                        DataType="http://www.w3.org/2001/XMLSchema#string">any
                    </AttributeValue>
                    <AttributeDesignator 
                        AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" 
                        Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" 
                        DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true">
                    </AttributeDesignator>
                </Match>

然后是动作

 <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
                    <AttributeValue 
                         DataType="http://www.w3.org/2001/XMLSchema#string">read
                    </AttributeValue>
                    <AttributeDesignator 
                        AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" 
                        Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" 
                        DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"></AttributeDesignator>
                </Match>

或者也许我可以删除第一部分并直接放置动作,因为资源是任意的。

谢谢!

1 个答案:

答案 0 :(得分:0)

您只需要匹配操作:

<Rule Effect="Permit" RuleId="Rule Permit #1">
  <Target>
    <AnyOf>
        <AllOf>
            <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
                <AttributeValue 
                  DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
                <AttributeDesignator 
                  AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"  
                  Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" 
                  DataType="http://www.w3.org/2001/XMLSchema#string" 
                  MustBePresent="true" />
            </Match>
        </AllOf>
    </AnyOf>
  </Target>
</Rule>

在这种情况下,当且仅当action-id等于“ read”时,规则评估为“允许”,与用户或资源属性无关,换句话说:针对任何用户或资源。请注意,最终决定取决于封装策略上的规则组合算法(如果有的话,还可能取决于PolicySet上的策略组合算法)。如果您有所不同,则说明XACML实现存在问题。