2

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

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

4

1 回答 1

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 代理 代码在向 Authzforce 发出请求时,只会传递以下现成的值:

  • 角色
  • 行动
  • 资源网址
  • 应用程序 ID

如您所见,默认情况下不传递任何标题信息。

包括有关 FIWARE 标头的信息。您将不得不更改文件以从发送到 PEP 代理的请求中读取标头,并添加与请求一起发送到 Authzforce 的另一个属性。可以在Administrating-XACML 教程中找到此类自定义请求的更简单示例

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

可以在教程代码库中找到向 Authzforce 发送请求的自定义代码- 请求中包含 Charlie 的用户名。

于 2019-02-15T19:44:35.187 回答