XACML 规则中如何使用 Fiware 服务和服务路径?
Posted
技术标签:
【中文标题】XACML 规则中如何使用 Fiware 服务和服务路径?【英文标题】:How can Fiware services and service paths be used in XACML rules? 【发布时间】:2019-02-13 14:19:47 【问题描述】:我们正在研究 Keyrock + Wilma + AuthZForce 以保护我们运行 Orion 和 Quantum Leap 的 FIWARE 系统。我们系统中的实体在服务和服务路径下。这些通过适当的标头访问,即 Fiware-Service 和 Fiware-Servicepath。
我正在尝试为 AuthZForce 创建包含服务和服务路径的 XACML 规则,但尚未成功。如果有人能够这样做,我将不胜感激。此外,如果这种方法是错误的,我将不胜感激有关如何将服务和服务路径与 FIWARE 访问控制一起使用的其他建议。
【问题讨论】:
您能否给出一个您尝试过但对您不起作用的 XACML 规则?只是有一些开始。 @CyrilDangerville:非常感谢您的评论!我刚刚开始使用 AuthZForce,一直在使用基于 FIWARE“保护微服务”教程 (fiware-tutorials.readthedocs.io/en/latest/pep-proxy/index.html) 的 PEP 代理背后的 Orion 系统。我使用的 XACML 策略和请求来自“基于规则集的权限”教程 (fiware-tutorials.readthedocs.io/en/latest/xacml-access-rules/…)。我曾尝试使用 WSO2 Identity Server 中的 Policy Editors 编辑策略,但这些实验太尴尬了,无法在此处发布。 :-) 【参考方案1】:处理 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 发出请求时,只会传递以下现成的值:
角色 动作 资源网址 appId如您所见,默认没有传递任何标题信息。
包含有关 FIWARE 标头的信息。您将不得不更改文件以从发送到 PEP 代理的请求中读取标头,并添加与请求一起发送到 Authzforce 的另一个属性。可以在Administrating-XACML Tutorial
中找到此类自定义请求的更简单示例安保人员只能在上午 9 点之前或下午 5 点之后敲响警铃,但查理可以随时敲响警钟
向 Authzforce 发送请求的自定义代码可在 tutorial codebase 中找到 - 请求中包含 Charlie 的用户名。
【讨论】:
以上是关于XACML 规则中如何使用 Fiware 服务和服务路径?的主要内容,如果未能解决你的问题,请参考以下文章
即使策略规则中缺少该属性,具有附加属性的 XACML 3.0 请求也匹配
监控 Orion Context Broker 以创建新的 XACML 规则
Fiware - 如何集成 Keyrock IdM、Wilma PEP 代理和 Orion Context Broker?