我们正在研究Keyrock + Wilma + AuthZForce,以保护运行Orion和Quantum Leap的FIWARE系统。我们系统中的实体位于服务和服务路径下。可通过适当的标题(即Fiware-Service和Fiware-Servicepath)访问这些文件。
我正在尝试为AuthZForce创建XACML规则,该规则将包括服务和服务路径,但尚未成功。如果有人能够这样做,我将不胜感激。另外,如果这种方法是错误的,我将对如何将服务和服务路径与FIWARE访问控制配合使用提出其他建议。
答案 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发出请求时仅将以下值传递给现成的值:
如您所见,默认未传递任何标题信息。
包括关于FIWARE标头的信息。您将不得不更改文件以从发送到PEP代理的请求中读取标头,并将与请求一起发送的另一个属性添加到Authzforce。在Administrating-XACML Tutorial
中可以找到这种自定义请求的简单示例。安全人员只能在上午9点之前或下午5点之后敲响警钟,但查理可以随时敲响警钟
在tutorial codebase中可以找到用于向Authzforce发送请求的自定义代码-请求中包括了查理的用户名。