XACML规则中如何使用Fiware服务和服务路径?

时间:2019-02-13 14:19:47

标签: fiware authzforce

我们正在研究Keyrock + Wilma + AuthZForce,以保护运行Orion和Quantum Leap的FIWARE系统。我们系统中的实体位于服务和服务路径下。可通过适当的标题(即Fiware-Service和Fiware-Servicepath)访问这些文件。

我正在尝试为AuthZForce创建XACML规则,该规则将包括服务和服务路径,但尚未成功。如果有人能够这样做,我将不胜感激。另外,如果这种方法是错误的,我将对如何将服务和服务路径与FIWARE访问控制配合使用提出其他建议。

1 个答案:

答案 0 :(得分:2)

使用FIWARE标头进行交易对于 Authzforce 而言不是问题,这不是 PEP代理的默认行为。

Authzforce 是完全通用的PDP,如果您提供正确的XACML策略集并发送适当的数据,它将为您裁定。 <Rule>

之后,以下permit/v2/entities全部访问fiware-header = "smartgondor"
<?xml version="1.0" encoding="UTF-8"?>
<Rule RuleId="ccxsx-xs-xsx-xsxs-xs" Effect="Permit">
   <Description>Context Broker Access with Header=SmartGondor</Description>
   <Target>
      <AnyOf>
         <AllOf>
            <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-starts-with">
               <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/v2/entities</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">smartgondor</AttributeValue>
               <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="fiware-header" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
            </Match>
         </AllOf>
      </AnyOf>
   </Target>
</Rule>

不幸的是,默认情况下, PEP代理 code在向Authzforce发出请求时仅将以下值传递给现成的值:

  • 角色
  • 动作
  • resourceURL
  • appId

如您所见,默认未传递任何标题信息。

包括关于FIWARE标头的信息。您将不得不更改文件以从发送到PEP代理的请求中读取标头,并将与请求一起发送的另一个属性添加到Authzforce。在Administrating-XACML Tutorial

中可以找到这种自定义请求的简单示例。
  

安全人员只能在上午9点之前或下午5点之后敲响警钟,但查理可以随时敲响警钟

tutorial codebase中可以找到用于向Authzforce发送请求的自定义代码-请求中包括了查理的用户名。