2017-02-08 5 views
0

같은 정책 (PolicySet) 내부의 두 번째 규칙을 확인하지 않습니다, 그리고 그들 각각에 대해 나는 다른 권한을FIWARE AuthZForce 내가 KeyRock에, 두 가지 역할을 만들었습니다

User1-> Role1-> Perm1을 연결 한) RES1에

User2-> Role2-> Perm2 RES2로 (액세스)에 저장 한 후

, 내가 AuthZforce의 파일 시스템은 3 개 정책을 가진 새 도메인을 참조하십시오.

첫 번째 정책은 cm9vdA /입니다. < Policy>, < 정책> 및 < 규칙 효과 = "허가"RuleId = "permit-all"/> 마지막 정책은 < 정책 집합>, 두 개의 < 정책> 및 두 규칙 permission) 도메인의 pdp.xml에는 마지막으로 생성 된 정책 (< policyRef> 331409a9-6014-4cfd-9180-f04bb22481f4 </policyRef>)을 대상으로하는 < policyRef>가 포함되어 있습니다.

다음은 정책의 xml 파일입니다.

사용자 1이 RES1에 (윌 PEP 대리)에 액세스하려고

<PolicySet xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicySetId="331409a9-6014-4cfd-9180-f04bb22481f4" Version="1.0" PolicyCombiningAlgId="urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:deny-unless-permit"> 
<Description>Policy Set for application 3829292cdc25477dace68f376ef79d8b</Description> 
<Target/> 
<Policy PolicyId="" Version="1.0" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-unless-permit"> 
    <Description>Role 9d2ebfde53044d2a8c22df3fe753b630 from application 3829292cdc25477dace68f376ef79d8b</Description> 
    <Target> 
     <AnyOf> 
      <AllOf> 
       <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> 
        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">3829292cdc25477dace68f376ef79d8b</AttributeValue> 
        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> 
       </Match> 
      </AllOf> 
     </AnyOf> 
    </Target> 
    <Rule RuleId="fe8f4ebb98054feeb26bfc01eb93cce1" Effect="Permit"> 
     <Description>res1</Description> 
     <Target> 
      <AnyOf> 
       <AllOf> 
        <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> 
         <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">res1</AttributeValue> 
         <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:thales:xacml:2.0:resource:sub-resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> 
        </Match> 
       </AllOf> 
      </AnyOf> 
      <AnyOf> 
       <AllOf> 
        <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> 
         <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">GET</AttributeValue> 
         <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> 
        </Match> 
       </AllOf> 
      </AnyOf> 
     </Target> 
     <Condition> 
      <Apply FunctionId="urn:oasis:names:tc:xacml:3.0:function:any-of"> 
       <Function FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-equal"/> 
       <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">9d2ebfde53044d2a8c22df3fe753b630</AttributeValue> 
       <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="urn:oasis:names:tc:xacml:2.0:subject:role" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/> 
      </Apply> 
     </Condition> 
    </Rule> 
</Policy> 
<Policy PolicyId="" Version="1.0" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-unless-permit"> 
    <Description>Role 729019b1a9d44380b8b74dc788053dde from application 3829292cdc25477dace68f376ef79d8b</Description> 
    <Target> 
     <AnyOf> 
      <AllOf> 
       <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> 
        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">3829292cdc25477dace68f376ef79d8b</AttributeValue> 
        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> 
       </Match> 
      </AllOf> 
     </AnyOf> 
    </Target> 
    <Rule RuleId="1d9bce94aaf04127b7ec8cfc63d17622" Effect="Permit"> 
     <Description>res2</Description> 
     <Target> 
      <AnyOf> 
       <AllOf> 
        <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> 
         <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">res2</AttributeValue> 
         <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:thales:xacml:2.0:resource:sub-resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> 
        </Match> 
       </AllOf> 
      </AnyOf> 
      <AnyOf> 
       <AllOf> 
        <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> 
         <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">GET</AttributeValue> 
         <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/> 
        </Match> 
       </AllOf> 
      </AnyOf> 
     </Target> 
     <Condition> 
      <Apply FunctionId="urn:oasis:names:tc:xacml:3.0:function:any-of"> 
       <Function FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-equal"/> 
       <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">729019b1a9d44380b8b74dc788053dde</AttributeValue> 
       <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="urn:oasis:names:tc:xacml:2.0:subject:role" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/> 
      </Apply> 
     </Condition> 
    </Rule> 
</Policy> 

는 매칭, 참 조건이 충족되어 결정이 "허가".

User1이 res2에 액세스하려고하면 ... 결정이 "거부"됩니다.

그러나 ....

사용자 2가 RES2 ... "거부"하는 의사 결정에 (윌마 PEP 프록시에 의해)에 액세스하려고

.

AuthZforce의 로그 파일을 보면 PolicySetId = "331409a9-6014-4cfd-9180-f04bb22481f4"가 올바르게 식별되었지만 첫 번째 규칙에서 검사가 중지됩니다. 실제로, 요청 된 자원 "res2"를 "res1"과 비교하고 일치하지 않기 때문에 거부합니다. 이 검사는 "res2"가있는 다음 규칙을 계속 평가하지 않으며 비교가 true 여야합니다.

어떤 것이 문제입니까?

협력에 감사드립니다.

답변

0

FIWARE issue SEC-1043에 따르면 KeyRock v5.4.1 및 AuthzForce Server v5.4.1로 업그레이드하면이 문제가 해결됩니다.